алгоритм / логика для балансировки нагрузки и определения маршрута автобусов - PullRequest
2 голосов
/ 15 июля 2010

Я хочу создать программное обеспечение для планирования маршрутов автобусов (и их оптимальной загрузки) для перевозки детей-инвалидов.

эти шины имеют следующие характеристики:

  • м мест (максимум 7 - так как есть водитель и помощь)
  • o «сидений» для инвалидных колясок (максимум 4)
  • фиксированная величина максимальной нагрузки (в Австрии: 9 или 20 человек; 9 для, например, транзита Ford; 20 для, например, Mercedes Benz Sprinter)

спецификации для маршрутов:

  • поездка в институт должна быть не более 2 часов для ребенка (не для автобуса)
  • для оптимизации: оптимально смешать институты

пример альтернативный текст http://img138.imageshack.us/img138/9528/basicload.png

оптимальный маршрут 1 будет:

  • 6, 1, 7, группа (2, 3, 4, 5), институт А (выход на 1, 2, 3, 4, 5, 6), 8, 9, институт Б (выход на 7, 8 , 9) или
  • 1, 7, 6, группа (2, 3, 4, 5), институт А (выход на 1, 2, 3, 4, 5, 6), 8, 9, институт Б (выход на 7, 8 , 9) или
  • 7, 1, 6, группа (2, 3, 4, 5), институт А (выход на 1, 2, 3, 4, 5, 6), 8, 9, институт Б (выход на 7, 8 , 9) или
  • ...

в зависимости от конкретной дороги (то есть расстояние до треугольника 1-6-3 и 7-1-6)

это простой пример. когда дело доходит до перевозки инвалидных колясок, это более сложно.

редактирование:
ПРИМЕЧАНИЕ: существует более 2 инстансов, так как более 9 детей. это было просто для примера. в реальном мире было бы 600 детей и 20 институтов ...

какие данные мне нужны?
мои предположения были: координаты, расстояния между точками (не расстояние от воздушной линии, а расстояние от дороги), тип использования места (место или кресло-коляска), каким-то образом характеристики дороги (могут быть устаревшими из-за расстояния)

Может кто-нибудь придумать какое-нибудь программное обеспечение для идеи, алгоритма, логики, обратной связи (бесплатно! Поскольку перевозка детей с ограниченными возможностями не является бизнесом предприятия), которое я могу использовать для получения данных (например, координат, расстояний, ...) .

о, и я должен сказать. Я не учился на инженера-программиста, так что мне нелегко пройти через научную литературу, но я хочу испачкать руки!

1 Ответ

2 голосов
/ 15 июля 2010

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

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

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

Попросите подробности по мере необходимости, выше просто грубый набросок.

РЕДАКТИРОВАТЬ:

Хорошо, читая ответы, я должен сказать, что для решения этойПроблема в способе, который я предлагаю, по крайней мере, вы должны иметь некоторые знания о линейном программировании и теории графов.И да, это проблема, которая является очень сложной ... настолько сложной, что я считаю ее неразрешимой, за исключением очень небольших систем, использующих современные компьютерные технологии.Видя, что это на самом деле очень мало.Я думаю, что это было бы возможно, и вы можете связаться с нашей компанией за помощью (contact@ange.dk).Однако профессиональная помощь в оптимизации не совсем дешевая.

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

Опять же, создание программы, которая с нуля создаст решение для вышеуказанной проблемы, не подходит для тех, кто не разбирается в теории графов LP + MiP +.Но, возможно, меньше сможет это сделать?

Я буду в отпуске на следующей неделе или около того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...