Программные и жесткие временные окна алгоритма JSprit

У меня есть список услуг с временными окнами. Можно ли настроить JSprit таким образом, чтобы некоторые временные окна должны были соблюдаться (жесткие временные окна), в то время как другие были настроены как мягкие временные окна?

Заранее спасибо за помощь


person user1100529    schedule 15.08.2014    source источник


Ответы (1)


Окна с жестким временем могут быть реализованы путем назначения временного окна службе через Service.Builder. По умолчанию службы не имеют временных окон. Мягкие временные окна могут быть учтены путем реализации core.problem.constraint.SoftActivityConstraint.

https://github.com/graphhopper/jsprit/blob/master/jsprit-core/src/main/java/com/graphhopper/jsprit/core/problem/constraint/SoftConstraint.java

Здесь можно штрафовать за опоздание. Имейте в виду, что добавление нового действия не только оказывает локальное влияние, то есть на два соседних действия, но и может повлиять на весь маршрут, поскольку смещает все последующие действия. Это, в свою очередь, может привести к дополнительным штрафам, которые также необходимо учитывать. Чтобы оценить это в постоянное время, вам потребуется какое-то приближение глобального воздействия. После того, как вы добавите мягкое ограничение, вам необходимо также учесть его в своей целевой функции (см., например, и соответствующие примеры кода, чтобы узнать, как это работает).

person Stefan Schröder    schedule 05.09.2014