-
Notifications
You must be signed in to change notification settings - Fork 4
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
Make literal picker break activity ties by picking smaller variable #14
base: master
Are you sure you want to change the base?
Conversation
I've tried several optimizations:
I'm still not sure if these improvement are sufficient to negate the cost of the change, and some of these improvements could have been done regardless of whether we break ties using variables, although this new ordering scheme does give users more control over the literal picker in case they have extra information about which literals would be better to pick. |
I also reversed the order that |
I also notice that in this and some other my other recent PRs I used the |
Somewhat stupid question there, but could we sort the conflict before inserting things into the heap? That would make the actual order more resilient, I think? |
I think that would help with my original problem, although that may have some cost as well. Breaking ties with variable order also has the advantage of allowing users some control over the initial order. I think the main reason the original picker was so cheap was that it broke ties in a way to do the least amount of heapifying which was helpful when most variables had the same activity level, so these changes would also be helpful when randomizing the initial activity levels/ |
This makes literal picking somewhat more predictable and robust to the order explanations are given by theories (see dewert99/plat-smt#14). Unfortunately it seems this also makes maintaining the order heap more expensive so I'm planning to try to optimize before opening this PR.