[rules-users] Drools Planner: Solving a job schedule problem
Vincent LEGENDRE
vincent.legendre at eurodecision.com
Fri Dec 14 07:32:59 EST 2012
Hi,
not sure I got all the details (seeing rules could help, I did not understand what is wrong with your approach).
As far I undertand, you already has a list containing the jov sequence, so you can update "prevJob" and "nextJob" attributes of you planning variables "Job".
If yes, let's say you have 2 methods that returns "prevJobBreak" (or null if no prevJob)
I would then add 2 rules for your 2 criteria :
rule "min_small_breaks"
when
$small_breaks : Number from accumulate( Job($break : prevJobBreak != null && <= 20), sum($break) ) // not sure of exact syntax, see accumulate doc)
then
// insert soft with : $small_breaks
end
rule "max_big_breaks"
when
$big_breaks : Number from accumulate( Job($break : prevJobBreak != null && > 20), sum($break) )
then
// insert soft with : -1 * $big_breaks (or anything else with a suitable weigth according to the other criteria)
end
Note that I only use prev, but nextJob can be used to add rules (contraints or criterion) over consecutives jobs (forbidden/mandatory sequences for instance).
I also sum over all big breaks. I don't know if you have a constraint that limits the number of big breaks to 1. If >1, may be you have to find a formula to optimise also the number of single 'as big as possible' big breaks in a day.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20121214/4f35829f/attachment.html
More information about the rules-users
mailing list