Используйте временные окна в jsprit с датой

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

Моя проблема заключается в том, как перевести даты (отметка времени unix) в временные окна в jsprit, поскольку алгоритм начинается в 0 раз. Я просто делю временные интервалы или есть лучшая практика, которую мне не хватает.

Спасибо за любую помощь.


person AJ_1310    schedule 16.07.2016    source источник
comment
jsprit не зависит от единиц измерения. Вы можете определить время в минутах или секундах. Вам нужна только определенная контрольная точка (что такое время 0?), После чего вы всегда можете вернуться к реальному времени и дате. Что касается «Я просто делю временные интервалы?» Я не уверен, что понимаю, о чем вы спрашиваете.   -  person roganjosh    schedule 17.07.2016
comment
Обычно в метке времени unix время 0 — это 1970 год. В jsprit время 0 — это начало алгоритма. Проблема не в единицах времени, проблема в разрыве между 0 и отметкой времени, которая является большим числом. Что я имел в виду под дельтой, так это то, что мне пришлось вычесть текущую временную метку из всех предоставленных временных меток, чтобы не было разрыва.   -  person AJ_1310    schedule 17.07.2016
comment
В таком случае да, мы согласны с этим. Вам нужно найти разумную новую временную метку unix для представления нуля, а затем определить временные окна как смещение от этой позиции, поэтому вам делает все еще нужно решить, как вы хотите определить единицу времени. Я думаю, вы слишком усложнили это в своем уме. Я решаю ежедневно, с 00:00 до нуля времени до 1439 (минут). Если бы я хотел решить на неделю 24-часовой работы, я бы закончил на 10080. Тогда вы просто перезапустите.   -  person roganjosh    schedule 17.07.2016
comment
Хорошо, я думаю, я понимаю, что вы говорите. Большое спасибо за помощь. Не могли бы вы опубликовать это как ответ, чтобы проголосовать за него?   -  person AJ_1310    schedule 18.07.2016


Ответы (1)


Отредактировано.

JSprit не зависит от единиц измерения. Вы выбираете единицы, с которыми хотите работать.

Я мог бы выбрать, что моя неделя будет длиться с понедельника по воскресенье, и я хочу определить единицы измерения в минутах. В этом случае 9 утра понедельника — это время 540 (9*60). Или я мог бы определить его в секундах, и в этом случае то же самое время составляет 32400 (9 * 60 * 60). Это не имеет значения, если единицы времени одинаковы во всем.

Временная метка unix почти наверняка не нужна для решения проблемы. Вы запускаете решение в установленное время; обычно вы ищете решение дискретной проблемы и запускаете алгоритм с заданными интервалами. Это всегда дает вам точку отсчета, в которой можно взять «абстрактный» вывод jsprit (например, прибывает во время 678) в дату и время, имеющую отношение к текущей проблеме.

Таким образом, я мог бы запустить алгоритм 19 июля для w/c 25 июля, но знаю, что решение о времени прибытия основано на 00:00 25 июля, равном "0", а затем просто добавляю минуты.

Итог: JSprit не принимает время вызова решения как время 0. Он принимает время 0 как любую точку, в которой вы решили определить его в произвольной системе; полночь в воскресенье, инаугурация Папы Франциска, что угодно :)

person roganjosh    schedule 17.07.2016