Кадура (1194486), страница 11
Текст из файла (страница 11)
Каждое значение вычисляется через предыдущее по формуле
Особое значение имеют величины Ти - так обозначается момент посещения одним из локомотивов участка станции и, где нужно побывать для выполнения маневра. Все числа Ти находятся среди чисел Отдельно выпишем Ти для каждой точки и, требующей маневра. Теперь для любой пары вершин и и v, вошедших в граф приоритетов и связашшх условием непосредственного предшествования, нетрудно определить, какая из них посещена раньше, а какая - позже путем сравнения Ти и Tv. Вершины и и v могут присутствовать как в одном маршруте, так и в различных маршрутах. Не каждое допустимое решение задачи нескольких коммивояжеров, описанной во второй главе, будет являться допустимым решением развитой на случай условий предшествования задачи. Следует производить анализ на допустимость тех решений, к которым мы приходим по мере выполнения алгоритмов нахождения оптимума. В том случае, когда, к примеру, некоторый допустимый по условию задачи нескольких коммивояжеров набор маршрутов содержит две вершины и и v, связанные отношением порядка u«v, a Tu>Tv, данный набор объявляется не удовлетворяющим условию решаемой задачи и исключается из дальнейшего рассмотрения. При и -< v обязано выполняться неравенство Tu<Tv, или хотя бы Tu<Tv.
Критерий J3 качества решения R задачи нескольких коммивояжеров, состоящего из m маршрутов, вычисляется следующим образом.
-
Рассмотрим некоторые два маршрута с номерами i1 и i2, обозначим пару (i1, i2) буквой k. Общее количество всевозможных пар равно
Для всех k, k = 1 ,..,т(т -1)/2 определим величины crosskx по правилу
crosskx = min{vn(il, х), vn(i2, x)}, х = 1, size
Следовательно, каждой паре маршрутов (i1, i2) с номером k мы поставили в соответствие величины crosskx, равные количеству вхождений вершины х в тот маршрут из этой пары, который содержит х меньшее количество раз. Фактически для каждой пары маршрутов мы нашли число пересечений этих маршрутов в вершине х, х = 1 ,size.
-
Чтобы найти общее количество пересечений в каждой вершине, просуммируем соответствующие минимумы. В результате получим один вектор сумм sum, элементы которого sumx равны
3. Подлежащий минимизации критерий качества J3 положим равным максимуму sumx
J3 = max{suml, sum2,... ,sumsize},
в случае, когда этот максимум больше нуля и т>\. Если же максимум равен нулю (нет пересечений - маршруты не имеют общих частей), или т=1 (имеется только один маршрут), положим J3 = 1, чтобы воспрепятствовать обращению в ноль J - свертки критериев, которая теперь будет равна
Заметим, что значение J3 прямо пропорционально т - количеству задей- ствуемых локомотивов. Уменьшение т способствует нежелательному уменьшению значения J3, и наоборот. Поэтому в качестве показателя важности 3 предлагаем взять дробь 1/m. Значение критерия J3 в степени 1/m, очевидно, указанным свойством не обладает.
Теперь покажем, как мы будем вычислять J4.
1. Как уже было сказано, каждая вершина x G0, вообще говоря, несколько раз встречается в маршруте i, либо не встречается ни разу (количество встреч содержит элемент vn(i, x)). Время прибытия локомотивов во все вершины мы вычислили. На основании этого при vn(i, х)>0 можно ввести следующие обозначения. Через
обозначим время первого прибытия i-го локомотива в
вершину*, через - время второго прибытия и т.д.
(vn(i,x)) - момент времени, в который i-й локомотив в последний раз должен посетить вершину x своего маршрута.
Для каждой пары маршрутов i1 и i2 (обозначаемой буквой k, k = 1,m(m-1) / 2) определим минимумы , х = 1, size. При vn(i1,x)>0 и vn(i2, x)>0:
При и
2. Выбираем наименьшее из всех и полагаем J4 равным ему.
,
,
Включать в свертку, возводить в степень
4 и максимизировать этот критерий не считаем нужным. Достаточно потребовать, чтобы значение было не меньше некоторой наперед заданной пороговой величины
. Если для результирующего решения не выполняется
>
следует изменить время старта локомотивов, либо уменьшить их количество. При
= 0 последнее неравенство всегда истинно.
Метод, использующий деревья поиска не позволяет решать задачи с указанной спецификой, в силу того, что при таком рассмотрении вычислять нижние границы введенных критериев и , а потому и отбрасывать сколько- нибудь существенные подмножества заведомо неоптимальных маршрутов не представляется возможным. На случай указанной модификации условия задачи развиты метод полного перебора и эвристический алгоритм.
Рассмотрим конкретный пример. Имеется ситуация «нет прохода» на пути ПЗ и П4, два «чужака» на пути ПЗ и «окно» на пути П4. На путях П8 и П6 находятся маневровые локомотивы. Математическое представление данной ситуации изображено на рисунке 42.
Рисунок 42- Граф для ситуации на станции
Видно, что точки, в которых нужно побывать, имеют разный приоритет для посещения. Граф приоритетов задан на рисунке 43.
Рисунок 43- Граф в обслуживании
Требуется определить оптимальный в смысле введенных критериев порядок обхода точек, удовлетворяющий условиям предшествования.
Пусть ,
все коэффициенты загрузки равны 2. При таких исходных данных, с учетом условий предшествования, получены маршруты, на рисунках 44, 45:
Рисунок 44- Маневровый локомотив на пути П8
Рисунок 45- Маневровый локомотив на пути П6
Рисунок 46- «Окно» на пути П4, «чужаки» на пути П3 и П4
[17,15, 18, 13], 9, [13, 12], 1, [12, 13, 9, 14, 10], 11, [10, 14], 3, 4, [3,9,13,12],
-
а2, [16,15,18,13, 9,14], 10, [14, 9, 13,18,15,17], 2, [17,15, 16], b2. Значения критериев:
=661,
=334,
=1,414,
=10, J=312221.585.
Это решение допустимо: когда второй локомотив заедет на путь ПЗ в точку 10 чтобы переставить «чужака» на путь П7 в точку 2, проход на пути ПЗ и П4 будет уже открыт благодаря первому локомотиву.
Увеличив до 12-ти, получим:
1) , [17,15, 18, 13], 9, [13, 12], 1, [12, 13, 9, 14], 10, [14, 9,13, 18, 15,17], 2, [17,15,18,13,9,14,10], 11, [10, 14], 3,4, [3, 14, 9,13, 12],
=
=579, J=335241. Второй коммивояжер не задействуется. Поскольку количество маршрутов равно 1, критерии и J4 никакой роли не играют. Без учета условий предшествования получим:
1) а1, [17, 15, 18, 13, 9, 14, 10], 11, [10, 14], 3, 4, [3, 14], 10, [14, 9, 13, 18,17], 2, [17, 15,18, 13], 9, [13,12], 1,[12]
=
=545, J=297025. Видно, что посещать точки в таком порядке практически не представляется возможным.
3.4 Оптимальное упорядочение ребер графа
В главе 1 в терминах теории графов были описаны решения задачи непрерывного обхода всех городов, т.е. вершин графа, одним или несколькими коммивояжерами. В каждом городе обязательно должен был кто-то побывать, и в то же время длина маршрута или маршрутов должна быть минимальной. Тем не менее, практически могут возникать задачи несколько иного содержания. В этом параграфе мы покажем, каким образом разработанные нами алгоритмы следует использовать при решении задачи оптимального упорядочения обхода не вершин, а ребер графа. Необходимость такой постановки диктуется практической потребностью решения многих вопросов экономики транспорта: проблемы инспектирования железнодорожных линий, управления работой машин, производящих уборку улиц города, доставки готовой продукции потребителям и т.д. Математическая сущность подобного рода задач состоит в следующем. Имеется произвольный связный граф G(X,U). Во множестве X выделено s базовых вершин, где коммивояжеры находятся на начальном этапе пути и базовых вершин, где коммивояжеры должны находиться в конце работы. Ребрам множества и приписаны неотрицательные веса. Требуется указать коммивояжерам оптимальные с точки зрения критерия качества маршруты движения, причем каждое ребро графа из множества тех ребер, по которым требуется пройти, должно содержаться хотя бы в одном из маршрутов.
где - сумма длин всех маршрутов в данном решении, длина максимального маршрута,
и
- показатели важности рассматриваемых критериев. При этом к выполнению работ могут быть привлечены не все, а только некоторые т (
коммивояжеров, где
- это количество ребер для посещения.
Без потери общности будем считать, что ребра, инцидентные к базовым вершинам посещать необязательно.
В условии сказано, что исходный граф является произвольным - ориентированным, неориентированным, либо смешанным. На практике очень часто встречаются смешанные графы, т.е. графы, вершины которых могут быть связаны между собой как ориентированными, так и неориентированными ребрами. Любая вершина может иметь инцидентные к ней неориентированные ребра и дуги. Примером такого графа служит схема городского транспорта с односторонним и двусторонним движением на участках дорог.
Рассмотрим смешанный граф на рисунке 47, имеющий две базовые вершины начального местонахождения коммивояжеров , и а2, и две базовые вершины
и b2, в которые коммивояжеры должны отправиться по окончании работы. Нумеруются сначала небазовые вершины, затем базовые, и в последнюю очередь - все остальные, если таковые имеются. Для простоты положим длины всех ребер равными десяти, а показатели важности - единице. Идея предлагаемого ниже метода заключается в том, чтобы исходный граф привести к такому преобразованному, который пригоден для отыскания оптимального плана задачи нескольких коммивояжеров в ее обычном виде.
Рисунок 47-Исходный смешанный граф