Ненужный транспортный запрос расстояния / времени к VehicleRoutingTransportCosts

Я новичок в использовании jsprit и VRP. Я создаю проблему, когда транспортное средство должно доставить товар в несколько пунктов отправки, а затем доставить товар в несколько пунктов доставки. В этом случае я использовал несимметричную матрицу затрат. Что я не понимаю, так это то, почему jsprit по-прежнему запрашивает ненужные пары Location из матрицы затрат. Примером такого запроса является время / расстояние транспортировки от пункта доставки груза до пункта отправления транспортного средства (я также настроил транспортное средство, чтобы оно не возвращалось в склад). Почему это происходит? Я спрашиваю об этом, потому что запрос матрицы расстояний к Google API стоит дорого и ограничен 2500 записями в день (для режима разработки)

1 ответ

Решение

Это интересный вопрос, но я не думаю, что это стоит оптимизации.

1) Jsprit сотрудничает с graphhopper это уже дает вам возможность самостоятельно разместить свой собственный сервер, который дает расстояния и время между точками без ограничений. Вы можете начать здесь для этого, например, или здесь.

2) Если вы знаете, что расстояние / время не имеет отношения к вашему расчету, вам вообще не нужно ничего вычислять. Просто предоставьте фиктивные данные. Он не будет использоваться в случае доставки груза -> склад, когда вы устанавливаете алгоритм, чтобы не возвращаться на склад, поэтому не беспокойтесь о его расчете.

Вы всегда можете поднять ставку на github в качестве предлагаемой функции, но я предлагаю определенно дополнить фиктивными данными, если вы уверены, что не имеет смысла просто удовлетворять систему и не пытаться вычислить евклидово расстояние.

Что касается того, почему это происходит, я не могу быть уверен на 100%, но я полагаю, что легче ожидать все данные (полную матрицу), чем иметь лишние затраты на анализ того, что является / не важно. Тот факт, что он намеренно пытается заполнить пропуски евклидовым расстоянием, даже когда вы предоставляете почти полную пользовательскую матрицу, предполагает, что это так. Даже проблема с 10000 поставок и setReturnToDepot(false) вы только уверенно удалите 10000 точек данных из матрицы 100 мил.

Другие вопросы по тегам