Мой первый пост здесь — надеюсь, вы поможете мне с разработкой алгоритма, который я обдумывал некоторое время — не знаю, какой подход выбрать (VRPTW, планирование ресурсов или что-то совсем другое!?)
Чтобы выразить это в реальном примере, у нас есть много садовых отходов в небольшом количестве мест (обычно менее 5). Все отходы должны быть доставлены в другие места в установленные сроки. Для перевозки садовых отходов у нас есть прицепы, которые необходимо буксировать автомобилями. Садовые отходы можно сбрасывать на свалку только в определенное время (временные окна). На некоторых участках мы можем сдать прицеп для заполнения или опорожнения людьми, но в других местах водитель автомобиля должен сделать это сам, а автомобиль должен оставаться там. Все сроки могут быть рассчитаны (т. е. время погрузки / разгрузки, время в пути и т. д.). Автомобили могут перемещаться между площадками без прицепа, прицепы можно буксировать пустыми, но сами прицепы не могут перемещаться между локациями.
Наша цель состоит в том, чтобы обеспечить перевозку всех прицепов с отходами в то время, когда
- сведение к минимуму количества используемых прицепов и автомобилей
- соблюдение всех временных окон для вывоза мусора
- «балансировка» трейлеров – т.е. в конце дня у нас в каждой локации столько же трейлеров, сколько было в начале дня
Я думал подойти к этому как к алгоритму планирования ресурсов, но я не уверен, как справиться с «балансировкой» трейлеров.
Еще один метод, который я рассматривал, заключался в том, чтобы сначала рассмотреть автомобили. Затем я мог выбрать самую раннюю задачу и построить график всех возможных задач после этого. Если я затем выберу самый длинный путь через граф, который будет обслуживать максимальное количество прицепов. Затем я мог бы удалить эти задачи из списка задач и повторять до тех пор, пока все задачи не будут обслужены. Затем мне нужно было бы просмотреть этот список грузов прицепов, чтобы определить необходимое количество прицепов.
Любые мысли о подходе будут оценены!