Составление маршрутов транспортных средств / Дизайн Алгоритма планирования Ресурса

Мое первое сообщение здесь – надежда Вас может помочь мне с разработкой алгоритма, который я рассматривал на некоторое время теперь – не уверенный что подход взять (VRPTW или планирование ресурса или что-то еще полностью!?)

Для помещения его в реальный пример слова у нас есть много отходов сада в небольшом количестве местоположений (обычно меньше чем 5). Отходы должны все быть транспортированы к другим местоположениям в течение данных периодов времени. Для перемещения сада пропадают впустую, у нас есть трейлеры, которые должны быть буксированы автомобилями. Отходы сада могут только быть отброшены в ненужном складе в определенное время (окна времени). На некоторых сайтах мы можем привезти трейлер, чтобы быть заполненными или освобожденные людьми там, но в других местоположениях драйвер автомобиля должен сделать это самостоятельно, и автомобиль должен остаться там. Все синхронизации могут быть вычислены (т.е. загружающийся / разгрузка времен, транзитных времен и т.д.). Автомобили могут переместиться между сайтами без трейлера, трейлеры могут быть буксированы пустые, но трейлеры не могут переместить себя между местоположениями.

Наша цель состоит в том, чтобы гарантировать, что все загрузки трейлера отходов транспортируются пока

  • уменьшение количества трейлеров и используемых автомобилей
  • встреча всех окон времени для понижения отходов
  • “балансировка” трейлеров – т.е. в конце дня, у нас есть столько трейлеров в каждом местоположении, сколько были там в начале дня

Я думал о приближении к этому как алгоритм планирования ресурса, но я не уверен, как обработать “балансировку” трейлеров.

Еще один метод, который я рассмотрел, должен был рассмотреть автомобили сначала. Я мог затем выбрать самую раннюю задачу и создать график всех выполнимых задач после этого. Если бы я затем выбрал самый длинный путь через график, который обслужил бы максимальное количество загрузок трейлера. Я мог затем удалить эти задачи из списка задач и повторения, пока все задачи не обслуживались. Я должен был бы затем работать на основе их, список трейлера загружается для разработки количества требуемых трейлеров.

Любые мысли для приближения ценились бы!

6
задан will-hart 18 December 2009 в 00:00
поделиться

4 ответа

Я согласен с Джири ... вам нужен эвристический алгоритм, который быстро приближается к приемлемому решению, а затем уточняет его.

Я работал в компаниях раньше, у которых было программное обеспечение маршрутизации доставки, и подход, который они использовали, заключался в использовании генетического алгоритма для решения очень похожей, хотя и гораздо более масштабной задачи. Если вы не знакомы с этим подходом, посмотрите здесь . С этого сайта:

  1. [Начало] Сгенерировать случайную популяцию из n хромосом (подходящие решения проблемы)
  2. [Фитнес] Оценить приспособленность f (x) каждой хромосомы x в популяции
  3. [Новая популяция] Создайте новую популяцию, повторяя следующие шаги, пока новая популяция не будет завершена

    [Выбор] Выберите две родительские хромосомы из популяции в соответствии с их приспособленностью (чем лучше приспособленность, тем больше шанс быть выбранным)

    [Кроссовер] С вероятностью кроссовера перекрестите родителей, чтобы сформировать новое потомство (детей). Если кроссовер не производился, потомство является точной копией родителей.

    [Мутация] С вероятностью мутации мутировать новое потомство в каждом локусе (положении в хромосоме).

    [Accepting] Поместить новое потомство в новую популяцию

  4. [Заменить] Использовать новую сгенерированную совокупность для дальнейшего запуска алгоритма
  5. [Тест] Если конечное условие удовлетворено, остановитесь и верните лучшее решение в текущей совокупности
  6. [Loop] Перейти к шагу 2

Уловка заключается в кодировании ваших ограничений в «хромосому» и написании функции «приспособленность». Функция приспособленности должна принимать входные данные о результатах потенциального решения и выдавать оценку того, насколько хорошо это решение, или отбрасывать его, если оно нарушает какое-либо из ограничений.

Как упоминал Джири, преимущество этого Решение состоит в том, что он дает работоспособный, хотя, возможно, не самый лучший ответ, очень быстро, и чем дольше вы даете ему работать, тем лучше будет решение.

4
ответ дан 9 December 2019 в 22:35
поделиться

Здесь мы точно говорим о полном алгоритме NP, кроме некоторого количества автомобилей и прицепов, это не будет задача, в которой вы получите лучшее решение из всех возможных решений, а затем будете возможность отбросить это и пойти снова, чтобы избежать самого длинного пути, как вы предлагаете. Если вы спроектируете свой алгоритм таким образом, очень вероятно, что однажды вы добавите немного больше автомобилей и трейлеров, и он никогда не завершит вычисление решения.

Вы, вероятно, захотите использовать алгоритм, который может достаточно быстро генерировать достаточно хорошее решение проблемы. Убедитесь, что вы создали метрику качества решения, у вас есть хороший способ оценить значение метрики для идеального решения, а затем установить себе некоторый процент, в пределах которого вы Я хочу, чтобы ваше решение основывалось на идеальном решении, и просто возьмите первое решение с метрикой в ​​границах. Это дает дополнительное преимущество: если этот алгоритм занимает слишком много времени для вычисления и вы его прерываете, вы все равно можете использовать решение с наименьшей вычисленной метрикой, даже если она выходит за ваши ожидаемые границы.

Я не уверен какой подход подойти к решению самой проблемы. Я бы посоветовал прочитать несколько статей после поиска на портале acm . Я предполагаю, что UPS и Fedex, вероятно, имеют схожие проблемы, если вы добавите их в качестве ключевых слов в поиск в Google, вы можете получить более полезные результаты.

даже если это выходит за рамки ожидаемых.

Я не уверен, какой подход использовать для решения самой проблемы. Я бы посоветовал прочитать несколько статей после поиска на портале acm . Я предполагаю, что UPS и Fedex, вероятно, имеют схожие проблемы, если вы добавите их в качестве ключевых слов в поиск в Google, вы можете получить более полезные результаты.

даже если это выходит за рамки ожидаемых.

Я не уверен, какой подход использовать для решения самой проблемы. Я бы посоветовал прочитать несколько статей после поиска на портале acm . Я предполагаю, что UPS и Fedex, вероятно, имеют схожие проблемы, если вы добавите их в качестве ключевых слов в поиск в Google, вы можете получить более полезные результаты.

4
ответ дан 9 December 2019 в 22:35
поделиться

I tend to agree with Robert. This sounds to me like a really great candidate for an evolutionary optimisation technique like the Genetic Algorithm implementation that he describes.

I have also had very good success on certain problems with the Particle Swarm Optimisation (PSO).Basically, you can think of each genome as a particle in some multi dimensional space. The coordinates of the particle are the paramters to your calculation (fitness function). Each particle is started of randomly with a random velocity. For each iteration of the simulation, you update the position of each particle with its current travel vector, and then you add components of other vectors like: direction to the best particle so far, direction to the best particle ever, direction to a local group best etc...

It may seem rather daunting at first to implement a GA or PSO but I assure you that it is easy to write a small framework that abstracts the algorithm (GA/PSO) from the actual problem domain that you are trying to optimise. You can always fall back to Wikipedia for details of the algorithms.

Once I have a framework, I normally start with a 2 parameter problem (probably a simplification of your problem, or X and Y locations on an image), so that I can easily visualise and tweak the algorithm so that I get good swarming behaviour. Then I scale it up to more dimensions.

I like this approach because it allows me to easily optimise for problems that have rather complex and intricate parts to the actual problem statement (like the cars and trailers).

Also, why the evolutionary techniques are attractive is because you can dedicate a fixed portion of time to the simulation and take the best answer so far when you decide to stop.

In my experience, you tend to take as much time tweaking the parameters to the GA or PSO (once you have an implementation) as you would writing a hard coded heuristic solution, but the benefit is that to change the strategy for finding the solution typically requires parameter changes only or swapping out very well defined algorithms with another implementation, as opposed to coding a completely different strategy to solving the problem heuristically from scratch.

Please give me a shout if you need guidance on designing the generic frameworks for either of the two algorithms. I must point out, that you get several good free 3rd party frameworks out there too. I sometimes like to code my own because I understand every aspect of the algorithm then and I know where I can adjust the strategy.

1
ответ дан 9 December 2019 в 22:35
поделиться

Общий подход:

Поскольку проблема небольшая, я бы предложил подход, при котором вы добавляете автомобили и прицепы до тех пор, пока не получите осуществимого решения, а не пытаетесь минимизировать автомобили и прицепы.

Решение:

Я добился меньшего успеха на ГА с ограничениями и еще меньшего успеха на ГА с ограничениями на целочисленные переменные (например, количество прицепов в месте расположения). Может быть, программирование ограничений - лучший подход, так как нужно просто сгенерировать выполнимое решение для заданного количества автомобилей и прицепов, а не пытаться минимизировать пройденное расстояние.

Наблюдение:

Вы решаете проблему в сети, где последним ходом может быть перемещение пустого прицепа.

Удачи!

1
ответ дан 9 December 2019 в 22:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: