In the past few months, several users have reported on this mailing
list that they ran into score corruption issues,
so I've been working to improve the situation for 6.0.x.
Like in 5.x, by putting the <environmentMode> in ASSERT mode,
it's easy to detect such an issue (and often even the offending
score rule),
but it's been generally hard to understand what's the cause on how
to fix it.
There are generally 3 common causes of score corruption:
- Bug in your cloning method.
- In 6.0.0.Beta1 you no longer need to write the cloning
method:
- Bug in the causes parameter you supply to ConstraintOccurrence
or a planner-incompatible hashcode/equals method of any those
objects
- In 6.0.0.Beta1 there is no cause parameter and it no longer
cares about the hashcode/equals method of your objects during
score calculation
- Bug in our Drools Expert's statefull working memory
- Most of these bugs were fixed for Drools 5.1 and 5.2. I am
not aware of any in Drools 5.3 and 5.4.
- Mario and I are looking into a very exotic bug in
5.5/6.0.0.Beta1 now, which is unlikely to affect you: it
only affects 1 dataset of 1 example in OptaPlanner.
- As always, we welcome detailed bug reports (especially with
reproducers) if you believe you 've discovered another bug.
Hope that helps :)
wkr,
Geoffrey De Smet
http://www.optaplanner.org