Reputation: 4288
I am trying to solve a problem similar to employee rostering. The problem I am facing is every time I run the solver, it generates a different assignment. This makes it harder to debug why a particular case was picked over another. Why is this the case?
P.S. My assignment has many hard constraint and all of them may not be satisfied (most cases I still see some negative hard score). So my termination strategy is based on unimprovedSecondsSpentLimit
. Could this be the reason?
Upvotes: 0
Views: 122
Reputation: 27312
Yes, it's likely the termination. OptaPlanner's default environmentMode
guarantees the exact same solution at the exact same step (*). But CPU cycles differ a lot from run to run, so that means you get more or less steps per run. Use DEBUG
logging to see that.
Use stepCountLimit
or unimprovedStepCountLimit
termination.
(*) Unless specified otherwise in the docs. Simulated Annealing for example will be different even in the exact same step if used with time bound terminations.
Upvotes: 1