Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вагнер Г. Основы исследования операций [PDF] / Вагнер_Основы исследования операций_т1

.pdf
Скачиваний:
86
Добавлен:
02.05.2014
Размер:
6.68 Mб
Скачать

310

 

ГЛАВА

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 нулевых переменных (маршрутов). Это обстоятельство приводит к выводу, что применение симплексного алгоритма не обеспечивает в полной мере учета особой структуры модели назначений. В данном разделе будут изложены три отличных от симплексного метода решения задачи о назначениях.

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

318

ПРИЛОЖЕНИЕ I

 

маршрута. Эти методы иллюстрируются

на примере, решение кото-

рого вначале

определяется с помощью

симплексного алгоритма,

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

модели других

классов.

 

 

 

 

 

 

 

Симплексный алгоритм. Рассмотрим задачу о назначениях,

усло-

вия которой приведены на рис. 1.4.

Если

применить

метод

выбора

исходного

решения,

изложенный

в разд. 7.4,

для

вычи-

^J /

м л]

 

_^J

 

 

 

Cij-D-i-Ш}

 

V

 

 

 

 

 

 

 

 

 

 

 

ж\ а L/*J

/

20\

0

_£j

0

 

1

1

4

0

0

 

a

0

D

0

9

 

 

 

 

 

 

 

 

 

 

 

 

15]

liJ

 

26\

1

jo]

 

 

4

5

5

0

W

 

 

 

 

jj

 

 

 

 

 

 

 

 

 

 

 

 

 

12\

2f\

 

27\

 

;

 

3

8

8

0

8

 

1

 

1

 

 

VJ

1

9

U

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P и с. 1.4. Исходное базисное решение задачи о назначениях. (Общие затраты = 54.)

Р п с. 1.5. Относительные оценки модели назначений: c-tj V; wj.

сления относительных оценок, то

получим

значения,

приведен-

ные на рис. 1.5.

Исходный базис

показан

на

рис.

1.4.

Отметим,

что три маршрута

(во второй строке) имеют

нулевые

значения пере-

менных, что указывает на вырожденность. Можно проследить за всеми итерациями, рассмотрев рис. 1.6—1.12, содержащие последовательности полученных оценок и пробные решения. Отметим также, что значение целевой функции не меняется вплоть до отыскания последнего решения.

Метод, основанный на алгоритме максимального потока. Другой метод решения задачи о назначениях базируется на алгоритме отыскания максимального потока, который рассмотрен в предыдущем разделе. Кроме того, этот метод связан с соображениями, по сути дела близкими к идее отыскания хорошего исходного решения, которая изложена в разд. 7.4 (стр. 284).

Алгоритм сводится к следующим шагам.

Шаг 1. При заданных оценках строк vt, i = 1, 2, . . ., п, и столбцов Wj, / = 1, 2, . . ., п, дающих неотрицательные относительные оценки (ctj vt — Wj) ^0, определяется, существует ли допустимое решение, в которое входят только маршруты с нулевыми относительными оценками. В случае положительного ответа на этот вопрос — останов, так как решение оптимально. В противном случав осуществляется переход к шагу 2.

LLl a

Ш

 

15]

 

 

 

"{

 

 

 

 

 

 

 

M

 

-8

 

 

 

 

 

0

 

-3

1

 

 

 

 

1

ID]

 

IS]

 

20]

 

L£j

 

0

1

 

 

 

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

!

js]

 

 

 

 

0

1

0

 

 

24j

 

2S]

 

10\

 

 

 

i

a

0

5

6

 

 

1

0

1

Д]

 

25]

 

27\

_iJ

 

-1

 

 

 

1

1

3

- s

 

-8

ff

 

 

 

 

 

 

 

 

 

 

10

18

20

 

 

 

1

1

1

1

 

Р и с.

1.6.

Оценки

маршрутов

3 и c. 1.7. Второе базисное pe-

исходного

решения

модели

на-

ление задачи

о назначениях.

значений.

 

 

 

 

 

 

 

Общие затраты = 54 — 5-0 =

 

 

 

 

 

 

 

 

 

= 54.)

 

 

 

 

LLl

0

10]

0

15]

-3

\^]

-8

 

 

 

-4

10]

а

18]

0

20]

0

А]-5

0

11]

1

24J

0

26]

0

10]

6

 

 

 

А] 0

12]

25]

21]

$

 

2

 

-3

 

0

 

10

18

20

 

 

Р и с. 1.8. Оценки маршрутов второго решения задачи о наз-

начениях.

^

0 10]

 

15]

0\

2

-1

Л]

 

20]

А]

 

JO]

 

 

 

 

0

_п

0

0

-5

 

 

 

15]

Jil

 

26]

М

6

-1

0

0

0

 

J2]

~25\

 

27]

^] 0

4

 

а.

 

 

Ч 8

 

IS

20

4

 

Р и с.

1.10.

Оценки

маршрутов

третьего

решения

задачи о

назна-

чениях.

 

 

 

 

 

/

 

 

 

1

 

1

0

 

1

 

 

1

о

1

/7

 

 

1

1

1

1

1

1

 

3 и с. 1.9. Третье базисное репение задачи о назначениях. Общие затраты = 54 — 2-0 = = 54.)

 

1

 

 

1

 

О

1

 

1

 

 

0

1

 

1

 

 

0

1

1

1

1

1

 

Р и с. 1.11. Оптимальное базисное решение задачи о назначениях. (Общие затраты = = 54- 2-1 = 52.)