Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements a form of Variable State Independent Decaying Sum (VSIDS) used in many modern solvers.
Background
VSIDS attempts to score each variable with an activity score and decaying the value over time. During decision time a literal is chosen with the highest activity score. Variables' activity score increases when they are part of a conflict. All variables' activity scores decrease after n conflict by multiplying them with a certain decay factor.
Different solvers have slightly different implementations, the amount by which the activity score is increased, the decay factor, after how many conflicts the activities decay, and which variables are increased as part of the conflict.
I found this a good read: https://ar5iv.labs.arxiv.org/html/1506.08905
Implementation differences
The implementation in resolvo also differs from the theory:
n=1
), increases the scores of packages involved in the conflict by1.0
and decays scores by0.95
.