2016-06-10 7 views
2

Я не понимаю, как использовать окна времени в jsprit.Как использовать jsprit с временными окнами?

Я знаю, что он с значение, что и дать транспортное средство с помощью метода, как:

setLatestArrival(1236); 

и услуг, таких как:

setTimeWindow(TimeWindow.newInstance(912,967)); 

но как преобразовывают часов до этого значения? как я могу написать временные окна для 2-х услуг:

1 начинается в 10h и заканчиваются в 12ч

2- начинаются с 16 и заканчиваются в 15ч

Thx за помощью.

+0

Я понимаю, что нужно преобразовать часы в мин: – splifo

+0

Я думаю, что вы можете использовать любой блок (например, часы, минуты, секунды и т. д.), если они совместимы - окна времени, службы время, время транспортировки и т. д. –

+0

Пожалуйста, ознакомьтесь с моим комментарием к принятому ответу для разъяснения на пару вещи. – roganjosh

ответ

2

Jsprit занимает единицу времени в секундах. Если вы хотите использовать часы, вам нужно сначала преобразовать время в секундах. Одна вещь, которую я хочу уточнить здесь,

setTimeWindow (TimeWindow.newInstance (912967));

Здесь 912 и 967 не являются временем начала и окончания задачи. Здесь 912 является earliest start time, который означает, что вы не можете запустить эту услугу, прежде чем 912. И 967 это latest end time означает, что вы должны закончить эту услугу, прежде чем 967. Service может иметь некоторые duration которые можно упомянуть в

setServiceTime (время в секундах)

+2

Несколько разъяснений по этому вопросу. Jsprit на самом деле _time unit agnostic_, вы определяете свою предпочтительную единицу измерения (я использую минуты) и гарантирую, что вы будете единообразны во всем. Кроме того, вы не технически корректны с «последним временем окончания», хотя это, возможно, потому, что настройка этого атрибута не слишком ясна. На самом деле это «последнее время начала», и работа может закончиться после «967». См. [This] (https://github.com/graphhopper/jsprit/issues/233) предлагаемую функцию для альтернативной реализации временного окна. – roganjosh

+0

@sutirtha Являются ли эти цифры, которые мы даем во временных окнах (TimeWindow.newInstance (912,967)), только днем, означает, что в этот день эта служба должна быть запущена в 10 часов утра и заканчивается в 13:00 или что это числа, представляющие ? 912 и 967 не имеют смысла. –

+1

@ManjunathM как roganjosh объяснил, что jsprit - это единица времени, агностик. Вы можете определить предпочтительную единицу времени. Предположим, что вы объявляете проблему, основанную на отметке времени эпохи, она будет выглядеть так: setTimeWindow (TimeWindow.newInstance (timestamp1, timestamp2)); Снова вы можете взять время usin как min, тогда это будет выглядеть так: setTimeWindow (TimeWindow.newInstance (min1, min2)); И эти времена нарушают проблему (вы можете сказать, что время начала дня). Это снова зависит от вас. Вы можете взять время начала в качестве начала автомобиля. В этом случае окно времени автомобиля будет (0, время окончания работы автомобиля) – sutirtha