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

2.9Метод динамического программирования.

Рассмотрим некоторую операцию, состоящую из m шагов (этапов). Пусть эффективность операции характеризуется некоторым показателем W (критерием). Данный показатель складывается из показателей на отдельных шагах wi:

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

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

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

Но не все так просто. Оптимальное решение, принятое на первом шаге, может отсечь оптимальные шаги на последующих этапах расчета.

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

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

Однако из этого правила есть одно исключение. Последний шаг не имеет продолжения. Поэтому процесс динамического программирования разворачивается от конца к началу - прежде всего, планируется последний m - й шаг.

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

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

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

2.10Поиск кратчайшего пути в графе

Найти кратчайший путь из узла 1 в узел 10 на сети дорог показанной на рисунке. Затраты на отдельных участках сети показаны на дугах.

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

Вычислительный метод можно представить в виде так называемого динамического рекуррентного соотношения: , где - стоимость, отвечающая стратегии минимальных затрат прохода до узла k; - то же до узла n, из которого до узла k один шаг (дуга); - затраты по дуге kn. Данное выражение означает, что на каждом этапе расчета должны быть вычислены все возможные значения стоимости, суммированием соответствующей стоимости для очередного шага пути (переезда из пункта n в пункт k), и стоимости, отвечающей оптимальной стратегии выбора пути к узлу n.

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

В простейших случаях вычислительный процесс может быть реализован в форме таблицы. В задачах большой размерности используется вычислительная техника.

Формулы

Расчет

f 10=min(c10,8+f8,c10,9+f9)

f8= min(c5,8+f5,c6,8+f6,c7,8+f7)

f9= min(c5,9+f5,c6,9+f6,c7,9+f7)

f5= min(c2,5+f2,c3,5+f3)

f6= min(c2,6+f2,c3,6+f3,c4,6+f4)

f7= min(c3,7+f3,c4,7+f4)

f2= c1,2

f3= c1,3

f 4= c1,4

f 10=min(1+17,4+13)=17

оптимальной стратегии соответствует путь в узел 10 (конец пути) из узла 9;

f8= min(8+10,3+14,7+12)=17,

оптимальной стратегии соответствует путь в узел 8 из узла 6;

f9= min(5+10,4+14,1+12)=13,

оптимальной стратегии соответствует путь в узел 9 из узла 7;

f5= min(10+2,5+5)=10,

оптимальной стратегии соответствует путь в узел 5 из узла 3;

f6=min(12+2,10+5,15+1)=14,

оптимальной стратегии соответствует путь в узел 6 из узла 2;

f7=min(7+5,13+1)=12,

оптимальной стратегии соответствует путь в узел 7 из узла 3;

f2= 2

f3= 5

f4= 1

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

Оптимальное решение:

  • оптимальный путь в конечный узел 10 идет из узла 9,

  • оптимальный путь к узлу 9 идет из узла 7,

  • оптимальный путь к узлу 7 идет из узла 3,

  • в узел 3 можно попасть из начального узла 1 по единственному пути.

Кратчайший путь проходит через узлы 1-3-7-9-10.

Величина критерия равна 17.