Ну, это на самом деле то, чем я зарабатываю на жизнь.По сути, мы решаем это, используя MiP с генерацией столбцов и используя модель пути.Видя, что проблема довольно мала, я думаю, вы можете использовать более простую модель реберного потока с разумным результатом.Это избавит вас от генерации столбцов, что довольно трудоемко.Я бы предложил начать с расчета потока на заданных маршрутных маршрутах, прежде чем думать о создании самих маршрутов - фактически, я бы просто сделал это «вручную», используя калькулятор маршрутов и двойные затраты в качестве руководства.
В частности, вам необходимо создать график, в котором каждая точка сбора и доставки является узлом, а каждый маршрут шины - набором связанных примечаний.Подключайтесь соответствующим образом, это действительно легче нарисовать, чем написать :) Затем создайте LP-систему, которая моделирует поток, ограничивая поток в зависимости от вместимости автобуса и требуя либо доставки всех пассажиров, либо платит большой сбор за неисполнениеитак.
Как только это произойдет, создайте логические переменные для каждого маршрута и умножьте его на пропускную способность: это позволит вам включать и выключать автобусные маршруты.
Попросите подробности по мере необходимости, выше просто грубый набросок.
РЕДАКТИРОВАТЬ:
Хорошо, читая ответы, я должен сказать, что для решения этойПроблема в способе, который я предлагаю, по крайней мере, вы должны иметь некоторые знания о линейном программировании и теории графов.И да, это проблема, которая является очень сложной ... настолько сложной, что я считаю ее неразрешимой, за исключением очень небольших систем, использующих современные компьютерные технологии.Видя, что это на самом деле очень мало.Я думаю, что это было бы возможно, и вы можете связаться с нашей компанией за помощью (contact@ange.dk).Однако профессиональная помощь в оптимизации не совсем дешевая.
Однако, еще не все потеряно!Есть более простые способы, хотя результат не будет таким хорошим.Когда вы не можете моделировать, симулируйте!Напишите симуляцию, которая с учетом автобусных маршрутов, пассажиров и т. Д. Показывает, как пассажиры движутся по автобусным маршрутам.Подсчитайте, где каждый используемый вами автобус стоит чего-то, каждый километр стоит, а каждый не перевезенный пассажир стоит дорого.Затем посмотрите на результат, измените маршруты и найдите лучшее (самое дешевое) решение, которое вы можете найти.Вероятно, это неплохое решение.
Опять же, создание программы, которая с нуля создаст решение для вышеуказанной проблемы, не подходит для тех, кто не разбирается в теории графов LP + MiP +.Но, возможно, меньше сможет это сделать?
Я буду в отпуске на следующей неделе или около того.