[pypy-svn] r24482 - pypy/dist/pypy/lib/logic/computation_space
auc at codespeak.net
auc at codespeak.net
Thu Mar 16 17:06:50 CET 2006
Author: auc
Date: Thu Mar 16 17:06:48 2006
New Revision: 24482
Removed:
pypy/dist/pypy/lib/logic/computation_space/event.py
Modified:
pypy/dist/pypy/lib/logic/computation_space/computationspace.py
pypy/dist/pypy/lib/logic/computation_space/distributor.py
Log:
killed events
Modified: pypy/dist/pypy/lib/logic/computation_space/computationspace.py
==============================================================================
--- pypy/dist/pypy/lib/logic/computation_space/computationspace.py (original)
+++ pypy/dist/pypy/lib/logic/computation_space/computationspace.py Thu Mar 16 17:06:48 2006
@@ -8,7 +8,6 @@
from constraint import FiniteDomain, ConsistencyFailure, \
Expression
from distributor import DefaultDistributor
-import event # NewSpace, Clone, Revise
Failed = 0
Succeeded = 1
@@ -163,9 +162,6 @@
return True
return False
- def _notify(self, event):
- self.event_set.add(event)
-
#-- space official API ------------------------------------
def ask(self):
@@ -178,7 +174,6 @@
def clone(self):
spc = ComputationSpace(NoProblem, parent=self)
print "-- cloning %s to %s --" % (self.id, spc.id)
- self._notify(event.Clone)
spc._propagate()
return spc
@@ -220,8 +215,9 @@
def inject(self, restricting_problem):
"""add additional entities into a space"""
restricting_problem(self)
- self._notify(event.Clone)
self._propagate()
+
+
#-- Constraint Store ---------------------------------------
@@ -308,7 +304,7 @@
def _add_const(self, constraint):
self.constraints.add(constraint)
- self._notify(event.Inject(constraint))
+ self.event_set.add(constraint)
for var in constraint.affected_variables():
self.var_const_map.setdefault(var, set())
self.var_const_map[var].add(constraint)
@@ -336,23 +332,11 @@
#-- Constraint propagation ---------------
- def _init_constraint_queue(self):
- cqueue = []
- init_const_set = set()
- for ev in self.event_set:
- if isinstance(ev, event.Revise):
- for const in self.var_const_map[ev.var]:
- init_const_set.add(const)
- elif isinstance(ev, event.Inject):
- init_const_set.add(ev.constraint)
-
- cqueue = [(const.estimate_cost(), const)
- for const in init_const_set]
- return cqueue
-
def satisfy_all(self):
"""really PROPAGATE from AC3"""
- const_q = self._init_constraint_queue()
+ const_q = [(const.estimate_cost(), const)
+ for const in self.event_set]
+ self.event_set = set()
assert const_q != []
const_q.sort()
affected_constraints = set()
Modified: pypy/dist/pypy/lib/logic/computation_space/distributor.py
==============================================================================
--- pypy/dist/pypy/lib/logic/computation_space/distributor.py (original)
+++ pypy/dist/pypy/lib/logic/computation_space/distributor.py Thu Mar 16 17:06:48 2006
@@ -1,5 +1,4 @@
import math, random
-from event import Revise
def arrange_domains(cs, variables):
"""build a data structure from var to dom
@@ -139,7 +138,8 @@
int(math.floor((choice + 1) * nb_elts)))
self.cs.dom(variable).remove_values(values[:start])
self.cs.dom(variable).remove_values(values[end:])
- self.cs._notify(Revise(variable))
+ for const in self.cs.dependant_constraints(variable):
+ self.cs.event_set.add(const)
class DichotomyDistributor(SplitDistributor):
More information about the Pypy-commit
mailing list