Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ДГМ.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
2.33 Mб
Скачать

Задача о максимальном потоке.

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

где для всех i, j. Число v называется величиной потока.

Важное значение имеет задача построения максимального потока (потока максимальной величины).

Замечание. Очевидно, что задача построения максимального потока может быть сведена к задаче линейного программирования.

Опишем алгоритм построения максимального потока.

1) Выбирается некоторый начальный поток, например нулевой. Начальные пропускные способности дуг заданы. Пусть после нескольких шагов алгоритма получены некоторый поток , некоторые текущие значения пропускных способностей дуг (недоиспользованные пропускные способности) и некоторое текущее значение величины потока v. Тогда алгоритм работает следующим образом.

1°. Выбирается путь из а0 в аn положительной пропускной способности θ (здесь θ — минимальная из пропускных способностей дуг, составляющих путь). Для этого можно использовать следующий алгоритм (источник а0 считается вначале помеченным, но не просмотренным, а все остальные узлы — не помеченными).

1а. Выбрать любой помеченный, но не просмотренный узел .

1б. Всем узлам , для которых >0, приписать пометки (i, j) и считать их помеченными. Считать узел просмотренным. Если при этом сток аn оказался помеченным, то по пометкам легко восстановить искомый путь из а0 в аn. В противном случае следует перейти к шагу 1а. Если это невозможно, то искомого пути не существует.

2°. Пусть ( ), ( ),…,( ) найденный путь. Тогда для каждой дуги ( ), входящей в этот путь, следует выполнить операторы:

,

,

,

.

Далее переходим к шагу 1°. Если путь положительной пропускной способности не существует, то полученный поток является максимальным.

Динамическое программирование.

Как раздел динамическое программирование начало развиваться в 50-е года 20 века благодаря работам Беллмана и его сотрудников. Динамическое программирование представляет собой математический аппарат, обеспечивающий решение определенных типов оптимизационных задач путем их разложения (декомпозиции) на относительно небольшие и сравнительно менее сложные задачи. Представим себе некоторую операцию Q, распадающуюся на ряд последовательных шагов – например, деятельность отрасли промышленности в течение ряда хозяйственных лет или последовательность тестов, применяемых при контроле аппаратуры. Некоторые операции расчленяются на этапы естественно, в некоторых членение приходится вводить искусственно (скажем, процесс наведения ракеты на цель условно можно разбить на этапы, каждый из которых занимает определенный промежуток времени t). Итак, операция состоит из n шагов. Эффективность операции характеризуется показателем эффективности F (выигрыш). Выигрыш за всю операцию складывается из выигрышей на отдельных этапах.

, где - выигрыш на k-том шаге.

Если F обладает таким свойством, то его называют аддитивным критерием.

Операция Q – управляемый процесс, т.е. можно выбирать параметры, влияющие на ход и исход процесса. Причем на каждом шаге выбирается какое-то решение, от которого зависит выигрыш на данном шаге и за всю операцию в целом. Будем называть это решение шаговым управлением. Совокупность всех шаговых управлений U=(u1, u2,…, un) представляет собой управление операцией в целом. Следует иметь в виду что u1, u2,…, un - в общем случае не числа, а может быть векторы, функции и т.д. Итак, требуется найти такое управление U*, при котором выигрыш обращается в максимум.

. То управление, при котором достигается этот максимум, называется оптимальным управлением.

Формальная постановка задачи.

Пусть задана система S, состояние которой на каждом шаге описывается набором чисел . Значение набора определяется выбранным на k-том шаге управлением uk. В результате реализации управления uk система переходит из состояния на (k-1)-ом шаге в состояние на k-ом шаге. Задана некоторая целевая функция, и ставится задача найти ее экстремальное значение за n шагов, а также совокупности управлений { uk }, при реализации которых достигается это экстремальное значение.

При реализации метода ДП предполагаются выполненными два условия:

  1. Отсутствие последействия: состояние системы , в которое система пришла на k-том шаге, зависит только от предшествующего состояния и управления uk на данном шаге (и не зависит от того, как система пришла в состояние ).

  2. Условие аддитивности: Общий выигрыш за k шагов равен сумме выигрышей за каждый отдельный шаг.

Принцип оптимальности. Уравнение Беллмана.

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

Т.е. если некоторое решение является оптимальным, то часть решения при соответствующих начальном и конечном состояниях, является оптимальной.

Если AB – кратчайший путь между A и B, то СB - кратчайший путь между С и B по тому же критерию.

Отсюда вытекает принцип оптимальности: Каково бы ни было состояние системы перед очередным этапом (шагом), надо выбирать такое управление на этом этапе, чтобы выигрыш на данном этапе плюс оптимальный выигрыш на всех последующих был максимальный.

Математическая формулировка принципа оптимальности.

Пусть в результате реализации k-го шага обеспечен выигрыш, также зависящий от исходного состояния и выбранного управления и равный . - максимальный выигрыш, получаемый при переходе из состояния в конечное при оптимальном управлении на последних (n-k) шагах.

Тогда основное функциональное уравнение ДП или уравнение Беллмана:

и величина максимального выигрыша равна:

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

Оптимальная политика замены оборудования.

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

Пусть известна стоимость нового оборудования или ремонта. Требуется составить план замены оборудования, максимизирующий суммарный доход (прибыль). Известно, что при заданном плане выпуска продукции максимизация прибыли эквивалентна минимизации затрат.

При составлении модели динамического программирования процесс замены рассматривается как n-шаговый, разбив весь период на N промежутков. Так как в начале каждого из этих промежутков принимается решение о сохранении оборудования, либо его замене, то управление на k шаге (k=1,2,...,n) содержит лишь две альтернативные управляющие переменные.

Замечание. Модели динамического программирования очень гибки в смысле возможностей анализа чувствительности к вариациям исходных данных, и в смысле возможностей включения в модель различных модификаций задачи. Так, например, в задаче о замене оборудования может быть учтена остаточная стоимость оборудования по годам с учетом износа с целью дальнейшего включения ее в общую прибыль за счет заключительной продажи, задача может содержать три альтернативные переменные: «сохранение», «замена », «реконструкция» и т.д.

Рассмотрим наиболее простой случай.