Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
На рис. 6.9 показана построенная сеть. С помощью программы TORA находим кратчайший путь 1->3->5 (показан на рис. 6.9 жирными линиями). Это решение означает, что автомобили, приобретенные в 2001 году (узел 1), будут эксплуатироваться 2 года, до 2003 года (узел 3), затем они будут заменены новыми, которые будут эксплуатироваться до конца 2005 года. Общая стоимость замены составит 5400 + 7100= 12 500 долл.
Рис. 6.9. Задача замены оборудования как задача поиска кратчайшего пути
Глава 6. Сетевые модели
Пример 6.3.2. Самый надежный маршрут
М-р Разумник ежедневно ездит на работу на автомобиле. Закончив в свое время полный курс по теории исследования операций, он легко определил самый короткий путь от дома до работы. К сожалению, данный маршрут усиленно патрулируется нарядами полиции, и автомобиль Разумника часто останавливают за превышение скорости (как ему кажется, не обоснованно). Таким образом, самый короткий путь оказался не самым быстрым. Поэтому м-р Разумник планирует разработать новый маршрут, на котором он имел бы самую высокую вероятность не быть остановленным полицией. Схема сети дорог, по которой м-р Разумник может добраться от дома до работы, показана на рис. 6.10. На этой же схеме приведены вероятности не быть остановленным для каждого сегмента сети дорог. Вероятность не быть остановленным на всем пути следования автомобиля Разумника равна произведению вероятностей не быть остановленным на каждом сегменте выбранного пути. Например, вероятность не быть остановленным на маршруте 1—»3—»5—»7 равна 0,9 х 0,3 х 0,25 = 0,0675. Таким образом, м-ру Разумнику необходимо решить задачу выбора маршрута, который максимизировал бы вероятность не быть остановленным.
Рис. 6.10. Сетевая модель
Эту задачу можно сформулировать как задачу нахождения кратчайшего пути, если вместо вероятностей использовать логарифмы вероятностей. Тогда произведение вероятностей преобразуется в сумму логарифмов вероятностей: если рп=р1х-р2х... хрк — вероятность не быть остановленным на маршруте 1—>2—>к, тогда
log plk = log р, + log р2 +... + log рк.
С точки зрения математики задача максимизации вероятности р1к эквивалентна задаче максимизации величины \ogplk. Поскольку \ogpn<0, задача максимизации величины logpu эквивалентна задаче минимизации -logpu. Заменив на рис. 6.10 вероятности рк на величины -\ogpk, получаем сеть (рис. 6.11), к которой можно применить алгоритм определения кратчайшего пути.
Рис. 6.11. Сетевая модель для задачи поиска кратчайшего пути
6.3. Задача поиска кратчайшего пути
С помощью программы TORA находим кратчайший путь для полученной сети: 1-»3-»5-»7 с соответствующей "длиной" пути 1,1707 (=-logp17). Таким образом, максимальная вероятность не быть остановленным равнар17 = 0,0675.
Пример 6.3.3. Головоломка о трех бидонах
Восьмилитровый бидон заполнен некой жидкостью, а два бидона емкостью 5 и 3 литра пусты. Необходимо разделить 8 литров жидкости на две равные части, используя только три имеющихся бидона. Какое минимальное количество переливаний из бидона в бидон надо сделать, чтобы достичь желаемого результата?
Вы, вероятно, уже нашли решение этой головоломки. Вместе с тем ее можно решить как задачу о нахождении кратчайшего пути.
В этой сетевой модели каждый узел будет соответствовать объемам жидкости в 8-, 5- и 3-литровом бидонах. Начальным узлом будет (8, 0, 0), а конечным — (4, 4, 0). Новый узел получается из текущего при однократном переливании жидкости из одного бидона в другой.
На рис. 6.12 показаны различные маршруты, ведущие от начального узла (8, 0, 0) к конечному (4, 4, 0). Таким образом, наша головоломка сведена к задаче определения кратчайшего пути между узлами (8, 0, 0) и (4, 4, 0).
Рис. 6.12. Головоломка о трех бидонах как задача вычисления кратчайшего пути
Оптимальное решение, показанное в нижней части рис. 6.12, требует семи переливаний из бидона в бидон.
УПРАЖНЕНИЯ 6.3.1
1. Создайте заново модель замены оборудования из примера 6.3.1, предполагая, что автомобиль до замены должен эксплуатироваться не менее 2-х и не более 4-х лет. Стоимость замены автомобилей в 2001-2005 годах приведена в следующей таблице.
Глава 6. Сетевые модели
Стоимость замены (долл.) в зависимости от срока эксплуатации | |||
Год покупки | |||
— | |||
— | — |
2. На рис. 6.13 показана коммуникационная сеть между двумя приемно-передающими станциями 1 и 7. Возле каждой дуги этой сети указаны вероятности передачи сообщений без потерь по этим дугам. Необходимо найти маршрут от станции 1 к станции 7 с максимальной вероятностью успешной передачи сообщений. Сформулируйте эту задачу как поиск кратчайшего пути и решите ее с помощью программы TORA.
Рис. 6.13. Сеть для задачи из упражнения 2
3. Тостер старой конструкции имеет две подпружиненные дверцы на петлях, размещенные с ^обеих сторон тостера. Ломтик хлеба помещается в тостер с одной стороны и дверца закрывается, затем другой ломтик хлеба загружается в тостер с противоположной стороны. После того как одна сторона ломтика хлеба подрумянится, он переворачивается. Задача заключается в определении последовательности операций (помещение ломтика хлеба, поджаривание одной стороны, переворачивание ломтика в тостере и извлечение готового хлеба из тостера), необходимых для поджаривания трех ломтиков хлеба за минимально возможное время. Сформулируйте эту задачу как определение кратчайшего пути, используя следующие данные о времени вы-
полнения различных операций.
Операция Время (секунды) Помещение ломтика хлеба в тостер 3 Поджаривание одной стороны ломтика 30 Переворачивание ломтика в тостере 1 Извлечение ломтика из тостера 3
6.3. Задача поиска кратчайшего пути
4. Планирование производства. Компания продает некую продукцию, спрос на которую в следующие 4 месяца составит 100, 140, 210 и 180 единиц соответственно. Компания может удовлетворить любой помесячный спрос на продукцию и даже спрос на два и более месяцев вперед. В последнем случае необходимо платить 1,20 долл. за хранение единицы избыточно произведенной продукции в течение месяца. Покупная цена единицы продукции в следующие 4 месяца будет равна 15, 12, 10 и 14 долл. соответственно. Стоимость переналадки оборудования для выполнения заказа составляет 200 долл. Компания хочет разработать такой производственный план, чтобы минимизировать расходы на выполнение заказов, покупку продукции и ее хранение. Сформулируйте задачу как поиск кратчайшего пути и найдите ее оптимальное решение с помощью программы TORA.
5. Задача о рюкзаке. Путешественник, собираясь в путь, пытается поместить в свой рюкзак (объемом 5 кубических футов) наиболее необходимые в путешествии вещи. Есть три вещи, объемом соответственно 2, 3 и 4 кубических фута, необходимость в которых оценивается (по 100-балльной шкале) в 30, 50 и 70 баллов. Сформулируйте эту задачу как сетевую, где необходимо определить самый длинный путь, и найдите ее оптимальное решение. {Совет. Узел в этой сети можно определить как пару [i, и], где i — номер выбираемой вещи, a v — свободный объем рюкзака, оставшийся после выбора t-й вещи.)
6.3.2. Алгоритм определения кратчайшего пути
В этом разделе представлены два алгоритма для решения задачи поиска кратчайшего пути как в сетях, имеющих циклы, так и в сетях, не имеющих циклов.
1. Алгоритм Дейкстры.
2. Алгоритм Флойда.
Алгоритм Дейкстры разработан для поиска кратчайшего пути между заданным исходным узлом и любым другим узлом сети. Алгоритм Флойда более общий, поскольку он позволяет одновременно найти минимальные пути между любыми двумя узлами сети.
Алгоритм Дейкстры. В процессе выполнения этого алгоритма при переходе от £зла i к следующему узлу / используется специальная процедура пометки ребер. Обозначим через и, кратчайшее расстояние от исходного узла 1 до узла i, через dtj — длину ребра (г, j). Тогда для узла / определим метку [ujt i] следующим образом.
[Uj, i] = [ut + dh, i],d(/>0
Метки узлов в алгоритме Дейкстры могут быть двух типов: временные и постоянные. Временная метка впоследствии может быть заменена на другую временную, если будет найден более короткий путь к данному узлу. Когда же станет очевидным, что не существует более короткого пути от исходного узла к данному, статус временной метки изменяется на постоянный.
Вычислительная схема алгоритма состоит из следующих этапов.
Этап 0. Исходному узлу (узел 1) присваивается постоянная метка [0, —]. Полагаем i = 1.
Этап 1.
а) Вычисляются временные метки [и1 + dtj, i] для всех узлов у, которые можно достичь непосредственно из узла I и которые не имеют постоянных ме
Глава 6. Сетевые модели
ток. Если узел уже имеет метку [и, k], полученную от другого узла k, и, если ut + dtj < ujt тогда метка [uy, k] заменяется на \ul + dtj, i],
b) Если все узлы имеют постоянные метки, процесс вычислений заканчивается. В противном случае выбирается метка [ur, s] с наименьшим значением расстояния иг среди всех временных меток (если таких меток несколько, то выбор произволен). Полагаем i = г и повторяем этап i.
Пример 6.3.4
На рис. 6.14 показана транспортная сеть, состоящая из пяти городов (расстояния между городами (в милях) приведены возле соответствующих дуг сети). Необходимо найти кратчайшие расстояния от города 1 (узел 1) до всех остальных четырех городов.
(2\_ | ||
100/ \20, / \ 10/ | jT) \50 | |
СЛ 30»Vi | ||
V У V У | У | |
Рис. 6.14. Пример сети для алгоритма Дейкстры | ||
Этап 0. | Назначаем узлу 1 постоянную метку [0, —]. | |
Этап 1. | Из узла 1 можно достичь узлов 2 и 3. Вычисляем метки для этих узлов, в результате получаем следующую таблицу меток. | |
Узел | Метка | Статус метки |
[0,-] | Постоянная | |
[0 + 100, 1] = [100, 1] | Временная | |
[0 + 30, 1] = [30, 1] | Временная | |
>• Среди узлов 2 и 3 узел 3 имеет | наименьшее значение расстояния | |
(и3 = 30). Поэтому статус метки этого узла изменяется на " постоянная". | ||
Этап 2. | Из узла 3 (последнего узла с постоянной меткой) можно попасть в узлы 4 и 5. Получаем следующий список узлов. | |
Узел | Метка | Статус метки |
[0,-] | Постоянная | |
[100, 1] | Временная | |
[30, 1] | Постоянная | |
[30 + 10, 3] = [40, 3] | Временная | |
[30 + 60, 3] = [90, 3] | Временная |
6.3. Задача поиска кратчайшего пути
Временный статус метки [40, 3] узла 4 заменяется постоянным (ut = 40).
Этап 3. Из узла 4 можно достичь узлов 2 и 5. После вычисления меток получим следующий их список.
Узел Метка Статус метки
1 [0, —] Постоянная
2 [40 + 15, 4] = [55, 4] Временная
3 [30,1] Постоянная
4 [40,3] Постоянная
5 [90, 3] или [40 + 50, 4] = [90, 4] Временная
Временная метка [100, 1], полученная узлом 2 на втором этапе, изменена на [55, 4]. Это указывает на то, что найден более короткий путь к этому узлу (проходящий через узел 4). На третьем этапе узел 5 получает две метки с одинаковым значением расстояния иь = 90.
Этап 4. Из узла 2 можно перейти только в узел 3, но он уже имеет постоянную метку, которую нельзя изменить. Поэтому на данном этапе получаем такой же список меток, как и на предыдущем, но с единственным изменением: метка узла 2 получает статус постоянной. С временной меткой остается только узел 5, но, так как из этого узла нельзя попасть ни в какой другой, процесс вычислений заканчивается.
Алгоритм позволяет проводить вычисления непосредственно на схеме сети, как показано на рис. 6.15.
ШЮтт^) [55,4](3)
() = шаг
Рис. 6.15. Применение алгоритма Дейкстры
Кратчайший маршрут между узлом 1 и любым другим узлом определяется начиная с узла назначения путем прохождения их в обратном направлении с помощью информации, представленной в постоянных метках. Например, для определения кратчайшего маршрута между узлами 1 и 2 получаем такую обратную последовательность узлов
(2) -> [55, 4] -> (4) -> [40, 3] -> (3) -> [30, 1] -> (1). Таким образом, получаем путь 1 —> 3 —> 4 —> 2 общей длиной 55 миль.
Глава 6. Сетевые модели
Программа TORA также может применять алгоритм Дейкстры для решения сетевых задач. Для этого в меню SOLVE/MODIFY выберите команду Solve problem^ Iterations1^ Dijkstra's algoritm (Алгоритм Дейкстры). На рис. 6.16 показано выходное окно TORA с решением задачи из примера 6.3.4 (файл ch6ToraDijkstraEx6-3-4.txt).
netwofk MGDF1S
Рис. 6.16. Решение задачи из примера 6.3.4
УПРАЖНЕНИЯ 6.3.2
1. На рис. 6.17 показана транспортная сеть, соединяющая восемь городов, и расстояния между ними. Найдите кратчайшие маршруты между следующими городами.
a) Города 1 и 8.
b) Города 1 и 6.
c) Города 4 и 8.
d) Города 2 и 6.
2. Найдите кратчайшие пути между узлом 1 и всеми остальными узлами сети, представленной на рис. 6.18.
3. Найдите оптимальное решение задачи из упражнения 6.3.1.1.
4. Найдите оптимальное решение задачи из упражнения 6.3.1.2.
5. Найдите оптимальное решение задачи из упражнения 6.3.1.4.
6.3. Задача поиска кратчайшего пути
Рис. 6.17. Сеть для задачи из упражнения 1 6
Рис. 6.18. Сеть для задачи из упражнения 2
Алгоритм Флойда. Этот алгоритм более общий по сравнению с алгоритмом Дейкстры, так как он находит кратчайшие пути между любыми двумя узлами сети. В этом алгоритме сеть представлена в виде квадратной матрицы с п строками и п столбцами. Элемент (£, /) равен расстоянию dtj от узла i к узлу /, которое имеет конечное значение, если существует дуга (i, j), и равен бесконечности в противном случае.
Покажем сначала основную идею метода Флойда. Пусть есть три узла i, j и k и заданы расстояния между ними (рис. 6.19). Если выполняется неравенство dtj + djk < dllt, то целесообразно заменить путь i -> k путем i->;->ft. Такая замена (далее ее будем условно называть треугольным оператором) выполняется систематически в процессе выполнения алгоритма Флойда.
Рис. 6.19. Треугольный оператор Флойда Алгоритм Флойда требует выполнения следующих действий.
Этап 0. Определяем начальную матрицу расстояний D0 и матрицу последовательности узлов S0. Диагональные элементы обеих матриц помечаются знаком "—", показывающим, что эти элементы в вычислениях не участвуют. Полагаем k = l.
Глава 6. Сетевые модели
1 2... j... п
— | di2 | dyn | |||
— | d2j | ||||
dn | da | dm | |||
dn2 | dnj | — |
1 2... j... л
So =
— | j | n | ||||
j | n | |||||
/' | j | n | ||||
л | j | — |
Основной этап к. Задаем строку k и столбец k как ведущую строку и ведущий столбец. Рассматриваем возможность применения треугольного оператора ко всем элементам dtj матрицы Dk_r Если выполняется неравенство
dik + dkj < d,j> (i*k,j*kni*j), то делаем следующее:
a) создаем матрицу Dk путем замены в матрице элемента dtj суммой dlk + dkj,
b) создаем матрицу Sk, меняя в матрице S4_j элемент s, на h. Полагаем k — k + 1 и повторяем этап k.
Поясним действия, выполняемые на k-м этапе алгоритма, представив матрицу _Dk_j так, как она показана на рис. 6.20. На этом рисунке строка k и столбец k являются ведущими. Стро-ка i— любая строка с номером от 1 до А - 1, а строка р — произвольная строка с номером от k + 1 до п. Аналогично столбец / представляет любой столбец с номером от 1 до k - 1, а столбец q — произвольный столбец с номером от k + 1 до п. Треугольный оператор выполняется следующим образом. Если сумма элементов ведущих строки и столбца (показанных в квадратиках) меньше элементов, находящихся на пересечении столбца и строки (показаны в кружках), соответствующих рассматриваемым ведущим элементам, то расстояние (элемент в кружке) заменяется суммой расстояний, представленных ведущими элементами.
После реализации п этапов алгоритма определение по матрицам Dn и Sn кратчайшего пути между узлами i и j выполняется по следующим правилам.
1. Расстояние между узлами i и j равно элементу dtJ в матрице Dn.
2. Промежуточные узлы пути от узла i к узлу j определяем по матрице Sn. Пусть s0 = k, тогда имеем путь i —> k —> /. Если далее slk = k и skj = j, тогда считаем, что весь путь определен, так как найдены все промежуточные узлы. В противном случае повторяем описанную процедуру для путей от узла i к узлу k и от узла k к узлу
6.3. Задача поиска кратчайшего пути
Столбец j
Строка i
Ведущая строка
Строка р
Ведущий столбец
к
Столбец Q
Рис. 6.20. Реализация треугольного оператора
Пример 6.3.5
Найдем для сети, показанной на рис. 6.21, кратчайшие пути между любыми двумя узлами. Расстояния между узлами этой сети проставлены на рисунке возле соответствующих ребер. Ребро (3, 5) ориентированно, поэтому не допускается движение от узла 5 к узлу 3. Все остальные ребра допускают движение в обе стороны.
Рис. 6.21. Сеть для примера 6.3.5
ЭтапО. Начальные матрицы D0 и S0 строятся непосредственно по заданной схеме сети. Матрица D0 симметрична, за исключением пары элементов и d53, где d63 = се (поскольку невозможен переход от узла 5 к узлу 3).
Do 3 | So 3 | ||||||||||
— | СО | со | |||||||||
— | со | ||||||||||
со | — | — | |||||||||
СО | — | ||||||||||
со | — |
Глава 6. Сетевые модели
Этап 1. В матрице D0 выделены ведущие строка и столбец с номером k = 1.
Затемненными представлены элементы d23 и d32, единственные среди элементов матрицы D0, значения которых можно улучшить с помощью треугольного оператора. Таким образом, чтобы на основе матриц D0 и S0 получить матрицы D, и Sv выполняем следующие действия.
1. Заменяем d23 на d2X + dl3 = 3 + 10 = 13 и устанавливаем s23 = 1.
2. Заменяем d32 на d3l + dl2 = 10 + 3 = 13 и устанавливаем s32 = 1. Матрицы D, и S, имеют следующий вид.
D, 3 | Si 3 | ||||||||||
ОС | — | ||||||||||
— | — | ||||||||||
— | — | ||||||||||
.00 | — | — | |||||||||
— | — |
Этап 2. Полагаем k = 2; в матрице D; выделены ведущие строка и столбец. Треугольный оператор применяется к элементам матриц D, и выделенным затенением. В результате получаем матрицы D2 и S2.
D2 3 | s2 | ||||||||||
— | X | — | |||||||||
— | X | — | |||||||||
i:13v: | — | — | |||||||||
— | — | ||||||||||
— | — |
Этап 3. Полагаем k = 3; в матрице D2 выделены ведущие строка и столбец.
Треугольный оператор применяется к затемненным элементам матриц D2 и S2. В результате получаем матрицы D3 и S3.
D3 3 | S3 3 | ||||||||||
— | — | ||||||||||
— | — | ||||||||||
— | — | ||||||||||
— | — | ||||||||||
ой | — | . 1 | — |
6.3. Задача поиска кратчайшего пути
Этап 4. Полагаем k = 4, ведущие строка и столбец в матрице D3 выделены. Получаем новые матрицы Dt и S4.
Da 3 | s4 | ||||||||||
— | — | ||||||||||
— | — | ||||||||||
— | — | ||||||||||
— | — | ||||||||||
— | — |
Этап 5. Полагаем k — 5, ведущие строка и столбец в матрице Б4 выделены.
Никаких действий на этом этапе не выполняем; вычисления закончены.
Конечные матрицы £>4 и St содержат всю информацию, необходимую для определения кратчайших путей между любыми двумя узлами сети. Например, кратчайшее расстояние между узлами 1 и 5 равно diS = 12.
Для определения соответствующих маршрутов напомним, что сегмент маршрута (i,j) состоит из ребра (/,_/) только тогда, когда stj = j. В противном случае узлы i и j связаны, по крайней мере, через один промежуточный узел. Например, поскольку s,5 = 4 и siS = 5, сначала кратчайший маршрут между узлами 1 и 5 будет иметь вид 1 -» 4 -» 5. Но так как д-,4 ф 4, узлы 1 и 4 в определяемом пути не связаны одним ребром (но в исходной сети они могут быть связаны непосредственно). Далее следует определить промежуточный узел (узлы) между первым и четвертым узлами. Имеем su — 2 и s2i = 4, поэтому маршрут 1 -» 4 заменяем 1 -» 2 —> 4. Поскольку д-,2 = 2 hj24 = 4, других промежуточных узлов нет. Комбинируя определенные сегменты маршрута, окончательно получаем следующий кратчайший путь от узла 1 до узла 5:1-»2-»4-»5. Длина этого пути равна 12 милям.
Дата публикования: 2014-11-18; Прочитано: 1235 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!