Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Idea: value distributor that aims to solve/reject a propagator #93

Open
pvdz opened this issue Jun 29, 2016 · 0 comments
Open

Idea: value distributor that aims to solve/reject a propagator #93

pvdz opened this issue Jun 29, 2016 · 0 comments

Comments

@pvdz
Copy link
Contributor

pvdz commented Jun 29, 2016

Barring some very explicit value propagators like markov and list, the other distribution strategies are only guided by metrics that are not likely to be of any semantic relevance, like min, max, and middle.

What if we had a propagator that examined the propagators that a var affects and then tries to pick a var that leads to either a quick solve or quick reject rather than an arbitrary value? For example, consider gt([3, 100], [0, 3]) (and ignore the fact that it will be eliminated at compile time); if a value distributor would pick 100 as a value it would make the propagator pass, sure. But if it would pick 3 it would make the propagator fail and any further search nodes would eliminate the propagator permanently without having to check the other 96 values first.

  • The analysis could be costly, perhaps only certain constraints are feasible
  • Just because you can eliminate propagators this way doesn't mean the whole thing runs faster. If in the example 100 would lead to a solution then picking 100 first would be faster than picking 3 first (and failing).
  • It would probably be helpful to be able to invalidate as many propagators with a choice. Unfortunately it will be rather expensive to find this most efficient candidate efficiently.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant