Вагнер Г. Основы исследования операций [PDF] / Вагнер_Основы исследования операций_т1
.pdf310 |
|
ГЛАВА |
7 |
|
66. Рассмотрите ациклическую сеть (рис. 7.23), содержащую |
||||
пять узлов и дугу из каждого узла i |
(i = 2, 3, 4, 5) в каждый узел ;, |
|||
где / <С i. Пусть Сц = |
i -f- (i — ])г. |
Найдите кратчайшие маршруты |
||
из всех узлов i в узел 1 |
и определите их длину. |
|
||
67. |
Рассмотрите ациклическую |
сеть, показанную |
на рис. 7.24. |
|
Числа, |
проставленные |
над дугами, |
определяют их |
длину с^. |
Р и с . 7.24.
а) Пронумеруйте узлы с помощью алгоритма, изложенного в начале разд. 7.7.
б) Найдите кратчайшие маршруты из всех узлов в узел 1 и определите их длину.
в) Найдите максимальные маршруты из всех узлов в узел 1 и определите их длину.
68. Замена оборудования. Примените алгоритм отыскания кратчайшего маршрута, изложенный в разд. 7.7, для решения задачи компании «Таксолюкс», приведенной в п. г) упражнения 15 гл. 6.
69. Замена оборудования. Рассмотрите задачу фирмы «Резвая фреза», приведенную в упражнении 41 гл. 6.
а) Примените алгоритм отыскания кратчайшего маршрута, изложенный в разд. 7.7, для определения оптимальной стратегии замены.
б) Определите диапазон изменения величины р2 (стоимости новой модели на интервале 2), в котором стратегия, найденная в задаче п. а), остается оптимальной. Выполните это же задание
для рз> pt, р5.
в) Определите диапазон изменения величины г2 (затрат на эксплуатацию единицы оборудования в течение второго последовательного интервала его использования), в котором стратегия, найденная в задаче п. а), остается оптимальной. Выполните это же задание
для г3, г4, г5.
70. Замена оборудования. Рассмотрите сеть, приведенную на рисунке 6.10. Дайте интерпретацию величин, последовательно вычисляемых с помощью алгоритма (1) — (2), изложенного в разд. 7.7, через величины, фигурирующие в этой сети.
|
АЛГОРИТМЫ РЕШЕНИЯ СЕТЕВЫХ ЗАДАЧ |
311 |
||
71. Рассмотрите |
задачу, приведенную в упражнении 43, но при |
|||
условии S( = Dj = |
1 для всех i и/'. |
|
||
а) Решите |
задачу |
транспортным симплексным методом. |
|
|
б) Решите задачу с помощью алгоритма отыскания максималь- |
||||
ного потока, изложенного в разд. 1.2. |
|
|||
в) Решите |
задачу |
с помощью алгоритма минимальной |
стоимо- |
|
сти/максимального |
потока, изложенного в разд. 1.2. |
|
г) Решите задачу с помощью алгоритма отыскания кратчайшего маршрута, изложенного в разд. 1.2.
72. Рассмотрите задачу, приведенную в упражнении 44, но при условии Si = Dj = 1 для всех i и ;'.
а) Решите задачу транспортным симплексным методом.
б) Решите задачу с помощью алгоритма отыскания максимального потока, изложенного в разд. 1.2.
в) Решите задачу с помощью алгоритма минимальной стоимости/максимального потока, изложенного в разд. 1.2.
г) Решите задачу с помощью алгоритма отыскания кратчайшего маршрута, изложенного в разд. 1.2.
73. Рассмотрите задачу, приведенную в упражнении 45, но при условии Si = DJ = 1 для всех г и ;'.
а) Решите задачу транспортным симплексным методом.
б) Решите задачу с помощью алгоритма отыскания максимального потока, изложенного в разд. 1.2.
в) Решите задачу с помощью алгоритма минимальной стоимости/максимального потока, изложенного в разд. 1.2.
г) Решите задачу с помощью алгоритма отыскания кратчайшего маршрута, изложенного в разд. 1.2.
74.Решите транспортную задачу, приведенную в упражнении 43, пользуясь алгоритмом определения максимального потока, изложенным в разд. 1.3.
75.Решите транспортную задачу, приведенную в упражнении 44, пользуясь алгоритмом определения максимального потока, изло-
женным в разд. 1.3.
76. Решите транспортную задачу, приведенную в упражнении 45, пользуясь алгоритмом определения максимального потока, изложенным в разд. 1.3.
УПРАЖНЕНИЯ ПОВЫШЕННОЙ ТРУДНОСТИ
Упражнения 77—81 относятся к транспортным задачам с промежуточными пунктами. Рассмотрите каждый пример на сети общего вида в соответствии с правилами (1) — (4), приведенными в конце разд. 7.4, и начертите соответствующую сеть. В некоторых задачах для соблюдения равенства (4) может оказаться необходимым введение фиктивного узла. Можно выполнять вычисления по симплекс-
312 ГЛАВА 7
ному методу непосредственно на сети, не прибегая к помощи как редуцированной, так и расширенной матрицы.
Прежде всего найдите исходное базисное решение. Добейтесь того, чтобы в нем использовалось р — 1 дуг, где р — число узлов сети, и чтобы сетевая модель не содержала замкнутых контуров. (Иными словами, выберите дерево, соответствующее допустимому базисному решению. В пробном решении по некоторым из выбранных дуг могут иметь место нулевые потоки.)
Далее с помощью р — 1 уравнений z/j — у, = сц вычислите
соответствующие значения двойственных |
переменных j/fe, k = 1, 2, ... |
|
. . ., р; для каждого маршрута |
(г, /) в |
пробном базисном решении |
используется одно уравнение. |
(Примите г/i = 0.) Проверьте, допу- |
стимо ли решение двойственной задачи, т. е. выполняется ли условие 4 разд. 7.4. Прекратите вычисления, если все двойственные ограничения удовлетворяются. Найденное при этом решение оптимально. В противном случае введите новый маршрут, соответствующий двойственному ограничению, нарушенному сильнее всего. Направьте такой поток по этому новому маршруту, чтобы один из маршрутов в предыдущем пробном решении не содержал потока и, следовательно, исключался из базиса. Повторите проверку на оптимальность. В случае необходимости продолжите вычисления по ука-
занной |
схеме. |
77. |
Решите задачу, приведенную в упражнении 51. |
78. |
Решите задачу, приведенную в упражнении 52. |
79. |
Решите задачу, приведенную в упражнении 56. |
80. |
Решите задачу, приведенную в упражнении 57. |
81. |
Решите задачу, приведенную в упражнении 58. |
82. |
Объясните, как следует модифицировать изложенный выше |
алгоритм, |
чтобы учесть ограничения по |
пропускной способности |
ха ^uiji |
гДе utj —положительные целые |
числа. |
Решите |
указанные ниже задачи, пользуясь симплексным алго- |
ритмом для транспортной задачи с ограниченньши пропускными
способностями, |
рассмотренным в разд. 7.4. |
|
|||
i |
и |
83. |
Задача, |
приведенная в упражнении 43, при иц = 2 для всех |
|
}. |
|
|
|
||
|
|
84. |
Задача, приведенная в упражнении 44, при u t j = 3 |
для всех |
|
i |
и |
jf. |
|
|
|
|
|
85. |
Задача, приведенная в упражнении 45, при иц — 5 |
для всех |
|
i |
и ;. |
|
|
|
ПРИЛОЖЕНИЕ I
Алгоритмы решения сетевых задач
1.1.МАКСИМАЛЬНЫЙ ПОТОК В СЕТИ
СОГРАНИЧЕННЫМИ ПРОПУСКНЫМИ СПОСОБНОСТЯМИ
Для разработки эффективных методов решения для сложных сетевых моделей важнейшую роль играет следующая задача: какова максимальная величина потока из источника в сток для заданной сети с ограниченными пропускными способностями дуг, в которой узел 0 является единственным источником, а узел р — 1 является единственным стоком? Математически задача формулируется следующим образом:
максимизировать F |
(1) |
при ограничениях |
|
|
|
|
|
S |
xOJ =F, |
A=0, |
. |
(2) |
|||
|
|
|
(0,з) еоети |
|
|
|
|
|
|
||
|
|
S |
XHJ- |
S |
*/А = 0, |
|
A = l , 2, . . . , / > , |
(3) |
|||
|
|
(ft,j) 6 сети |
(i,ft) g сети |
|
|
|
|
|
|||
|
|
|
S |
|
xi.P+1=-F,k =p + l, |
|
(4) |
||||
|
|
|
(г,р+1)£ |
сети |
|
|
|
|
|
|
|
|
|
0 ^ Xij =£C |
utj |
для |
всех |
|
(i, ;') £ сети, |
|
(5) |
||
где |
Uij |
— неотрицательные |
целые |
числа. |
|
|
|||||
|
Для решения этой задачи можно использовать довольно простой |
||||||||||
метод. Чтобы основная идея алгоритма |
стала ясной, |
примем |
|
||||||||
|
|
utj = 1 |
|
для |
всех |
(i, |
|
jf) £ сети. |
|
(6) |
|
|
Если освоить метод решения данной |
задачи при |
условии (6), |
||||||||
то |
не |
возникнет |
никаких |
трудностей |
в |
понимании |
модификации |
алгоритма, требующейся для отыскания решения в общем случае. Начнем с любого допустимого потока. Является ли поток максимальным или возможно его дальнейшее увеличение, можно опреде-
лить следующим образом:
Шаг 1. Начиная с узла 0, поставить знак + на каждой дуге (О, /) с нулевым потоком, а узел j пометить знаком \/. Узел 0 поме-
тить знаком V •
Шаг 2. Рассмотреть любой узел /, помеченный знаком V • Поставить знак + на каждой дуге (/, k) с нулевым потоком, исходящей из узла /, если узел k не помечен, и пометить узел k знаком V • Затем проставить знак — на каждой дуге (k, j) с ненулевым потоком, входящей в узел /, если узел k не помечен, и пометить узел k зна-
314 |
ПРИЛОЖЕНИЕ I |
|Д^Х И
Конечный
пункт
Р и с. 1.1. |
Пример |
задачи |
о |
максимальном |
|
||||
потоке. |
|
|
|
|
|
|
|
|
|
ком V • В конце шага |
2 зачеркнуть знак |
V У узла /, что указывает |
|||||||
на то, что этот узел был также просмотрен. |
|
|
|
||||||
Шаг 3. Повторять операции шага 2, пока не будет помечен узел |
|||||||||
р -\- 1 или все помеченные узлы не будут просмотрены. Как |
только |
||||||||
проставляется пометка у |
узла р -f 1, происходит |
прорыв, так как |
|||||||
при этом обнаруживается |
путь, |
увеличивающий |
поток, из |
узла О |
|||||
в узел р + 1- Этот путь |
можно выявить |
в явном виде с помощью |
|||||||
знаков + или —, проставленных |
на |
дугах, |
просматривая |
узлы |
|||||
в обратном направлении, |
начиная |
с узла р -\- |
1. Добавить |
единич- |
|||||
ный поток по каждой |
дуге, помеченной |
знаком |
-{-, и уменьшить |
на единицу поток по каждой дуге, помеченной знаком —. Вернуться к шагу 1. Однако, если по окончании шага 2 узел р -+- 1 остается непомеченным, текущее решение определяет максимальный поток в сети.
Работа алгоритма иллюстрируется на примере, приведенном на рис. 1.1. В исходном решении величина потока в сети равна двум единицам. Существует несколько вариантов реализации рассматриваемого алгоритма. Проследите за ходом излагаемого ниже варианта, делая легкие карандашные пометки на рисунке.
1) |
Просмотреть узел 0: поставить знак -f- на дугах (0, 4) и (0, 5) |
||
и пометить узлы 4 и 5 знаком Д. Поставить знак Д у узла 0. |
|||
2) |
Просмотреть узел |
5: поставить знак |
— на дуге (3, 5) и поме- |
тить |
узел 1 знаком Д. |
Поставить знак Д |
у узла 5. |
3) |
Просмотреть узел |
3: поставить знак |
— на дуге (1, 3) и поме- |
тить |
узел 3 знаком Д. Поставить знак Д у узла 3. |
||
4) |
Просмотреть узел |
1: поставить знак |
-f- на дуге (1, 2) и поме- |
тить |
узел 2 знаком Д. |
Поставить знак Д у узла 1. |
|
5) |
Просмотреть узел |
2: поставить знак + на дуге (2, 6) и поме- |
|
тить |
узел 6 знаком Д. |
Путь, увеличивающий поток, обнаружен. |
АЛГОРИТМЫ РЕШЕНИЯ СЕТЕВЫХ ЗАДАЧ |
315 |
Источник
Сток
Поток= 2 Одна евиниа,а: Одна единица\(о
Р и с . 1.2. Процесс просмотра сети.
|
Паток^З |
|
|
|
|
|
|
единица: |
|
|
|
|
Одна |
единица; |
|
|
|
|
Одна |
единица'. |
|
|
|
|
Р п с. 1.3, Решение |
задачи о максимальном потоке. |
|||
Читателю предлагается |
сопоставить |
полученные |
результаты |
||
с рис. 1.2. Таким образом, решение улучшается, если: |
|
||||
1) |
добавить единичный поток по дугам |
(2, 6) и (1, 2); |
|||
2) |
уменьшить |
на единицу |
поток по дугам (1, 3) и |
(3, 5); |
3) добавить единичный поток по дуге (0, 5).
Новое решение приведено на рис. 1.3. Повторив все шаги алгоритма, покажите, что теперь поток максимален. Последовательность
316 ПРИЛОЖЕНИЕ I
просматриваемых узлов включает узлы 0, 4 и 5. Ни один другой узел
пометить |
уже невозможно. |
|
|
Чтобы |
снять ограничение (6) на пропускную |
способность |
дуг, |
в алгоритм вносятся следующие изменения. При |
просмотре |
сети |
на каждой исходящей ненасыщенной дуге, т. е. дуге, пропускная способность которой превышает величину дугового потока, ставится знак +. Далее, когда путь, увеличивающий поток, обнаруживается, по этому пути направляется максимально допустимый поток с учетом величины недоиспользованной пропускной способности каждой дуги, помеченной знаком +> и текущей величины дуговых потоков по каждой дуге, помеченной знаком —. Таким образом, при решении
задачи о максимальном потоке (1) — (5) работа алгоритма |
заканчи- |
|
вается в соответствии |
со следующим правилом останова. |
|
П р а в и л о о с т |
а н о в а . Поток по дуге, исходящей |
из про- |
смотренного узла и входящей в помеченный узел, равен ее пропускной способности, а поток по дуге, исходящей из непомеченного узла и входящей в просмотренный узел, равен нулю.
На каждой итерации выполнение шага 3 приводит либо к увеличению потока в сети на одну или более единиц, либо к останову. Вследствие этого алгоритм сходится за конечное число итераций, ибо максимальный допустимый поток ограничен сверху. Теперь остается только показать, что при завершении симплекс-процедуры решение действительно является оптимальным. С этой целью разобьем
все узлы |
сети |
на два непересекающихся подмножества, скажем С0 |
|
и CP+I. Узел 0 |
включим в подмножество С0, а узел р + 1 — в под- |
||
множество Ср+1. Такое разбиение называется разрезом. Пропускную |
|||
способность разреза определим как сумму пропускных способностей |
|||
HIJ всех |
дуг, |
таких, что узел i принадлежит |
подмножеству Со, |
а узел j |
— подмножеству Cp+i. |
|
|
Пропускная |
способность разреза при любом |
разбиении узлов |
на указанные подмножества определяет верхнюю границу максимально возможной величины потока в сети. (Если пропускная способность разреза равна нулю, то узел 0 в буквальном смысле отделен от узла р ~\- 1 и поток из источника в сток оказывается невозможным.) Следовательно, если допустимый поток равен пропускной способности любого разреза, то он должен быть оптимальным. Кроме того, в силу ограничений (2), (3) и (4), определяющих условия сохранения потока, значение F в любом допустимом решении должно быть равно сумме потоков по всем дугам (i, j) минус сумма всех потоков по дугам (;', i), где узел i содержится в подмножестве С0, а узел / — в подмножестве Cp+i-
Учитывая все эти замечания, легко доказать оптимальность. Рассмотрим некоторое допустимое решение при остановке алгоритма. Определим С0 как подмножество всех просмотренных узлов, a Cp+i как подмножество всех остальных узлов. В соответствии с правилом останова поток из любого узла, принадлежащего подмножеству
АЛГОРИТМЫ РЕШЕНИЯ СЕТЕВЫХ ЗАДАЧ |
317 |
CP+I, в любой узел, принадлежащий подмножеству С0, равен нулю. Поэтому общая величина потока в сети равна сумме потоков по всем дугам, исходящим из подмножества Со и входящим в подмножество Cp+i. Всем этим дугам соответствуют потоки, равные их пропускным способностям. Следовательно, общая величина потока в найденном решении равна пропускной способности разреза, и дальнейшее увеличение потока оказывается уже невозможным.
Приведенные рассуждения резюмируются в виде следующей важной теоремы.
Т е о р е м а о м а к с и м а л ь н о м п о т о к е/ми н и м а л ь- н о м р а з р е з е . Максимальная величина потока F в любой сети при условиях (2) — (5) равна минимальной пропускной способности разреза, отделяющего источник от стока.
Из этой теоремы вытекает следствие о том, что алгоритм дает целочисленные значения всех величин xtj.
1.2. РЕШЕНИЕ ЗАДАЧИ О НАЗНАЧЕНИЯХ
Вспомним модель назначений, подробно рассмотренную в разд. 6.4:
п п |
|
минимизировать 2 Sсихи |
(1) |
г=1 3=1 |
|
при ограничениях |
|
|
(2) |
3=1 |
|
г=1 |
(3) |
|
|
Хц = 0 или 1 при всех i и /. |
(4) |
В силу характера задачи допустимое решение содержит ровно п переменных, равных единице, тогда как любое базисное решение включает п -}- п — i переменных. Следовательно, при применении симплексного алгоритма решения сетевых задач к модели назначений (1) — (4) каждый базис содержит п — 1 нулевых переменных (маршрутов). Это обстоятельство приводит к выводу, что применение симплексного алгоритма не обеспечивает в полной мере учета особой структуры модели назначений. В данном разделе будут изложены три отличных от симплексного метода решения задачи о назначениях.
Первый метод основан на использовании алгоритма отыскания максимального потока, рассмотренного в предыдущем разделе; второй — на объединении алгоритмов отыскания максимального потока и кратчайшего маршрута. Третий метод еще глубже раскрывает связь между задачей о назначениях и задачей выбора кратчайшего