Использование Optaplanner версии 6.2.0
Мои правила DROOLS:
rule "Transition Time Constraint"
when
$leftImageStrip:ImageStrip($selected : selected,
$satellite : satellite,
selected != null,
$timeslot : timeslot,
leftId : id,
lGain : gain,
lRollAngle : rollAngle,
$duration : duration)
$rightImageStrip : ImageStrip(selected == $selected,
satellite == $satellite,
Math.abs(timeslot.getTime() - $timeslot.getTime()) <= 460000,
this != $leftImageStrip,
rGain : gain,
rRollAngle : rollAngle)
then
x = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss.SSS");
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
rule "Shoot Strip once"
when
$leftImageStrip: ImageStrip($selected : selected, $stripList : stripList,
leftId : id, selected != null)
$rightImageStrip: ImageStrip(selected == $selected, stripList == $stripList,
this != $leftImageStrip)
then
scoreHolder.addMediumConstraintMatch(kcontext, -1);
end
rule "Maximization of Selected Parameters"
when
$imageStrip: ImageStrip(selected != null)
then
scoreHolder.addSoftConstraintMatch(kcontext, $imageStrip.gain);
end
Я придерживался локального оптимума, который различается в зависимости от сортировки входных данных.
Как я могу преодолеть эту проблему, чтобы получить такое же оптимальное решение, как и при сортировке входных данных? И, конечно, это должно быть глобально оптимальное решение.
Можно ли гарантировать, что полученный результат с помощью Optaplanner является глобальным оптимумом? независимо от сортировки входных данных?