JSPrit доставляет раньше, чем позже, если в пункт назначения

Сбор нескольких отправлений, высадка в центральном пункте. Проблема в том, что иногда транспортное средство заполняется и сбрасывает вещи в центральном месте, но этого достаточно, чтобы закончить маршрут. Я бы хотел, чтобы он сбросил все, что у него есть, если оно уже находится на складе.

См. ниже, он доставляет задание № 3 на склад, оставляя 4 других предмета в транспортном средстве (вместимость которого составляет 5). Затем забирает последнюю вещь, прежде чем доставить все.

+--------------------------------------------------------------------------------------------------------------------------------+
| detailed solution                                                                                                              |
+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+
| route   | vehicle              | activity              | job             | arrTime         | endTime         | costs           |
+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+
| 1       | vehicle              | start                 | -               | undef           | 0               | 0               |
| 1       | vehicle              | pickupShipment        | 3               | 353             | 1253            | 3527            |
| 1       | vehicle              | pickupShipment        | 2               | 1253            | 2153            | 3527            |
| 1       | vehicle              | pickupShipment        | 4               | 2582            | 3482            | 7819            |
| 1       | vehicle              | pickupShipment        | 6               | 3801            | 4701            | 11012           |
| 1       | vehicle              | pickupShipment        | 5               | 4701            | 5601            | 11012           |
| 1       | vehicle              | deliverShipment       | 3               | 5945            | 6845            | 14455           |
| 1       | vehicle              | pickupShipment        | 1               | 7025            | 7925            | 16248           |
| 1       | vehicle              | deliverShipment       | 2               | 8104            | 9004            | 18042           |
| 1       | vehicle              | deliverShipment       | 4               | 9004            | 9904            | 18042           |
| 1       | vehicle              | deliverShipment       | 6               | 9904            | 10804           | 18042           |
| 1       | vehicle              | deliverShipment       | 5               | 10804           | 11704           | 18042           |
| 1       | vehicle              | deliverShipment       | 1               | 11704           | 12604           | 18042           |
| 1       | vehicle              | end                   | -               | 12604           | undef           | 18042           |
+--------------------------------------------------------------------------------------------------------------------------------+

Какой хороший способ смоделировать временные или денежные затраты, чтобы грузы не тратили ненужное время в транспортном средстве? Все, что мне нужно, это оптимальный маршрут для получения/выдачи груза.


person Sam Barnum    schedule 12.12.2016    source источник
comment
Вы можете попробовать добавить к целевой функции стоимость, связанную со временем нахождения в автомобиле для каждой работы. Вам также может понадобиться добавить соответствующее мягкое ограничение действия для управления вставкой.   -  person He Huang    schedule 13.12.2016
comment
@HeHuang, звучит многообещающе, есть ли еще примеры или методы, на которые я могу обратить внимание, чтобы добиться этого?   -  person Sam Barnum    schedule 13.12.2016
comment
У меня ничего нет под рукой, но есть ветка, пытающаяся смоделировать максимальное ограничение по времени для автомобиля (все еще в разработке), и, возможно, вы сможете узнать кое-что оттуда. См.: github.com/graphhopper/jsprit/issues/261.   -  person He Huang    schedule 14.12.2016
comment
@HeHuang, ты знаешь кодовую базу намного лучше меня. Я думаю, это случайно? Другими словами, если бы требовалось выполнить больше работ, требующих большей вакантности транспортного средства, тогда все было бы сброшено? Это проблема алгоритма или обработка после решения?   -  person roganjosh    schedule 14.12.2016
comment
Это похоже на произвольное решение алгоритма маршрутизации. Стоимость доставки всех отправлений, если вы находитесь в пункте назначения, такая же, как и стоимость перевозки, чтобы забрать последние отправления, а затем вернуть их. Можно ли изменить порядок вставки, чтобы попробовать доставку до получения?   -  person Sam Barnum    schedule 15.12.2016
comment
@SamBarnum Мне любопытно, разрешили ли вы это каким-либо образом?   -  person roganjosh    schedule 10.01.2017
comment
@roganjosh Нет, не нашел хорошего способа отдать приоритет доставке, а не самовывозу. Люди-операторы просто знают, как доставить все, что находится на транспортном средстве.   -  person Sam Barnum    schedule 10.01.2017
comment
Хм, по крайней мере, вы можете решить проблему в (эффективной) постобработке. Жаль, что нет четкого способа заставить такое поведение действовать; на самом деле это логично, но несущественно с точки зрения реальных затрат, учитываемых алгоритмом. Спасибо за обновления.   -  person roganjosh    schedule 10.01.2017