-
Notifications
You must be signed in to change notification settings - Fork 19
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
Questions/Suggestions #8
Comments
Sounds interesting, if the problem could be encoded at a higher level efficiently that would be sweet. I'm not sure that a more numerical perspective will help all that much. For your grid coordinate example, if a region of the balancer has been proven that it is or isn't something. To apply this result to other areas of the balancer the solver would need to consider how the position in the balancer has affected the region (e.g. if the region is at the top, then belts can't go up). No global translational symmetry. The interchange problem might be a good benchmark to use. If you can get some reasonable performance, then I'll definitely switch over. |
The interchange problem, where is that encoded? Are you talking about clauses added by |
What is the memory footprint of the interchange problem associated with N=8 (like in your picture)? Are we talking about more than a gigabyte? Edit: is there documentation on how to generate a picture based on the solver output? |
I've provided a table of values below (options used are
Without any optimisation tricks.
As for generating gifs, pipe the output into |
I'd have to look at the internals of The runs with my initial encoding are much worse than the performance you posted. I haven't taken all measures in optimizing yet, but the prospect is not hopeful at this moment. I'm mentioning this specifically because I don't think I will be able to give an update improving my performance soon. So this issue may be dormant for a while. |
Hi,
I read a little through the code and it seems like you're translating everything into CNF, which means you're potentially not using some of the more cutting edge solving techniques.
There are alternative approaches where, instead of writing a script in e.g., Python to generate clauses, you write your "constraints" into a language that is specifically designed to express those constraints. These languages are generally based on 1st order predicate logic. An example of such a system can be found here: https://potassco.org/doc/start/. There's other systems available, but not all of them are well-documented, since systems like these generally find no use outside of academia (yet :p).
The long and short of it is: there are constraint solving systems that allow you to write your clauses using not only boolean variables, but also constructs of other kinds, like numerical variables. The hope is that for the majority of the problems that deal with problems that feature numerical concepts (like grid coordinates), this extra expressive power allows a reasoner to more efficiently go through the search space.
If my assumptions above are correct, I'd take some time and prototype an encoding that could serve as an alternative. My time to spend on this is limited, so if you feel like me pointing you towards resources where you can learn this yourselves is more efficient, I could do that as well.
The text was updated successfully, but these errors were encountered: