Оптимизация маршрутов проезда между предприятиями связи
Степанов В.П., Степанов П.В., МТУСИ
Постановка задачи. Известными для решения задачи являются: дорожная сеть города, место отправления и место назначения. Необходимо выбрать оптимальный и все близкие к нему маршруты проезда из места отправления до места назначения, которые учитывают реальную обстановку на дорогах: возможные заторы и варианты их объезда, задержки перед светофорами на перекрестках, различные скорости движения транспорта на отдельных участках дорожной сети города. В качестве критерия для выбора маршрута может служить время, пройденный путь и т. д. Свести эти критерии к одному весьма затруднительно.
Существует ряд реализованных программ, позволяющих искать кратчайший путь по карте [1-4]. В рассмотренных системах используются различные критерии оптимальности пути — от критерия кратчайшего расстояния до сложных критериев оценки времени с учетом информации о пробках. В отмеченных работах в основном рассматриваются алгоритмы поиска только оптимального пути. Только в работе [6] описан алгоритм поиска К маршрутов отклонения от оптимального на основе оптимального маршрута, проходящего через К вершин графа.
Математическая модель. Множество всех возможных трасс поездки по улицам города представляется в виде ориентированного графа Э = (А, W), где А — множество вершин, W — множество дуг. Вершинам этого графа соответствуют: перекрестки на улицах города, место отправления і є А и место назначения і є А. Вершины графа — это места дорожной сети, где имеются возможности выбора дальнейшего маршрута поездки по городу. Ребрам графа соответствуют магистрали и улицы между двумя вершинами. Для ребер графа задаются матрица расстояний I = |15С|| и матрица возможных скоростей движения С = |с5с|, б, С є А. Для каждой вершины графа б є А, с учетом наличия или отсутствия светофора, задаются значения — время задержки на перекрестке. Тогда у — время движения по ребру (б, С) — определяется по формуле
У = Бс/ сзС+ ^ Б С є А П)
Для заданных начальных и конечных вершин графа і и і требуется определить маршрут проезда ^., затрачивающего минимальное время, а также множество всех близких к оптимальному маршрутов, которые отличаются от оптимального на заданную величину Е [5]. Определение множества близких к оптимальному решений позволяет при окончательном выборе учесть дополнительные неформализованные требования.
Алгоритм решения. Алгоритм решения задачи состоит из двух этапов. Определения кратчайшего по времени маршрута проезда сводится к решению известной задачи кратчайшего пути на неориентированном графе. Для ее решения применяются известный алгоритм [6], основанный на расстановке пометок на вершинах графа. Для определения множества близких к оптимальному решений применяется алгоритм, основанный на методе последовательного анализа вариантов [7] и использовании правила отбраковки бес-
перспективных вариантов до получения окончательного решения.
В алгоритме Дейкстрь для поиска кратчайшего пути вершинам графа приписывают временные или постоянные пометки. Пометки определяют для вершины верхнюю границу длины пути от I вершины к текущей. Величины временных пометок вершин постепенно уменьшаются. Значение пометки определяет возможную длину пути от начальной до этой вершины. На каждом шаге алгоритма только одна из пометок с минимальным значением на рассматриваемом уровне выбирается в качестве постоянной. Это значит, что значение пометки является длиной кратчайшего пути из I вершины в текущую вершину.
Введем следующие обозначения: У(б) — множество ребер, входящих или выходящих из вершины б (У(б) Н W ); | У(в) | — мощность множества; р5| — пометки вершины б е А, | = 0, 2, ...,|У($)| - 1; В — множество вершин с постоянными пометками для | = 0.
Алгоритм первого этапа поиска оптимального маршрута состоит из шести шагов.
Шаг 1. Присвоить пометке начальной вершины рю = 0 и считать постоянной. Для всех остальных вершин б е А\{1} установить р50= и считать эти пометки временными. Установить d = I; В = {I}.
Обновить метки.
Шаг 2. Для всех вершин б е У^) вычисляются новые значения
Рз|= Р<* + к, I = 0, 2.. |У(з)| -1. (2)
Таким образом, для каждой вершины будет определено время проезда для всех возможных путей от исходной вершины I до вершины б .
Для | = 0 временные пометки вычисляются, используя выражение
Рз0 = т|п[ Рб0 , ( Рd0 + к)] (3)
и превращаются эти пометки в постоянные.
Шаг 3. Среди всех вершин с временными пометками б е А\В найти такую вершину к, для которой значение пометки минимально Рк0 = т|п Рз0-
Шаг 4. Считать пометку Рк0 постоянной и установить d = к. В множество В добавить вершину к.
Шаг 5. Если d = |, то перейти к шагу 2. Если d = |, то Рк0 является длиной кратчайшего пути из вершины I в вершину |.
Шаг 6. Если все пометки всех вершин постоянные, т.е. В = А, то на этом определение времени оптимального пути завершается.
После этого происходит восстановление маршрута проезда.
На втором этапе алгоритма задается допустимое значение отклонения от оптимального значения Е. На первом этапе, в отличие от алгоритма Дейкстры, для каждой вершины в зависимости от мощности множества У(б) вычисляются по формуле (2) и запоминается не одно, а ряд значений пометок. Затем для каждой вершины отбрасываются те значения пометок, для которых выполняется соотношение
Р5| > (Рк0 + Е), б е УМ, | = 0, 2, ..., |У(б) | - 1. (4)
В случае дальнейшего продолжения получения вариантов путей из таких значений пометок, их значения будут только возрастать.
10,5,25
28,23,43,19,30,44,4?,...
8
6,17
29,46,31,42,46,31,42
Рис. 1. Схема работы алгоритма
Рис. 2. Главное окно программного комплекса
тш „
* -е ШК
mfrfbk/. Ъ"*Л< й."^,
Рис. 3. Представление результатов поиска маршрутов
Схема работы алгоритма для примера. На рис. 1 приведена схема работы изложенного алгоритма для примера графа, состоящего из 9 вершин и 20 ребер. Приведеный для всех вершин ряд значений чисел внутри выделенных прямоугольников представляет собой ряд значений пометок, которые получены на втором шаге алгоритма. На первом месте в этом ряду располагаются пометки, получаемые по алгоритму Дейкстры. Эти пометки выделены жирным шрифтом. Полученный оптимальный путь с длиной 7 проходит через вершины 1 -7-4. Для поиска близких к оптимальному маршрутов задано значение E = 27. Зачеркнутые значения величин пометок означают отброшенные варианты вариантов путей согласно неравенству (4). В конце работы алгоритма получены два близких к оптимальному маршрута с длинами 16 и 34, проходящие, соответственно, через вершины 1 -2-7-4 и 1 -8-5-4.
Программная реализация алгоритма. Алгоритм решения задачи реализован в виде программного комплекса (ПК) на языке JAVA для IBM PC. Программный комплекс предназначен для работы через систему меню с использованием мыши. Меню включает в себя следующие пункты: загрузка файла карты, определение узлов графа на карте, построение ребер графа, удаление узлов, удаление ребер, поиск путей, сохранение и удаление найденных решений.
Карта улиц Москвы загружается из внешнего файла. Исходные данные генерируются на основе данных программы Mosmap [8]. Затем с помощью указателя мыши на перекрестках улиц назначаются вершины графа. При этом имеется возможность ввода характеристики вершин графа — перекрестков: название и время задержки. После этого указывается схема соединений вершин графа между собой для дорожной сети города. Далее клавишами мыши указываются начальная и конечная вершины ребра. С помощью контекстного меню можно задать характеристики дорог — ребер графа: название улицы, ее длина, средняя скорость движения. ПК дает возможность оперативного изменения характеристик вершин и ребер графа на карте города, а также показать карту города с требуемой подробностью. Главное окно ПК при его запуске имеет вид, приведенный на рис. 2.
В ПК реализованы три алгоритма: алгоритм Дейкстры, алгоритм нахождения K кратчайших маршрутов и предлагаемый алгоритм
нахождения всех Е близких к оптимальному маршрутов.
В верхней части окна расположено главное меню и кнопка "Режим редактирования". В центре окна находится карта, а справа — окно с закладками "Результаты" и "Свойства". В расположенной внизу окна статус-строке отображается информация о находящейся рядом с курсором мыши дороге и времени поиска оптимальных маршрутов.
Главное меню ПК содержит следующие пункты:
1. Файл — "Загрузить" — открывает диалоговое окно для выбора файла карты.
2. Файл — "Сохранить" — сохраняет текущий граф карты.
3. Вид — "Очистить маршрут" — стирает отображенный на карте маршрут.
4. Вид — "Показывать расстояния" — для каждого участка дороги отображает расстояние или время движения с заданной на этом участке скоростью.
5. Поиск пути — "Переключатель расстояние" — при выбранном переключателе параметром отображения на карте или поиска путей является расстояние.
6. Поиск пути — "Переключатель время" — при выбранном переключателе параметром отображения на карте или поиска путей является время.
7. Поиск пути — "Алгоритм Дейкстры" — ищет кратчайший путь между 2-мя точками, поставленными на карте.
8. Поиск пути — "К кратчайших путей" — выводит диалоговое окно для запроса требуемого количество путей и производит поиск маршрутов между двумя точками.
9. Поиск пути — "Е близкие к оптимальному маршруты" — выводит диалоговое окно для запроса значение Е и производит поиск маршрутов между двумя точками.
Кнопка "Режим редактирования" служит для перевода карты в режим редактирования — поиска пути. В режиме поиска маршрута правой кнопкой мыши определяется точка начала поиска, которая выделяется на карте синим кружком, а левой кнопкой мыши — точка окончания поиска, отображаемая на карте зеленым кружком. В режиме редактирования пользователь может выбрать дорогу для редактирования, которая отображается на карте зеленым цветом. Все характеристики дороги можно изменять. Чтобы изменения были до-
Таблица 1
Зависимость времени поиска от числа вершин в кратчайшем маршруте
Число вершин 35 67 88 117 172
Алгоритм Дейкстры 0,01 0,03 0,13 0,24 0,27
К маршрутов 3,94 7,41 27,34 66,41 117,63
Еблизкие 0,36 0,99 4,37 5,78 6,93
ступны и для последующих запусков программы, их нужно сохранить в файле.
Вычисленные возможные варианты маршрутов проезда между этими пунктами различными цветами выделяются на карте.
На рис. 3 приведен пример представления результатов поиска маршрутов между двумя перекрестками для дорожной сети г. Москва.
Проведенные расчеты и анализ полученных результатов. С помощью разработанного ПК проведены расчеты с целью исследования производительности алгоритмов и зависимости скорости поиска от входных данных. При проведении всех расчетов задавались параметры: К = 5, Е = 1 км.
Расчеты зависимости времени поиска маршрутов от числа вершин в кратчайшем пути проводились на карте г. Москва, представляющей собой граф с 12214 вершинами и 35598 ребрами. Была выбрана одна начальная вершина и несколько конечных вершин на разных расстояниях от начальной вершины. Для каждой такой пары вершин произведен поиск маршрутов с помощью трех алгоритмов, причем каждый из алгоритмов запускался несколько раз, а время поиска, измеряемое в миллисекундах, было усреднено и сведено в табл.1.
Результаты расчетов показывают, что алгоритм поиска всех Е близких к оптималь-ному маршрутов имеет вполне приемлемую производительность. Эффективность алгоритма объясняется тем, что граф дорожной сети города является существенно неполным.
При этом полученное оптимальное решение позволяет эффективно отбрасывать те частичные решения, для которых не выполняются условия (4). Значительное возрастание времени поиска К маршрутов происходит потому, что алгоритм осуществляет поиск всех возможных отклонений по вершинам предыдущего маршрута и только после этого выбирает нужное число маршрутов.
Для реализованных алгоритмов исследовались зависимости времени поиска маршрутов от размерности графа. Для проведения этих расчетов использованы четыре карты Москвы разного размера:
• весь город — граф с 12214 вершинами и 35598 ребрами;
• центр города внутри третьего транспортного кольца — граф с 4756 вершинами и 14446 ребрами;
• центр города в пределах Садового кольца — граф с 2002 вершинами и 6116 дугами;
• южная часть центра города — граф с 186 вершинами и 453 дугами.
Для расчетов выбраны две вершины, присутствующие на всех
Таблица 2
Зависимость времени поиска маршрутов от размерности графов
Число вершин 186 2002 4756 12214
Алгоритм Дейкстры 0,005 0,006 0,009 0,012
К маршрутов 0,056 0,41 0,954 2,348
Е близкие 0,058 0,28 0,505 0,548
четырех картах. Произведен поиск пути между этими вершинами на каждой из четырех карт с помощью трех алгоритмов. Усредненное время поиска маршрутов при проведенных многочисленных расчетах, измеряемое в секундах, сведено в табл. 2.
Полученные расчеты показывают, что время работы всех трех алгоритмов зависит нелинейно от числа вершин графа. Результаты расчетов показывают, что изложенный в работе алгоритм нахождения всех E близких к оптимальному маршрутов является весьма эффективным для графов дорог значительных размеров.
Выводы
1. Предложена математическая модель задачи выбора оптимального и всех близких к нему маршрутов в виде задачи дискретного программирования и алгоритм ее решения. Определение близких к оптимальному решений позволяет при окончательном выборе маршрута учесть дополнительные неформализованные требования.
2. Предложенный алгоритм, являющийся модификацией известного алгоритма Дейкстры, реализован в виде программного комплекса на языке JAVA. Результаты проводимых расчетов представляются в удобном виде на электронной карте города.
3. Проведенные расчеты подтвердили, что алгоритм Дейкстры более эффективен для поиска оптимального пути. Предлагаемый алгоритм поиска всех близких к оптимальному маршрутов показывает хорошую производительность для графов дорог достаточно больших размеров.
Литература
1. www.mapquest.com
2. www.pocketgis.biz
3. www.mobimap.ru
4. www.auto-sputnik.ru
5. Степанов В.П. О математическом моделировании дорожной сети города для выбора маршрута проезда // Тезисы докладов научной конференции МГТУ имени Н.Э. Баумана. — М.: МГТУ, 2005. — C. 110-111.
6. Кристофидес Н. Теория графов. Алгоритмический подход. — М.: Мир, 1978. — 432 с.
7. Моисеев Н.Н. Численные методы в теории оптимальных систем. — М.: Наука, 1971. — 424 с.
8. www.mosmap.ru.