Проблема
Я оптимизирую маршруты доставки бетона, где грузовики должны:
Загружать на центральном заводе (по одному грузовику за раз, продолжительность загрузки 20 минут)
Доставлять клиентам в определенные временные интервалы
Вернуться для перезагрузки и повторить Ограничение: Погрузочная площадка принимает только ОДИН грузовик одновременно – перекрытия не допускаются.
Текущая реализация
У меня есть ограничение, которое предотвращает перекрытие погрузки:
Потенциальное решение — связанные переменные?
В настоящее время каждое посещение имеет переменную планирования previousVisit на основе назначенного Транспортного средства (создание цепочки маршрутов для каждого транспортного средства). Имеет ли смысл добавить вторую связанную переменную — previousVisitAtCentral на основе Центральный завод — для явного моделирования последовательности загрузки?
Вопрос
Является ли подход двойной цепочки (одна цепь на транспортное средство, одна цепь на центральный) допустимой стратегией моделирования в Timefold/OptaPlanner?
Если нет, то какой рекомендуемый способ последовательного моделирования использование ресурсов (загрузочный отсек), когда несколько посещений имеют одинаковые временные интервалы?
Проблема Я оптимизирую маршруты доставки бетона, где грузовики должны: [list] [*]Загружать на центральном заводе (по одному грузовику за раз, продолжительность загрузки 20 минут)
[*]Доставлять клиентам в определенные временные интервалы
[*]Вернуться для перезагрузки и повторить [b]Ограничение:[/b] Погрузочная площадка принимает только ОДИН грузовик одновременно – перекрытия не допускаются. Текущая реализация У меня есть ограничение, которое предотвращает перекрытие погрузки: [code]protected Constraint centralOverLap(ConstraintFactory factory) { return factory.forEach(Visit.class) .filter(v -> v.getVehicle() != null) .filter(v -> v.getArrivalTime() != null) .join(Visit.class, Joiners.equal(Visit::getCentral), Joiners.overlapping(Visit::getTimeStartLoading, Visit::getDepotOutTime), Joiners.lessThan(Visit::getId, Visit::getId) ) .penalize(HardSoftLongScore.ONE_HARD) .asConstraint("Site Central loading overlap"); } [/code] Потенциальное решение — связанные переменные? В настоящее время каждое посещение имеет переменную планирования previousVisit на основе назначенного [b]Транспортного средства[/b] (создание цепочки маршрутов для каждого транспортного средства). [b]Имеет ли смысл добавить вторую связанную переменную[/b] — previousVisitAtCentral на основе [b]Центральный завод[/b] — для явного моделирования последовательности загрузки? Вопрос
Является ли [b]подход двойной цепочки[/b] (одна цепь на транспортное средство, одна цепь на центральный) допустимой стратегией моделирования в Timefold/OptaPlanner?
[*]Если нет, то какой рекомендуемый способ последовательного моделирования использование ресурсов (загрузочный отсек), когда несколько посещений имеют одинаковые временные интервалы?