You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The main idea of solving domains is to reduce them as fast as possible. Often one step of the search affects only one or two constraints, especially after the first couple of nodes. We should add a var distributor that picks its next var based on how many constraints it affects. The more constraints are affected by a choice, the higher the number of changes should (or at least could) be in the same search node.
The list of constraints per var is already generated
Runtime can still be tricky since we don't want to maintain an active list of constraints per var per search node.
Maybe this count is static throughout the search as long as the variable is unsolved?
Propagators can solve before its operand variables solve, like lt is solved when the max of the left var is lower than the min of the right var (since there are no values that could falsify left<right).
There's no guarantee that directing the search based on this distribution actually means finding a solution faster. If the key to a solution is only affected by one propagator, which may have been picked quickly before, it may now take a much longer time as it's suddenly the last one to be evaluated. But this is always a potential problem.
Many test cases rely on a particular search order. Changing them would mean a lot of updates in the tests.
The text was updated successfully, but these errors were encountered:
The main idea of solving domains is to reduce them as fast as possible. Often one step of the search affects only one or two constraints, especially after the first couple of nodes. We should add a var distributor that picks its next var based on how many constraints it affects. The more constraints are affected by a choice, the higher the number of changes should (or at least could) be in the same search node.
lt
is solved when the max of the left var is lower than the min of the right var (since there are no values that could falsifyleft<right
).The text was updated successfully, but these errors were encountered: