Я новичок в OptaPlanner и пытаюсь изменить существующий пример VRP под свои нужды.
Моя проблема: я хочу некапитализированный VRP, как в примере tutorial / test / tutorial-01-uncapacitated.vrp. При фактической реализации оптимизатор в основном использует только одно транспортное средство, потому что он рассматривает только минимизацию общего расстояния.
Я хочу изменить мягкое ограничение, чтобы максимальный тур был минимизирован. Моя цель - добиться равного использования транспортных средств.
Ниже приведены реализованные мягкие ограничения drools:
//###########################################################################
// Soft constraints
// ############################################################################
rule "distanceToPreviousStandstill"
when
$customer : Customer(previousStandstill != null,$distanceFromPreviousStandstill : distanceFromPreviousStandstill)
then
scoreHolder.addSoftConstraintMatch(kcontext, - $distanceFromPreviousStandstill);
end
rule "distanceFromLastCustomerToDepot"
when
$customer : Customer(previousStandstill != null)
not Customer(previousStandstill == $customer)
then
Vehicle vehicle = $customer.getVehicle();
scoreHolder.addSoftConstraintMatch(kcontext, - $customer.getDistanceTo(vehicle));
end
Я пытаюсь рассчитать расстояния для каждого транспортного средства и вернуть мягкое ограничение для автомобиля с наибольшим расстоянием.