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

книги / Математические методы принятия решений

..pdf
Скачиваний:
2
Добавлен:
13.11.2023
Размер:
22.94 Mб
Скачать

(максимальным) остовом графа {сети) называют дерево с мини­ мальным (максимальным) весом среди всех связующих деревьев этого графа. Вес дерева определяют как сумму весов (длин) его дуг. Весом (длиной) дуги называют число, соответствующее некоторой характеристике дуги (расстоянию, стоимости и т. п.). Каждой ду­ ге Ац (или (г, j)) ставят в соответствие положительное число 6^ , называемое пропускной способностью дуги (ребра).

В сети выделяют два специальных узла: один из них называют

источником N$, а другой — стоком Nt-

Сеть можно рассматривать как водопроводную систему, в ко­ торой трубы соответствуют дугам, источник воды — источнику Na, сток воды —стоку Nt, а соединения между трубами — остальным узлам сети. В качестве пропускной способности дуги выступает по­ перечное сечение трубы.

Потоком из источника Ns (или s) в сток Nt (или t) сети назы­ вают множество неотрицательных чисел хц, поставленных в соот­ ветствие некоторой дуге сети, если эти числа удовлетворяют следу­

ющим линейным условиям-ограничениям:

 

 

 

v,

если

j

= s,

 

 

О,

если

j

Ф s ,j Ф t,

(3.1)

 

v,

если

j

= t,

 

v ^ O , 0 ^ Xij' I J

<

u l j l

6

N.

(3.2)

 

^

b^, г, j

 

 

 

Здесь первая сумма берется по дугам, ведущим в узел N j, а вторая сумма —по дугам, ведущим из узла N j. Неотрицательное число v называют величиной потока. Число называют потоком по ду­ ге Aij, или дуговым потоком. Ограничения (3.1) выражают тот факт, что в каждый узел (кроме источника и стока) приходит столь­ ко потока, сколько из него уходит (условие сохранения потока). Ограничение (3.2) означает, что поток Zÿ по дуге ограничен про­

пускной СП О СО бнО СТЬЮ ДУГИ bij.

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

г> = 2 x Sj при условиях-ограничениях (3.1), (3.2). Однако в силу j

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

Если сеть является цепью N \, А2, N 2, . . . ,

Nk с источником Ni

и стоком Nk, максимальная величина потока,

который может быть

пропущен через сеть, ограничивается минимальной пропускной способностью дуг этой сети. Дуга с минимальной пропускной спо­ собностью является узким местом в сети. В произвольной сети узкое место определяют разрезом. Пусть X некоторое подмноже­ ство узлов сети, X — дополнение подмножества X (объединение X и X определяет множество узлов сети). Разрезом {X, X ) называют множество всех дуг Aij, для которых Ni е X , Nj е X . Таким обра­ зом, разрез представляет собой множество дуг, удаление которых из сети превращает сеть в несвязанную. Разрез (X , X ) называют

разделяющим узлы N s и Nt (или отделяющим узел N s от узла iVt),

если N s е Х , Nt е X . Пропускной способностью

с(Х , X ) разре­

за, или величиной разреза, называют сумму 2 h j,

которую берут

 

_

по всем ориентированным дугам, соединяющим Nie X и Nj е X. При определении разреза учитывают все дуги между узлами под­ множества X и подмножества X , а при определении пропускной способности разреза —только пропускные способности дуг, соеди­ няющих узлы N ie X с узлами Nj е X, ориентированные дуги, соединяющие узлы N ie X с узлами Nj е X , не учитывают. По­ этому в общем случае с(Х , X ) ф с(Х , X).

Ясно, что в силу ограничений (3.1), (3.2) максимальный поток меньше или равен пропускной способности любого разреза, разде­

ляющего Ns и Nt'.

 

v ^

XV ~ 2 xji'

NteX

NieX

NjeX

NjeX

Влюбой сети величина максимального потока из источника Ns

всток Nt всегда равна минимальной пропускной способности всех

разрезов, разделяющих Ns и Nt. Разрез, разделяющий Ns и Nt и обладающий минимальной пропускной способностью, называют минимальным разрезом. Эти утверждения объединены в теореме о максимальном потоке и минимальном разрезе.

Обозначим через Fst множество неотрицательных чисел х ^ , удовлетворяющих ограничениям (3.1), (3.2). Будем называть путь из N s в Nt увеличивающим поток Fst, если Xij < bij на всех пря­ мых дугах и х ^ > 0 на всех обратных дугах этого пути. Поток Fst максимален тогда и только тогда, когда не существует пути, увели­ чивающего поток Fst■

Величина максимального потока в любой сети принимает, безусловно, единственное значение. Однако могут существовать несколько различных максимальных потоков Fst, имеющих оди­ наковые значения. Могут существовать и несколько минимальных разрезов в сети.

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

71

O i j X j ^ Ь{, î — 1 , 2 , . . . , 771, X j ^ 0 , j = 1 , 2 , . . . , п ,

j = 1

всегда имеет целочисленное оптимальное решение при любом це­ лочисленном векторе ограничений b = {b\,bz,..., Ьт)Т, если матрица (прямоугольная таблица чисел)

 

( а\\

ап

&\п ^

А =

а>2\

Ü22

&2п

 

 

 

 

\&т1

0>т2

Qтп)

является абсолютно унимодулярной.

Матрицу А называют абсолютно унимодулярной, если все ее

миноры равны либо

0, либо ± 1. Минором k-го порядка, k ^ m ,

k ^ n , для матрицы А

является определитель матрицы к-го поряд­

ка, построенной из элементов, стоящих на пересечении произволь­ ных к столбцов и к строк матрицы А.

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

П

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

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

1)каждый ее элемент равен 0, + 1, —1;

2)каждый ее столбец содержит не более двух ненулевых эле­ ментов;

3)строки матрицы А можно разбить на два непересекающихся множества R\ и Яг таким образом, что:

а) если столбец из А содержит два ненулевых элемента одного

знака, то один из них входит в R \, другой — в Яг;

б) если столбец из А содержит два ненулевых элемента с про­ тивоположными знаками, то оба они входят либо в Л ь либо в Яг-

Приложение потоковых моделей

На практике часто встречаются задачи, которые могут быть сформулированы в виде задач о кратчайшей цепи, о потоке ми­ нимальной стоимости, о максимальном потоке и т. п. Например, задача о кратчайшей цепи заключается в следующем. Заданы мно­ жества дуг и узлов. Каждой дуге А ^ поставлена в соответствие величина су, равная стоимости единицы потока по этой дуге. Тре­ буется найти цепь из источника N 3 в сток N t, минимизирующую стоимость единицы потока из N s в Nt. Примером подобной задачи может быть задача о замене устаревшего оборудования на новое.

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

ирасходы на техническое обслуживание и текущий ремонт в каж­ дый промежуток времени считаются известными. Обычно задают

ивеличину периода планирования.

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

Вболее общей интерпретации дугу сети представляют как звено

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

Многие обобщения задачи о максимальном потоке по существу сводят к поиску максимального потока в сети, к легко осуществи­ мому поиску некоторых цепей сети. Примером одной из таких задач является задача о потоке в сети с несколькими источниками и сто­ ками, когда заданы мощности источников и возможности (спрос) стоков. В данной задаче множество всех узлов разбивается на под­ множества источников S, промежуточных узлов R и стоков Т. Каж­ дому узлу N {e S ставится в соответствие неотрицательное число щ (возможности), а каждому узлу Nj е Т — неотрицательное число bj (спрос).

Возникает система ограничений

У , xij ~

xki =

Nie S,

3

 

к

 

У

xij ~

%ki = 0?

Nie R,

3

 

к

 

У

xij ~ У xkj = bj,

Nj e T,

i

 

к

 

О ^ Xij ^ bij.

Если потоку разрешается течь из любого источника в любой сток, то эта задача легко сводится к задаче с одним источником и од­ ним стоком путем добавления одного дополнительного источника и одного дополнительного стока (рис. 3.1). Помимо этого добавляют

Рис. 3.1. Сведение сетевой задачи к задаче с одним источником и одним стоком

новые ориентированные дуги, ведущие из дополнительного источ­ ника S во все стоки Ni и имеющие пропускные способности а*, a также ориентированные дуги с пропускными способностями bj, ведущие из каждого источника N j в дополнительный сток Т. Те­ перь задача об удовлетворении требуемого спроса заданным пред­ ложениям (возможностям) сводится к нахождению максимального потока в расширенной сети.

сток

,

источник

 

о

 

Рис. 3.2. Исходная (а) и расширенная (б) сети

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

Получим еще одно обобщение задачи о потоке, если для каж­ дой дуги введем ограничение на пропускную способность и сверху, и снизу (рис. 3.2), т. е.

О ^ lij ^ ^ij ^ bij

Требуется определить, существует ли поток из источника N s в сток Nt, удовлетворяющий на дугах ограничениям сверху и снизу.

Пусть в сети имеется только одна ориентированная дуга

с ограниченным снизу дуговым потоком Uj. Расширим сеть, доба­ вив два новых узла — искусственный источник N j с предложени­ ем kj и искусственный сток N с таким же спросом 1ц. Пропускную способность дуги Aij при этом изменим: если она была равна bij, то в новой сети она станет равной — 1^. Добавим, кроме того, ориентированную дугу из Nt в N s с бесконечной пропускной спо­ собностью. Будем искать в расширенной сети максимальный поток из источника Nj в сток N . Если величина этого потока в расши­

ренной сети больше или равна 1^ , а поток по дуге А и

равен x ta,

то в исходной сети существует такой поток из N s в

N величи­

ны v = xts, что Uj ^ Xij. Исходная и расширенная сети приведены на рис. 3.2, а, б. Если в сети имеется несколько дуг, обладающих нижними границами для дуговых потоков, то следует:

1) ввести несколько искусственных источников и стоков (см. рис. 3.2, б);

2)задачу с несколькими источниками и стоками свести к задаче

содним источником и одним стоком введением дополнительного источника и дополнительного стока, как это было сделано в преды­ дущей задаче (см. рис. 3.1).

§ 3.2. Задача о покупке автомобиля

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

Со временем эксплуатационные расходы на содержание авто­ мобиля заметно возрастают, да и сам автомобиль устаревает мо­ рально и технически. Возникают вопросы: когда следует заменить автомобиль и что принять за критерий, определяющий необходи­ мость его замены? Выберем в качестве критерия общие затраты на покупку и содержание автомобиля за некоторый период време­ ни t. Для определенности будем полагать следующее: t = 8 лет; в начальный момент автомобиля нет; решение о покупке автомо­ биля может приниматься в начале каждого года исходя из затрат

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

Рис. 3.3. Сеть для задачи о покупке автомобиля

Началу каждого года соответствует узел. Если автомобиль куп­ лен в начале г-го года, а заменен в начале j-ro года, то такому варианту соответствует дуга (г, j). Общие затраты в течение этого периода (на дуге (г, j )) выразятся формулой

з- 1

су = Pi + Yimk~S3’

k=1

где Pi — стоимость автомобиля в начале г-го года, тп^ — эксплуата­ ционные расходы в течение к -го года, Sj ликвидационная стои­ мость автомобиля в начале j-ro года. Значения су для рассматри­ ваемого случая приведены в табл. 3.1.

Таблица 3.1

Общие затраты по дугам

Шаг

2

3

4

5

6

7

8

9

1

1450

2750

3850

4750

 

 

 

 

2

 

1700

3200

4450

5450

 

 

 

3

 

 

1850

3425

4750

5800

 

 

4

 

 

 

1950

3650

5050

6150

 

5

 

 

 

 

2075

3875

5350

6500

6

 

 

 

 

 

2200

4100

5650

7

 

 

 

 

 

 

2325

4325

8

 

 

 

 

 

 

 

2450

Вследствие инфляции и модернизации автомобилей возрастает стоимость автомобиля и увеличиваются расходы на его содержание. Оптимальному решению данной задачи соответствует кратчайшая цепь из источника s = 1 в сток t = 9. Поэтому цепь можно рас­ сматривать как цепь, минимизирующую стоимость единицы потока из узла 1 в узел 9 при условии, что стоимость единицы потока по дуге (г, j) равна с^, г = 1,..., 8, j = 2 , ... , 9. Для решения этой задачи воспользуемся алгоритмом Дейкстры (Дикстры).

В алгоритме Дейкстры минимизируется либо стоимость, либо время прохождения единицы потока по данной цепи. Каждой дуге ориентированной сети ставится в соответствие обобщенная стои­ мость дуги Cij. Фиктивным («бесплатным») дугам приписывается

стоимость Cij = 0, а каждой паре узлов г, j,

для которых не суще­

ствует дуги, соединяющей их, — стоимость

= оо.

Математическая постановка этой задачи следующая:

 

S

I Cj'jX'ij

^ min

 

при условиях

 

1

3

 

 

 

 

^

 

x sj ~

Xjs =

 

 

3

 

 

3

 

 

 

^ \ 3C{j

^ ] 3Cji = 0,

 

i^ t ,

 

3

3

 

 

 

 

 

x tj ~~

xjt =

~

fij ^ O»

Cij ^ 0 .

3

3

 

 

 

 

 

Получили задачу ЛП с неизвестными Xij величинами потока между г-м и j - м узлами. Согласно первому равенству единица пото­ ка вытекает из источника s, а согласно третьему — единица потока втекает в сток t. Второе равенство гарантирует сохранение потока при протекании по сети (естественно, не рассматриваются источ­ ник s и сток t). В качестве кратчайшей цепи может быть взята последовательность смежных дуг (г, j ), для которых Xij = 1.

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

Каждому узлу, в который нельзя попасть непосредственно из ис­ точника, приписывают временную пометку оо, а остальным уз­ лам — временные пометки cSJ, j ф s. Если определено, что узел принадлежит кратчайшей цепи, его пометка становится постоян­ ной. Алгоритм Дейкстры основан на следующем простом факте: если известна кратчайшая цепь из узла s (источника) в узел j и узел к принадлежит этой цепи, то кратчайшая цепь из s в к является частью первоначальной цепи, оканчивающейся в узле к. Алгоритм начинает работать при j = s. Затем величина j увели­ чивается на единицу; при j — t алгоритм завершает свою работу. Итерационная процедура алгоритма состоит в следующем. Для заданного узла j обозначим «длину» кратчайшей цепи cSj из ис­ точника s в узел j. Если эта «длина» не может быть «улучше­ на», то соответствующее значение называют постоянной пометкой. В противном случае «длину» называют временной пометкой. Сна­ чала постоянную пометку присваивают только источнику. Каждая другая пометка является временной и ее величина равна длине дуги, ведущей из источника в соответствующий узел. Для опреде­ ления «ближайшего» к источнику узла выберем временную пометку с минимальным значением и объявим ее постоянной пометкой. Для получения этой постоянной пометки необходимо следующее.

1.Рассмотреть оставшиеся узлы с временной пометкой. Срав­ нить величину каждой временной пометки с суммой величины по­ следней из постоянных пометок и «длины» дуги, ведущей из со­ ответствующего постоянно помеченного узла в рассматриваемый узел. Минимальная из двух сравниваемых величин определяется как новая временная пометка рассматриваемого узла. Если вели­ чина старой временной пометки меньше второй из сравниваемых величин, то пометка остается прежней.

2.Среди временных пометок выбрать ту, значение которой ми­ нимально, и объявить ее постоянной пометкой. Если при этом по­ стоянную пометку приписывают узлу t (стоку), то завершаем рабо­ ту, в противном случае переходим к п. 1.

Для решения примера рассмотрим следующий алгоритм.

Ш аг 0. Припишем источнику (узлу 1) постоянную пометку 0, а узлам 2 ,..., 9 временные пометки cSj оо. Постоянные пометки заключены в квадратные скобки.

Соседние файлы в папке книги