Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Разработка алгоритмов многоальтернативной маршрутизации грузоперевозок в системах транспортной логистики на основе эволюционных методов Плотников, Олег Александрович

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Плотников, Олег Александрович. Разработка алгоритмов многоальтернативной маршрутизации грузоперевозок в системах транспортной логистики на основе эволюционных методов : диссертация ... кандидата технических наук : 05.13.01 / Плотников Олег Александрович; [Место защиты: Воронеж. гос. техн. ун-т].- Воронеж, 2012.- 137 с.: ил. РГБ ОД, 61 13-5/360

Содержание к диссертации

Введение

Глава 1. Анализ задач информационных систем транспортной логистики, функционирующих в пределах города, и методов их решения 15

1.1 Область применения, задачи и функции информационных систем транспортной логистики 16

1.2 Постановка задачи маршрутизации транспорта 18

1.3 Методы решения задачи маршрутизации транспорта 26

1.4 Алгоритмы нахождения оптимального пути между вершинами дорожного графа 31

1.5 Использование геоинформационных компонент в составе информационных систем транспортной логистики 37

1.6 Цели и задачи исследования 44

Глава 2. Разработка алгоритма решения задачи поиска оптимального пути между вершинами дорожного графа с нерегулярным весом ребер 47

2.1. Алгоритма А* для решения задачи поиска путей на графе 48

2.2 Модификация алгоритма А* и оценка результатов работы 54

Глава 3. Разработка алгоритма нахождения глобального плана доставки задачи маршрутизации транспорта 65

3.1 Постановка задачи оптимизации глобального плана доставки 65

3.2 Разработка модифицированного меметического алгоритма для решения задачи маршрутизации транспорта 69

3.3 Алгоритма муравьиной колонии в качестве алгоритма локального поиска 84

Глава 4 Разработка проблемно-ориентированного программного обеспечения многоальтернативной маршрутизации грузоперевозок 91

4.1. Модульная структура системы маршрутизации 92

4.2 Интерфейс программирования приложений 96

4.3 База данных приложения и объектно-реляционное отображение 97

4.4. Разработка геоинформационной компоненты в составе системы маршрутизации 102

4.5. Модуль решения задач маршрутизации проблемно-ориентированного программного обеспечения 110

4.6 Визуальный интерфейс программного средства 113

Заключение 118

Список литературы 120

Постановка задачи маршрутизации транспорта

Задачи маршрутизации транспорта (Vehicle Routing Problems, VRP) — задачи комбинаторной оптимизации, в которых для парка транспортных средств, расположенных в одном или нескольких депо, должен быть определен набор маршрутов до нескольких отдаленных точек-потребителей. Интерес к VRP вызван ее практической значимостью при значительной сложности.

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

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

Задачи VRP лежат на пересечении двух хорошо изученных задач.

Задача коммивояжера (Traveling Salesman Problem, TSP): если грузоподъемность С каждого транспортного средства принимается бесконечной (точнее, достаточной), то задача VRP сводится к множественной задаче коммивояжера (Multiple Traveling Salesman Problem, MTSP) путем добавления к исходному графу к-1 (где к— количество маршрутов) копий нулевой вершины и ее ребер (между этими копиями ребра отсутствуют).

Задача об упаковке ранца (Bin Packing Problem, ВРР): решение данной задачи, по сути, эквивалентно решению задачи VRP при условии, что все расстояния принимаются равными нулю (таким образом, эффективность всех подходящих решений будет одинакова).

Задачи маршрутизации являются ключевыми в областях транспортных перевозок, перемещения и логистики. Во многих областях рынка доставка товара добавляет к его стоимости сумму, сравнимую со стоимостью самого товара. Тем не менее, использование компьютерных методов оптимизации доставки товара часто выражается в экономии порядка 5-20% от общей его стоимости.

Маршрутизация транспорта относится к комбинаторным задачам, которые можно представить в виде графа G(V, Е):

- V— {уо, V/, ..., vn} — множество вершин (уо— депо, V/ „ — потребители)

- Е множество ребер {(V/, Vj) І іф]}

-С— матрица неотрицательных расстояний (стоимости пути) су между потребителями

- т — количество транспортных средств

- Rt — маршрут /-го транспортного средства (/=1 ..т)

- C(RJ — СТОИМОСТЬ маршрута І?,

- cjj- объем груза, поставляемыйу-му потребителю

С каждой вершиной Vk ассоциировано некоторое количество товаров, которые должны быть доставлены соответствующему потребителю. Задача маршрутизации состоит в определении такого множества маршрутов т с минимальной общей стоимостью, чтобы каждая вершина множества V была посещена только одним автомобилем только один раз. Кроме того, все маршруты должны начинаться и заканчиваться в депо (у0).

Решением задачи является:

- разбиение множества V на подмножества (маршруты);

- задание порядка обхода на каждом подмножестве (перестановка вершин маршрута).

Решение является приемлемым (feasible), если все маршруты удовлетворяют дополнительным ограничениям задачи.

В классическом варианте требуется найти приемлемое решение с минимальной стоимостью.

Обычно, в реальных задачах оптимизации возникает множество дополнительных ограничений и вариаций, наиболее важные из которых перечислены ниже.

1. Capacitated VRP (CVRP): каждое транспортное средство имеет ограниченную грузоподъемность. В задачах этого типа вводится дополнительное ограничение: вес грузов на каждом маршруте Ri не должен превышать заданной величины Q (обычно одинаковый для всех машин).

Цель: Минимизировать парк машин, необходимых для выполнения задания, а также общее время выполнения задачи.

2. VRP with Time Windows (VRPTW): каждый заказчик должен быть обслужен в определенное «временное окно». Данная задача подобна VRP с основным дополнительным условием: для выполнения запроса каждого клиента Vi существует известный промежуток времени, определенный как интервал [ЄІДІ] — намеченный горизонт (scheduling horizon). Для выполнения заказа каждого клиента существует допустимый интервал времени.

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

Ограничения: по сравнению с VRP, в задачах данного типа добавляются следующие условия:

- решение неприемлемо, если клиент обслуживается после верхней временной границы;

- машина, прибывшая ранее нижней временной границы, ожидает ее наступления;

- как вариант, опоздание не влияет на пригодность решения, но добавляет некоторое штрафное значение к целевой функции.

3. Multiple Depot VRP (MDVRP): используются несколько депо для обслуживания клиентов. В наличии может быть несколько депо, которыми обслуживаются потребители. В случае если потребители сгруппированы вокруг каждого депо, задача может быть разбита на несколько независимых.

Однако если потребители и депо расположены в беспорядке, нужно искать решение для задачи маршрутизации с множественным депо (MDVRP).

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

Цель: минимизировать парк транспорта и общее время пути.

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

Стоимость пути рассчитывается, как и в случае стандартной VRP.

4. VRP with Pick-Ups and Delivering (VRPPD): клиенты могут возвращать некоторые товары в депо. Задача маршрутизации с возможностью возврата и доставки товаров расширяет стандартную VRP тем, что требуется доставка некоторого количества товаров назад от потребителей в депо. Таким образом, нужно быть уверенным в том, что товары, которые вернет потребитель, не превысят вместимость машины. Это ограничение делает планирование задачи более сложным и может привести к непроизводительному использованию вместимости транспорта, увеличению общего пути и количества единиц транспорта в депо.

Для простоты обычно рассматриваются задачи с дополнительными ограничениями, например, когда все запросы на доставку товаров начинаются в депо и все запросы на возврат товаров оканчиваются в депо, то есть, не происходит обмен товарами между потребителями. Другой способ состоит в отмене ограничения, что все клиенты должны посещаться только один раз. Существует еще одно обычное упрощение — принять, что каждый автомобиль сначала развозит все товары, прежде чем начать принимать товар от клиентов(УЯР with Backhauls, VRPB).

Цель: минимизировать парк транспорта и общее время движения.

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

5. VRP with Backhauls (VRPB): аналогично предыдущей, но возврат начинается только после доставки всех товаров из депо. Задачи маршрутизации с возвратом товаров (VRPB) являются расширением VRP, в котором потребители могут как запросить, так и вернуть некоторые товары. В задаче с доставкой и возвратом (VRPPD) необходимо принять во внимание, что товары, которые вернут потребители, должны уместиться в машине. Отличие от VRPPD состоит в том, что все товары должны быть доставлены, прежде чем произойдет любой возврат. Это требование происходит из того факта, что все машины загружаются сзади и перестановка грузов не является экономически выгодной и приемлемой. Количество товара, который необходимо доставить и принять, фиксировано и известно заранее.

Цель: найти такой набор маршрутов, чтобы минимизировать общее пройденное расстояние.

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

Постановка задачи: Задача формулируется аналогично задаче с доставкой и возвратом товаров (VRPPD).

Модификация алгоритма А* и оценка результатов работы

Вследствие необходимости оптимизации алгоритма нахождения оптимального пути между вершинами дорожного графа с нерегулярным весом ребер, проведем оптимизацию алгоритма А по времени выполнения. Оценку работы алгоритма будем рассматривать для двух случаев: трудного и простого. Измерение проводим в миллисекундах для каждого из случаев. Соотношения скорости работы алгоритма при оптимизации даны по отношению к соответствующим предыдущим реализациям алгоритма. Отметим, что мы не учитываем накладные расходы профилировщика, т.е. реальное время работы алгоритма будет меньше данной оценки.

Реализация алгоритма А в стандартном виде для трудного случая занимает 2876 мс, для простого - 315 мс. Такой результат не удовлетворяет условиям задачи, следовательно, данная реализация нуждается в оптимизации.

Результаты работы алгоритма А и результаты оптимизаций представлены в таблице 2.2.

Во-первых, мы можем сократить время работы алгоритма, предварительно просчитав расстояния между узлами графа, приведя его к виду, представленному на рис 2.3.

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

Производя указанные расчеты (для всей карты) за пределами алгоритма, мы сократили время его работы на 21,9% для трудного и на 8,6% для простого случаев.

Существует несколько особенностей реализации и приёмов, которые могут влиять на эффективность алгоритма.

Первое, на что стоит обратить внимание — это то, как очередь с приоритетом обрабатывает связи между вершинами. Если вершины добавляются в неё так, что очередь работает по принципу LIFO, то в случае вершин с одинаковой оценкой А «пойдёт» в глубину. Если же при добавлении вершин реализуется принцип FIFO, то для вершин с одинаковой оценкой алгоритм, напротив, будет реализовывать поиск в ширину. В случае дорожного графа имеет смысл использовать очередь по принципу LIFO, т.к. наиболее вероятные решения находятся на приближении к прямой до точки назначения. Данная оптимизация позволяет добиться сокращения времени работы алгоритма на 7% и 15,6% для трудного и простого случаев соответственно.

Как видно из приведенного выше псевдокода мы, в основном работаем, с двумя структурами данных - открытым и закрытым списками.

Существует три основных операции, которые мы выполняем со списками: поиск, добавление и удаление узлов. В основном цикле мы многократно находим узел с минимальной оценкой g(x) в открытом списке и удаляем его оттуда; добавляем раскрытый узел в закрытый список; для каждого соседа проверяем, находится ли узел в открытом списке, обновляем или добавляем узел в этот список.

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

Простейшая структура данных несортированный массив или список. Поиск элементов в нем осуществляется медленно, О (logF) для сканирования всей структуры. Вставка осуществляется быстро, О (1) для добавления в конец списка. Поиск узла с минимальной оценкой g(x) выполняется медленно, О (F) для сканирования всей структуры. Удаление элемента выполняется со временем О (F) для массивов и О (1) для связанных списков. Операция обновления узла выполняется со временем О (logF), чтобы найти узел и О (1), чтобы изменить его значение.

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

С упорядоченными массивами, была медленной вставка. Если мы будем использовать упорядоченный связанный список, мы можем сделать это быстрее. Поиск элементов в связанном списке идет медленно, О (F), чтобы просмотреть список. Вставка выполняется быстро, О (1), чтобы вставить новую ссылку, но необходимо О (F), чтобы найти правильное положение для нового элемента. Поиск лучшего узла остается быстрым, О (1), так как он находится в конце списка. Удаление лучшего узла из открытого списка также выполняется за время О (1). Обновление узла обрабатывается за время О (F), чтобы найти узел и О (1), чтобы изменить его значение / положение в сортированном списке.

Поиск в несортированных связанных списках идет медленно. Мы можем сделать это быстрее, если будем использовать список с пропусками вместо связанного списка. В списке с пропусками поиск элементов, если у нас есть ключ сортировки: О (log F). Вставка выполняется за время О (1) как в связанном списке, если мы знаем место вставки. Поиск лучшего узла выполняется быстро, если ключ сортировки является функцией, О (1), и удаление узла О (1). Операция обновления узла включает в себя нахождение узла, удаление, и снова вставку.

Если мы используем списки с пропусками с картой расположения в качестве ключа, поиск выполняется за время О (logF), вставка за О (1), после того как мы выполнили проверку принадлежности, поиск лучшего узла О (F), и удаление узлов осуществляется за О (1).

Если мы используем списки с пропуском с функцией в качестве ключа, поиск узла выполняется за время О (F), вставка О (1), поиск лучшего узла 0(1), и удаление узла О (1).

Если множество узлов небольшого размера, мы можем использовать прямую структуру индексации - индексированные списки, где индексная функция i(n) отображает каждый узел п по индексу в массиве. В отличие от несортированных и сортированных массивов, которые имеют размер, соответствующий максимальному размеру открытого списка, у индексированного массива размер всегда равен max(i(n)) по всем п. Если все индексы используются, то максимальная max(i(n)) будет равно числу узлов в графе.

Поиск узла выполняется за время О (1), так как мы просто должны проверить содержит ли Array [i(n)] данные. Вставка выполняется за время 0(1), так как также выполняется по индексу Array [i(n)]. Поиск и удаление лучшего узла выполняется за время не большее, чем 0(«количество узлов»), так как необходимо выполнить поиск по всей структуре. Обновление узла осуществляется за время О (1).

Индексированные массивы занимают много памяти для хранения всех узлов, которые не находятся в открытом списке. Альтернативой является использование хэш-таблицы с хэш-функцией h (п), которая отображает каждый узел т в хэш-код. Поиск узла выполняется за время О (1), вставка за О (1), удаление за О (1) и обновление за О (1).

Также мы можем использовать двоичную кучу - древовидную структуру, которая хранится в массиве, использует индексацию. В двоичной куче поиск выполняется за время О (F), так как необходимо проверить всю структуру. Вставка выполняется за О (logF) и удаление за О (logF). Обновление узла довольно затратно, О (F), чтобы найти узел и О (logF), чтобы обновить его. Двоичные кучи хорошо работают для случаев, когда количество узлов превышает 10.000 [122, 123, 124, 125, 126].

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

Сравнительная характеристика структур данных представлена в таблице 2.1.

Разработка модифицированного меметического алгоритма для решения задачи маршрутизации транспорта

Меметические алгоритмы относятся к классу метаэвристических алгоритмов и требуют реализации следующих этапов:

1. Кодирование решения в виде генотипа.

2. Задание целевой функции (приспособленности) для особей популяции.

3. Создание начальной популяции.

4. Размножение (скрещивание).

5. Мутация.

6. Локальный поиск для всех особей.

7. Вычисление значения целевой функции для всех особей.

8. Формирование нового поколения (селекция).

9. Если выполняются условия останова, то возвратить найденное решение, иначе переход к п.4.

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

В процессе селекции отбирают только несколько лучших пробных решений, остальные далее не используются. Скрещивание за место пары решений создаёт другую, элементы которой перемешаны каким-то особым образом. Мутация случайным образом меняет какую-нибудь компоненту пробного решения на иную.

В МА часто используют следующие типы кодирования компонент пространства поиска:

- бинарный, если признак сам по себе является бинарным;

- численный в двоичной системе. Расширенный вариант бинарного, где используется фиксированное число бит. Самый простой в реализации, но имеет существенный недостаток;

- кодирование кодом Грея избавляет от проблем предыдущего варианта, но добавляет накладные расходы на кодирование/декодирование;

- числа с плавающей запятой. Используются в том случае, когда масштаб изменения признака заранее не известен;

- номинальные типы и более абстрактные сущности;

- типы с автоподстройкой.

Таким образом, для начала необходимо формализовать задачу таким образом, чтобы её решение можно было закодировано в виде вектора («генотипа») генов, где каждый ген может быть битом, числом или неким другим объектом. В классических реализациях ГА предполагается, что генотип имеет фиксированную длину. Однако существуют вариации ГА, свободные от этого ограничения.

Остановимся на фиксированной длине генотипа, однако заметим, что за длину генотипа в данном случае мы принимаем число, равное количеству заявок на доставку.

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

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

На этапе селекции отбирается оптимальная популяция для дальнейшего размножения. Обычно берут определённое число лучших по приспособленности. Имеет смысл также отбрасывать "клонов", т.е. особей с одинаковым набором генов.

Для увеличения надежности алгоритма разработан метод динамической селекции особей для следующего поколения. Реализовано два метода селекции: селекция выбором наиболее приспособленных особей и турнирный отбор. В начале работы алгоритма применяется селекция выбором наиболее приспособленных особей. Далее в ходе алгоритма с некоторой заданной вероятностью происходит смена методов селекции.

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

Для оценки решения в текущем поколении популяции мы берем значение наиболее приспособленной особи в данной популяции.

Скрещивание [133] чаще всего производят над двумя лучшими особями. Результатом является также обычно две особи с компонентами, взятыми от их родителей. Цель этого оператора - распространение хороших генов по популяции и стягивание плотности популяции к тем областям, где она и так велика.

База данных приложения и объектно-реляционное отображение

Для удобства работы с базой данных [147, 148, 149, 150, 151, 152] на уровне программирования в целях гибкости, масштабируемости и надежности программной системы необходима реализация объектно-реляционного отображения (object-relational mapping, ORM).

В подсистеме решения задачи маршрутизации ORM реализовано в отдельном классе DBManager (рис. 4.3), который устанавливает соединение с базой данных и возвращает необходимые данные посредством методов, работающих как службы. Таким образом, из любого модуля (в тіч. сторонних разработчиков) можно обратиться к базе данных посредствам обращения к методам класса DBManager без установления жестких зависимостей с ним.

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

Таким образом, сама база данных закрыта для разработчиков и взаимодействие с ней выполняется через ORM. Это исключает возможность ошибочных запросов и упрощает работу с БД.

Методы модуля DBManager возвращают результаты поисковых запросов в виде классов сущностей, описанных в API, т.е. в удобной форме для программиста.

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

Типичная компания, связанная с распределением грузов занимается получением, хранением и обработкой следующих данных:

- имеет базу клиентов, которых обслуживает компания;

- имеет базу автомобилей, находящихся в автопарке компании;

- получает заявки на доставку на обслуживание клиентов;

- имеет базу товаров, по которым осуществляется доставка;

- работает с картой той местности, в границах которой осуществляется доставка;

Детализируем каждый из указанных пунктов.

База клиентов содержит информацию о следующих данных:

- имя - название организации, служит для идентификации клиентов;

- координаты - местоположение организации клиента, необходимы для отображения на карте;

- адрес, телефон - обеспечивают удобство обслуживания;

Указанные данные дают необходимую информацию для проведения комплексной оптимизации, а также выполняют минимальные требования для взаимодействия с клиентом.

Помимо этого, для большей интеграции с деятельностью фирмы, информация о клиентах может быть расширена путем добавления данных о ИНН, КПП, кор/счете, р/счете, контактном лице и других данных компаний клиентов.

База данных автомобилей содержит информацию об автопарке компании. Сведения о каждом транспортном средстве содержат набор необходимых характеристик. Рассмотрим их подробнее.

Государственный регистрационный номер - служит для идентификации автомобиля.

ФИО водителя - применяется при формировании путевых листов.

Грузоподъемность транспортного средства и габариты грузового отделения служат для ограничения по весу и габаритам товаров при проведении комплексной оптимизации.

Максимальная снаряженная масса и габариты транспортного средства учитывают дорожные ограничения при прокладке маршрутов;

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

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

Заявки на доставку содержат следующую информацию.

Информация о клиенте (название) - необходима для идентификации клиента.

Время доставки - период времени, в который должна быть осуществлена доставка (опционально).

Список товаров в заявке - наименования и количество товаров. Отметим, что товары должны выбираться из редактируемой базы. Такой подход обеспечит более быструю работу оператора, а также устранит ошибки связанные с «опечатками».

Информация о каждом товаре должна содержать:

- код - служит для идентификации;

- наименование;

- вес - применяется при оптимизации, вес всех товаров в транспорте не должен превышать грузоподъемность;

- габариты - также необходимы при проведении оптимизации, объем товаров не должен превышать габариты грузового отсека;

Рассмотренные данные о заявке дают необходимую информацию для возможности проведения комплексной оптимизации.

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

На основе результата комплексной оптимизации должны быть сформированы маршруты для каждого рейса.

Каждый маршрут должен содержать следующую информацию:

- идентификатор транспортного средства, к которому относится данный маршрут;

- данные о загрузке транспортного средства;

- длина маршрута;

- время маршрута;

- расходы на маршрут.

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

Так спецификации включают в себя:

- идентификатор маршрута, которому принадлежат;

- очередь посещения по мере прохождения маршрута;

- идентификатор выполняемой заявки;

- идентификатор посещаемого клиента;

- длина пути;

- время пути;

- время на разгрузку;

- затраты на путь;

- маршрут к текущей точке доставки.

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

Суммируя выше сказанное, мы получаем структуру базы данных, представленную на рис. 4.4

Похожие диссертации на Разработка алгоритмов многоальтернативной маршрутизации грузоперевозок в системах транспортной логистики на основе эволюционных методов