книги / Математические методы принятия решений
..pdfШаг 1. Построить матрицу пропускных способностей размером и х п, элементы которой соответствуют пропускным спо собностям дуг между узлами г и j, г, j = 1,2,..., п, и матрицу марш рутов |гц;||, заменив в ней все элементы столбцов одинаковыми числами, равными номеру столбца.
Шаг 2. Произвести над матрицей пропускных способностей следующие операции.
1 ) Для любых г, j = 1,2,..., п исключить j -ю строку и г-й стол
бец матрицы и над каждым оставшимся элементом (диагональ ные элементы также исключаются) выполнить трехместную опера цию dik = m ax {dit; min(djj; djk)} для всех %,кф j, j = 1,2, ... , n.
Еще одна матрица, называемая матрицей маршрутов, необхо дима для определения внутренних узлов каждой цепи. Матрица маршрутов также имеет размер п х п , где fc-й элемент г-й строки
вней первоначально равен к.
2)Одновременно с заменами элементов в матрице пропускных способностей выполнить замены элементов в матрице маршрутов по следующему правилу:
j, |
если |
dik <mm{dij;djk}, |
остается неизменным, |
если |
dik ^ m in{dÿ; djk}. |
Если узлы г и j не соединены дугой (или связь между ними недопустима), то значение соответствующего элемента dÿ матрицы пропускных способностей полагается равным —оо.
Для иллюстрации данного алгоритма рассмотрим следующую задачу.
Задача. Производятся перевозки автотранспортом крупногаба ритного груза. Требуется перевозить несколько видов оборудования с очень большим вертикальным габаритным размером. Это обору дование можно перевозить только по семи утвержденным маршру там. Задача заключается в выборе маршрутов с максимально допу стимыми подмостовыми зазорами.
Каждый элемент матрицы, приведенной в табл. 3.19, равен вы соте соответствующего моста. Необходимо получить информацию о максимально допустимых вертикальных габаритных размерах
грузов, которые можно транспортировать из каждого пункта по грузки в каждый пункт выгрузки.
|
|
|
|
|
Таблица 3.19 |
||
Транспортировка крупногабаритного |
|
||||||
|
|
|
груза |
|
|
|
|
Пункт |
|
|
Пункт выгрузки |
|
|
||
погрузки |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|||||||
1 |
0 |
11 |
30 |
— |
— |
— |
— |
2 |
11 |
0 |
— |
12 |
2 |
— |
— |
3 |
30 |
— |
0 |
19 |
— |
4 |
— |
4 |
— |
12 |
19 |
0 |
11 |
9 |
— |
|
|
|
|
|
|
||
5 |
— |
2 |
4 |
11 |
0 |
— |
— |
6 |
— |
— |
9 |
— |
0 |
— |
|
|
|
|
|
|
|||
7 |
— |
— |
— |
20 |
1 |
1 |
0 |
Р е ш е н и е . Для каждой пары узлов определяют соединяющий их маршрут с максимальной пропускной способностью. Ниже при
водятся результаты вычислений. |
|
|
|
|
|
|
|
|
|
|||||||
|
И т е р а ц и я |
0. |
Выпишем исходные матрицы пропускных спо |
|||||||||||||
собностей и маршрутов: |
|
|
|
|
|
|
|
|
|
|
|
|||||
/ |
0 |
11 |
30 |
|
—оо |
—оо |
—оо |
- о ° \ |
/1 |
2 |
3 |
4 |
5 |
6 |
Л |
|
0 |
—оо |
12 |
2 |
—оо |
—оо |
|
2 |
3 |
4 |
5 |
6 |
|||||
|
11 |
|
1 |
7 |
||||||||||||
|
30 |
—оо |
0 |
|
19 |
—оо |
4 |
—оо |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
—оо |
12 |
19 |
|
0 |
11 |
9 |
—оо |
> |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
—оо |
2 |
—оо |
11 |
0 |
—оо |
—оо |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
—оо |
—оо |
4 |
|
9 |
—оо |
0 |
—оо |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
\ |
оо |
—оо |
—оо |
20 |
1 |
1 |
0 ) |
\1 |
2 |
3 |
4 |
5 |
6 |
7 / |
||
|
И т е р а ц и я |
1. |
Согласно шагу 2 алгоритма Т.Ху изменим мат |
|||||||||||||
рицы пропускных способностей и маршрутов: |
|
|
|
|
|
|
||||||||||
/ |
0 |
11 |
30 |
|
—оо |
—оо |
—оо |
—о о \ |
( х |
2 |
3 |
4 |
5 |
6 |
Л |
|
|
и |
0 |
11 |
|
12 |
2 |
—оо |
—оо |
|
1 |
2 |
1 |
4 |
5 |
6 |
7 |
|
30 |
и |
0 |
|
19 |
—оо |
4 |
—оо |
|
1 |
1 |
3 |
4 |
5 |
6 |
7 |
|
—оо |
12 |
19 |
|
0 |
11 |
9 |
—оо |
» |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
—оо |
2 |
—оо |
11 |
0 |
—оо |
—оо |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
—оо |
—оо |
4 |
|
9 |
—оо |
0 |
—00 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
V—оо |
—оо |
—оо |
20 |
1 |
1 |
0 |
У |
\1 |
2 |
3 |
4 |
5 |
6 |
7 / |
Выполним аналогичные семь итераций. Приведем сразу резуль таты последней итерации.
И т е р а ц и я 7. В результате преобразований получим опти мальное решение:
0 |
12 |
30 |
19 |
11 |
9 |
—осЛ |
/1 |
4 |
3 |
3 |
4 |
4 |
7 |
\ |
0 |
12 |
12 |
11 |
9 |
—оо |
4 |
2 |
4 |
4 |
4 |
4 |
7 |
|
|
12 |
|
|||||||||||||
30 |
12 |
0 |
19 |
И |
9 |
—оо |
1 |
4 |
3 |
4 |
4 |
4 |
7 |
|
19 |
12 |
19 |
0 |
11 |
9 |
—оо , 1 И = |
3 |
2 |
3 |
4 |
5 |
6 |
7 |
|
11 |
11 |
11 |
11 |
0 |
9 |
—оо |
4 |
4 |
4 |
4 |
5 |
4 |
7 |
|
9 |
9 |
9 |
9 |
9 |
0 |
—оо |
4 |
4 |
4 |
4 |
4 |
6 |
7 |
|
\19 |
12 |
19 |
20 |
11 |
9 |
0 / |
^4 |
4 |
4 |
4 |
4 |
4 |
7 |
/ |
Для каждой пары узлов максимально допустимый вертикальный габаритный размер перевозимого груза можно определить непо средственно из последней матрицы пропускных способностей. Оп тимальный маршрут также может быть построен с помощью по следней матрицы маршрутов. Например, максимальная пропускная способность цепи из пункта 7 в пункт 4 определяется значением элемента d*4 = 19, которому соответствует элемент г *4 = 3 в матри це маршрутов. Теперь надо связать пункт 3 с пунктом 4 и пунктом 1. Поскольку г *4 = 4 и г *3 = 3, то соответствующий маршрут строят следующим образом:
а) г *4 = 3: двигаться из узла 1 в узел 4 через узел 3; б) Г34 = 4: двигаться из узла 3 непосредственно в узел 4;
в) г *3 = 3: двигаться из узла 7 непосредственно в узел 3. Отсюда получим путь из пункта 7 в пункт 4:
Действительно, d*4 = min{30; 19} = 19.
Отметим, что дуги, соединяющей узлы 7 и 4, не существует.
Г л а в а 4
ОСНОВЫ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ И ТЕОРИИ ИГР
§ 4.1. Условия применимости динамического программирования
Как было показано в гл. 1, для нахождения оптимального реше ния непосредственное применение только необходимых признаков, как правило, не дает в задачах математического программирова ния нужных результатов. Во-первых, система уравнений, вытека ющая из необходимых признаков, оказывается разрешимой только в простейших случаях. Бывает легче непосредственно предсказать максимум (минимум) целевой функции, чем решить такую систе му уравнений. Во-вторых, указанный способ вовсе не гарантирует нахождение решения во всех случаях. Даже если составленная си стема уравнений может быть решена, отыскание абсолютного экс тремума целевой функции требует проведения проверок, тем более сложных, чем больше аргументов имеет функция.
Наконец, в ряде практических случаев целевую функцию во обще нельзя дифференцировать, например когда аргументы х = = (xi,X2, ■■■, х т) представляют собой не непрерывно изменяющи еся величины, а дискретные.
Все эти обстоятельства приводят к тому, что применение клас сических методов математического анализа или вариационного ис числения в большинстве задач планирования оказывается неэффек тивным, при этом первоначально поставленная задача отыскания экстремума приводит к таким вторичным задачам, которые оказы ваются не проще исходной, а зачастую сложнее.
В гл. 1 было также показано, что все задачи математического оптимального программирования в зависимости от вида целевой функции и ограничений могут быть разбиты на классы, харак теризуемые своими методами решения. К примеру, в линейном
программировании изучают класс задач, в которых и целевые функ ции, и ограничения линейны.
Вместе с тем решение многих таких задач может быть упро щено, если решать их поэтапно, т. е. использовать метод динамиче ского программирования. Идея метода состоит в том, что отыскание точек экстремума целевой функции многих переменных заменяется последовательным нахождением точек экстремума функции одного или небольшого числа переменных.
Итак, динамическое программирование есть поэтапное плани рование многошагового процесса, при котором управление разби вается на ряд последовательных этапов, соответствующих, как пра вило, различным моментам времени или разным координатам.
В задачах, решаемых методом динамического программиро вания, значение целевой функции (оптимизируемого критерия), достигнутое в течение всего процесса, получают простым сумми рованием частных значений fi{x) того же критерия, полученных
на отдельных шагах, т. е.
т
/(я ) = Л Мх). i—1
Если критерий оптимальности f(x) обладает этим свойством, то он называется аддитивным.
Во многих практических задачах критерий f(x) аддитивен; если в первоначальной постановке задачи критерий не аддитивен, то по становку задачи надо видоизменить так, чтобы он стал аддитивным. К примеру [4, 5], если рассматривают критерий f(x), представлен ный в виде произведения частных значений, достигаемых на от дельных этапах: f(x) = f\(x)f2( x ) ... f m(x) (такой критерий называ ют мультиплексным), то можно преобразовать его к аддитивному,
прологарифмировав:
771
lg /(* ) = 2 lg /<(*). i= l
Обозначим V = lg f(x), Vi = lg fi(x). Получим новую целевую
771
функцию (критерий) V = 2 V*, обладающую свойством аддитив-
г=1
ности и достигающую максимум (минимум) одновременно с функцией f(x).
Рассмотрим общую схему решения задач, имеющих аддитивный критерий.
Пусть процесс управления некоторой системой состоит из т шагов. На каждом г-м шаге управление х * переводит систему из со стояния S j-i, достигнутого в результате (г —1)-го шага, в новое со стояние Su которое зависит от состояния <%_1 и выбранного управ ления Xf.
Si = Si(Si—1, х{).
Здесь существенно то, что новое состояние Si зависит только от состояния S i- 1 и управления Xi и не зависит от того, каким образом система пришла в состояние 5^—1. В крайнем случае это условие достигается увеличением числа состояний системы. Поня тием «состояние системы» характеризуются только те параметры, от которых зависит будущий результат.
В теории динамического программирования, когда рассматрива ют процессы, зависящие только от текущего состояния, оптималь ную стратегию формулируют следующим образом.
Принцип оптимальности. Оптимальная стратегия обладает тем свойством, что, каковы бы ни были первоначальные состояния системы S i- \ и решение ац, последующее решение должно опреде лять оптимальную стратегию относительно состояния, получен ного в результате начального решения.
Другими словами, каково бы ни было состояние системы, пе ред очередным шагом необходимо выбрать управление на этом ша ге так, чтобы выигрыш на данном шаге и оптимальный выигрыш на всех последующих шагах были максимальными.
Рассмотрим задачу о нахождении максимума функции дохо да f(x) на m -шаговом процессе.
Под влиянием управлений х\, Х2, . . . , х т система переходит из начального состояния So в конечное 5 КОнЗа т шагов получают целевую функцию (выигрыш)
771
/(я) = ][]/гОй-ь £i),
2=1
где fi(Si-\, х ^ — выигрыш на г-м шаге, зависящий от исходного со стояния системы iS'i_1 и выбранного управления Xi.
Принцип оптимальности позволяет заключить, что при любом начальном управлении х\
f ( x ) — f l ( S o , ® l ) + |
( / 2( 5 ь х 2) + ... + f m ( S m - Ь |
X m ) ) = |
|
=f i ( S o , |
rn |
|
®i)+ 2 f i ( S i - i , Xi). |
|
|
|
t=2 |
Поскольку данное соотношение справедливо для любых началь |
||
ных решений х \ , |
то, чтобы найти максимальный доход /шах(So), |
|
необходимо найти максимум по х \ значения f ( x ) : |
||
/max(So) —max /(х ) —m ax{/i(5o, X i ) + /max(Sm_i(So, X i ) ) } , |
||
X\ |
X\ |
|
где /max(Sm_i(5o, X i ) ) —оптимальный выигрыш на всех последую щих шагах.
Получили основное функциональное уравнение динамического программирования. Его можно вывести, используя формулу
|
|
шах |
/(х ) = m ax i m ax / ( х ) | |
|
|
|
|
Xl '■X2,...,Xm |
> |
Следовательно, |
|
|
|
|
/max(So) = |
m ax |
{/l(So,X i) + / 2(Si,X2)-|- |
+ / m ( S m_l,Xm)} = |
|
|
x \ y . . . yX m |
|
|
|
= max{ |
m ax |
{ /,(5 0, x j) + f 2(S u x2) + ... + |
, xm)}} = |
|
Xj Х2,..-,Хтп |
|
|
|
|
= m ax{/i(50,xi)} + |
m ax {f2(S\, x2) + ... -I- fm(Sm- i , xm)} = |
|||
XJ |
|
|
X 2 .........I m |
|
|
|
|
= m ax{/!(5o, xi) + |
/max(5m_ i(S 0,xi))} . |
|
|
|
Xl |
|
Согласно этому выражению алгоритм получения решения задач динамического программирования состоит в оптимизации после довательности функций дохода {/n(5n_i)} или последовательно сти стратегий {æn0Sn-i)}- Эти последовательности определяют одна другую. Причем имеется только одна последовательность оптимальных функций дохода, хотя может быть много последо вательностей оптимальных стратегий, которые приведут к тому же максимальному доходу.
В динамическом программировании, планируя многоэтапную процедуру, управление на каждом шаге, кроме последнего, выби рают с учетом будущего. Последний шаг можно спланировать так, чтобы он привел к максимуму целевой функции.
Возникает вопрос: как спланировать последний шаг, если мы не знаем, чем кончился предпоследний? Для этого делают разные предположения о том, чем кончится предпоследний шаг, и для каж дого допущения выбирают управление на последнем шаге и запо минают его до конца решения задачи.
Спланировав оптимальным образом последний шаг, к нему при соединяют предпоследний, при этом формулируют гипотезу о том, чем закончился предыдущий шаг, и находят согласно основному функциональному уравнению наибольшее значение целевой функ ции на этих двух шагах и т. д. Поэтому в динамическом програм мировании процесс решения задачи происходит от конца к началу. Этот процесс повторяют на каждом шаге. Такое оптимальное управ ление, выбранное в предположении, чем кончится предыдущий шаг, называют условным. Зная исходные данные для первого шага, мож но получить значения оптимального управления от первого до п-го шага.
Приведем далее примеры решения задач методом динамическо го программирования.
§ 4.2. Задача об оптимальной загрузке транспортного средства неделимыми предметами
В § 1.1 мы сформулировали задачу о бабе, отправляющейся на рынок и решающей, сколько ей надо взять живых гусей, кур и уток, чтобы получить наибольшую выручку. Мы знаем и то, что это задача целочисленного линейного программирования. Теперь рассмотрим, как подобные задачи решаются с помощью методов динамического программирования.
Задача. Пусть в самолет требуется погрузить четыре вида пред метов, чтобы эффект от этих предметов (например, стоимость) был максимальным. Грузоподъемность самолета равна w; Pi — вес еди ницы г-го вида предметов; v\ — стоимость единицы г-го вида; Х{ — количество г-го вида предметов, взятых на борт самолета.
Р е ш е н и е . Найдем максимум целевой функции задачи:
4
f (x ) = ^ XiVi = x\V\ + X2V2 + X3V3 + X4V4 —*• max.
2=1
Ограничение записывается следующим образом:
4
^ XiPi = X\Pi+ Х2Р2 + Х3Р3 + Х4Р4 ^ W.
2=1
Эту задачу называют задачей о рюкзаке вследствие следующей гипотетической ситуации. Турист, собираясь в поход, должен вы брать, какие предметы ему взять с собой. Каждый предмет имеет свой вес и свою ценность. Требуется, чтобы общий вес рюкзака с выбранными предметами не превышал некоторого заданного ве са, а их общая ценность была максимальной.
Для численного решения предположим, что w = 83, Р\ = 24, Р2 = 22, Рз = 16, Р4 = 10, vi = 96, V2 = 85, из = 50, V4 = 20 соответ ствующих единиц.
Очевидно, что это задача целочисленного программирования. Применим для ее решения многошаговую процедуру принятия
решения. Согласно общей схеме решения задач динамического про граммирования будем рассматривать два этапа. На первом этапе найдем возможные оптимальные варианты при последовательной оптимизации по одной переменной, а на втором этапе из этих «за готовок» выберем оптимальное решение нашей задачи.
Первый этап будет содержать четыре шага.
Ш аг 1. Сначала найдем возможные оптимальные варианты загрузки самолета только предметами первого вида. Необходимо найти и запомнить значения х\ и соответствующую им максималь ную стоимость груза f\(w) при различных возможных значениях w. В этом случае максимальная стоимость груза определится следую щим образом:
f\(w) = max{a:ivi}
Xl
при условии х\Р\ ^ w, æi = 0 ,1 ,2 , ... Поскольку х\ < ги/Р\, то для нахождения максимума f\(w) необходимо взять х\ возможно боль шим, т. е. х\ = [w/P i] — наибольшее целое число, не превосходя щее w/P], и, таким образом, /,(«>) = [w/P\}v\.
Зададим некоторые значения w и найдем для них х\ и f\(w). Очевидно, если грузоподъемность самолета меньше 24 ед., то ни од ного предмета первого вида погрузить нельзя. При грузоподъемно сти от 24 до 47 ед. можно погрузить 1 ед. предмета первого вида и т. д. Результаты представим в виде таблиц. Значения w, f\(w) и х\ приведены в табл. 4.1. В таблицах принят более широкий предел значений для w — от 0 до 87 ед.
Таблица 4.1
|
Первый шаг оптимизации |
|
|||
W |
/if » |
Х \ |
W |
/i(w) |
Х \ |
0-23 |
0 |
0 |
48-71 |
192 |
2 |
24-47 |
96 |
1 |
72-87 |
288 |
3 |
Ш аг 2. Проведем оптимизацию целевой функции при усло вии, что самолет загружают предметами первого и второго видов. Необходимо найти стоимость груза в этом случае, максимальную эффективность загрузки обозначим через fiiw ). Если предметов второго вида взято х2, то вес предметов первого вида должен быть не больше, чем w —Р2Х2. Максимальная стоимость предметов пер вого вида выразится формулой
f\(w —Х2Р2) = max{xivi}> x { = W *lP l,
X\
а общая стоимость груза — формулой
fia = х2 у 2+ fi(w ~ х2 Pï)-
Тогда
f2(w) = ш ах{х2г>2 + fi(w - х2Р2)}, 0 ^ х2 ^ |
. |
(4.1) |
Максимум этого выражения определяют только по х2. Однако мы не знаем, какую часть веса w могут занимать предметы второго вида. Поэтому мы должны рассмотреть выражение (4.1) для всевоз можных значений го от 0 до 83 ед. При вычислении fi(w — х 2Р2) воспользуемся полученными результатами (см. табл. 4.1).
Например, пусть w = 46 ед. Величина х 2 может принимать зна чения 0,1,2; соответствующая стоимость предметов второго вида равна 0, 85, 170 еД., а для предметов первого вида составит 46, 24,