Мин Макс Тур для VRP в OptaPlanner - PullRequest
0 голосов
/ 04 сентября 2018

Я новичок в 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

Я пытаюсь рассчитать расстояния для каждого транспортного средства и вернуть мягкое ограничение для автомобиля с наибольшим расстоянием.

1 Ответ

0 голосов
/ 04 сентября 2018

После минимизации максимального тура вы также захотите минимизировать 2-й максимальный тур и т. Д.

См. «Справедливость» и «Балансировка нагрузки» в документации. И пример тенниса.

...