
моделирование / Lab_8
.pdf
Лабораторная работа №8
Решение оптимизационных задач с использованием моделей динамического программирования.
|
8.1. Цель работы |
Формирование |
моделей динамического программирования при |
проектировании оптимальных информационных процессов. |
|
8.2. Задание на лабораторную работу |
|
Найти решение |
задач структурного синтеза информационных |
процессов, используя модели динамического программирования.
8.3. Порядок выполнения работы
1.ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Отличительная особенность динамического программирования заключается в том, что
поиск решения задачи рассматривается как пошаговый |
процесс принятия |
решений. |
|||||||||
Фактически |
решение |
любой |
задачи математического |
программирования |
можно |
||||||
рассматриватьъ как многошаговый процесс, так как поиск оптимального плана |
X * |
можно |
|||||||||
осуществлять, |
отыскивая последовательно |
значения |
каж-й |
его |
составляющей |
||||||
x *i X * (i 1,2,.., n ) |
Множество |
(вектор) |
X * |
называют |
о п т и м а л ь н о й |
||||||
т р а е к т о р и е й , |
а |
любой набор последовательных компонент X * |
— |
отрезком |
|||||||
траектории. |
|
|
|
|
|
|
|
|
|
|
|
В основе теории динамического программирования лежит принцип оптимальности Р. Беллмана, согласно которому любой отрезок оптимальной траектории оптимален1. Если зафиксировать оптимальные значения отдельных компонент X*, то решением задачи являются те компоненты X*, которые оказались незафиксированными. Это позволяет осуществлять процесс поиска оптимального решения поэтапно, решая на каждом шаге экстремальную задачу с малым числом переменных (как правило, одномерную).
Сущность динамического программирования состоит в следующем. Процесс поиска решения разбивается на отдельные этапы (шаги). На каждом шаге принимается одно из допустимого множества L решение, результатом которого является
1 Классическая формулировка принципа оптимальности Р.Беллмана – «Оптимальная политика обладает тем свойством, что каковы бы ни были начальные состояния и принятое решение, последующие решения должны составлять оптимальную политику относительно состояния, возникающего в результате первоначального решения».

преобразование плана задачи. Следует отметить, что преобразования, выполненные на последующих шагах, не должны оказывать никакого влияния на предыдущие шаги. Любое правило поиска решения, которое дает допустимую последовательность решений, называют с т р а т е г и е й (пол и т и к о й ) .
Рассмотрим общую стратегию динамического программирования. Пусть имеется детерминированный N-этапный дискретный процесс поиска решения, характеризуемый на каждом i-ом шаге планом (вектором состояния) X i L . В общем случае значения,
принимаемые целевой функцией на i-ом шаге,
F ( X i ) F ( X i 1 , Q i ) ;
где Qi — управляющий оператор, с помощью которого осуществляется последовательный переход от одного состояния в другое:
X 1 1 ( X 0 , Q1 ); X 2
2 ( X 1 , Q 2 ); ...; X i
i ( X i 1 , Q i );...; X N
N ( X N 1 , Q N ).
Если целевую функцию представить как сумму ее приращений на отдельных этапах (любая целевая функция может быть приведена к такому виду), то
N |
1 |
F ( X N ) |
Pi ( X i , Q i 1 ), |
i |
0 |
где Pi ( X i , Qi 1 ) — приращение целевой функции на (i + 1)-ом шаге при выборе управляющего оператора Q i , если предшествующее состояние X i .
На каждом шаге управляющие операторы должны выбираться таким образом, чтобы максимизировать (минимизировать) F(N).
В дальнейшем будем рассматривать задачу максимизации целевой) функции и считать, что все сказанное относится и к задаче минимизации (для этого необходимо лишь
поменять знак перед целевой функцией). |
Пусть на ( N i 1) |
-ом |
шаге в качестве |
|||
управляющего one» ратора выбран Q 0 |
i 1 |
, |
в результате чего новый вектор состояния |
|||
|
N |
|
|
|
|
|
X N i 1 |
N i 1 ( X N 1 , Q N i 1 ) |
|
|
|
|
|
Значение целевой функции, полученное после выполнения ( N |
i |
1) -го шага, равно |
||||
F ( X N |
i , Q N i 1 ) Максимальное приращение |
целевой функции, получаемое после осу- |
ществления оставшихся (i |
1) шагов |
|
|
|
|
|
|
|
|
N |
1 |
f i 1 |
( X N i 1 ) |
max |
|
Pj ( X j , Q j 1 ) |
|
|
Q N |
i 2 |
,..., QN |
i N |
i 1 |
|
|
|
|

Для максимизации приращения целевой функции в результате выполнения всех г шагов необходимо так выбрать Q N i 1 ,..., Q N , чтобы максимизировать сумму
F ( X N i , Q N i 1 ) f i 1 ( X N i 1 ) . Получим следующие рекурентные соотношения:
|
|
|
|
|
|
|
|
|
f i ( X N |
i ) |
|
|
max |
F ( X N |
1 , Q N |
i |
|
1 ) |
f i 1 ( X N i |
1 ), |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q N |
i |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
|
2,..., |
N |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
f1 ( X N |
1 ) |
|
|
max |
F ( X N 1 , Q N ) |
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q N |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С помощью полученных выражений на каждом i-ом шаге, выбирают оптимальное |
||||||||||||||||||||||||||||||
управление Q 0 |
, |
|
начиная |
|
|
с последнего |
(N |
|
|
— 1)-го шага. |
Из соотношения |
|||||||||||||||||||||
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f1 ( X N |
1 ) |
max |
|
F ( X N |
1 , Q N ) |
|
находим |
Q N0 |
, |
при |
котором достигается максимум |
|||||||||||||||||||||
|
|
|
|
|
|
|
Q N |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
правой части, и величину |
|
f1 ( X N |
1 ) . Зная |
f1 ( X N |
1 ) , из выражения |
|
||||||||||||||||||||||||||
f 2 ( X N |
2 ) |
max |
|
|
F ( X N |
2 , Q ) N 1 |
f1 ( X N |
|
1 ) |
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
Q N |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
определим |
Q 0 |
1 |
и |
|
f |
2 |
( X |
N |
2 |
) и т. д. Рассчитав |
f |
N |
1 |
( X |
1 |
) , из соотношения |
||||||||||||||||
|
|
|
|
|
|
N |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
f |
N |
( X |
0 |
) |
max |
F ( X |
0 |
, Q |
1 |
) |
|
f |
N |
1 |
( X |
1 |
) |
вычислим Q |
0 |
и оптимальное значение целевой |
||||||||||||
|
|
|
|
Q1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
функции f N |
( X 0 ) . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
Двигаясь в обратном направлении (от начала в конец), получим непрерывную |
||||||||||||||||||||||||||||||
траекторию, состоящую из оптимальных отрезков: |
|
|
|
|||||||||||||||||||||||||||||
|
|
X 0 , |
X 1 |
|
1 ( X 0 , Q10 ), X 2 |
|
|
2 ( X 1 , Q 20 ), |
..., |
X N |
|
|
N ( X N |
1 , Q N ) |
|
Пример. Определить кратчайший путь между точками А и В, соединенными сложной сетью (рис. 3.11). Длина каждой связи сети задана.
Р е ш е н и е . Разобьем весь процесс поиска на этапы. Сначала найдем кратчайшие пути, соединяющие точки пересечения линии N — 1 с сетью и точку В (этап IV). Таких оптимальных путей три (отмечены на рис. 3.11

точками). Затем определим пути между точками пересечения N — 2 и N — 1 с сетью, которые приводят к минимальным суммарным путям, соединяющим точки на линии N —2 и точку В (этап III). В качестве продолжения данных путей необходимо выбирать пути, найденные на IV этапе. По существу, здесь используется соотношение
f 2 |
( X N 2 ) min |
F ( X N 2 , Q ) N 1 f1 ( X N 1 ) |
|
Q N |
1 |
Таких оптимальных путей будет четыре.
На этапе II находим кратчайшие пути, соединяющие точки на линии N — 3 и точку В. Перейдя к этапу I, находим минимальный суммарный путь из точки А в В (ALKOJ1FGHB), длина которого равна 23.
Из рассмотренного примера следует, что на каждом i-ом шаге перебираются не все пути, соединяющие точки на линии N — i и точку В, а только оптимальные, уже отобранные на предыдущем шаге. В этом и состоит преимущество, которое дает динамическое программирование. При этом эффективность рекуррентного подхода оказывается огромной в случае, когда полный перебор практически неосуществим.
В приведенных рекуррентных соотношениях последовательность операций обратна действительной их последовательности во времени. Однако можно разработать и прямой алгоритм, при котором числительный процесс направлен от исходного плана к оптимальному.
Динамическое программирование является универсальным методом отыскания глобального экстремума в любых математических моделях, для которых справедлив принцип оптимальности Беллмацна. Следует отметить, что данный принцип заведомо применим к линейным и сепарабельным целевым функциям2. При этом ограничения виде неравенств и целочисленности учитываются в рекуррентных соотношениях.
Основная трудность при использовании данного метода заключа-ется в сведении исходной задачи к математической модели, позволяю-щей использовать многошаговый процесс оптимизации, т. е. к модели описываемой рекуррентными соотношениями. В каждой конкретной задаче используют свои приемы, овладеть всем комплексом которых можно, лишь накопив известный опыт.
Метод динамического программирования широко используют при решении задач с нелинейной целевой функцией и небольшим числом нелинейных ограничений, а также комбинаторных задач и задач с целочисленными переменными. Классическим примером использования динамического программирования для решения задач конструкторского проектирования РЭА является волновой алгоритм Ли, положенный в основу многих известных программ трассировки печатных соединений.
2. Оптимизация структурной связности информационного процесса ( системы)
Функционально-узловой метод проектирования информационного процессапредусматр расчленение на отдельные функционально законченные еД (подпроцессы) различных уровней: узлы. В связи с этим при разработке структуры ор ровщик неизбежно сталкивается с задачей распределения подпроцессов (модулей предыдущего уровня) по коммутационным я ее (коммутационным пространствам) данного уровня иерархии. * " -решении основным критерием оптимальности компоновки М°ДУ
2 Под сепарабельной функцией понимают функцию F ( X ) |
F ( x |
1 |
, x |
2 |
,..., |
x |
n |
) , которая может быть |
|
|
|
|
|
|
|
|
|||
|
n |
|
|
|
|
|
|
|
|
представлена в виде F ( X ) |
c i Fi ( x i ) c1 F1 ( x1 ) ... |
c n Fn ( x n ) . |
|
|
|
||||
i |
1 |
|
|
|
|
|
|
|
|
является минимизация числа межмодульных связей, что необходимо для повышения надежности схем (за счет уменьшения числа разъем ных соединений), уменьшения влияния наводок и времени задержки сигнала в цепях (вследствие минимизации суммарной длины соедк нений), упрощения конструкции и повышения технологичности pas рабатываемого устройства.
Математическая формулировка. Для построения формальной математической модели компоновочных задач удобно использовать тес рию графов. При этом информационную схему интерпретируют ненапраЕ ленным мультиграфом, в котором каждому конструктивному или ф ункциональномуэлемент (модулю) ставят в соответствие вершину мультиграфа, а информационным связям схемы — его ребра. Тогда задача компоновки формулируется следующим образом. Задан мультиграф G(X, U). Требуется «разрезать» его на отдельные куски Gi(Xu Ј/t), G2(X2, [/2), ..., Gh(Xk, Uh) так, чтобы число ребер, соединяющих эти куски, былс минимальным, т. е.
к к
|
минимизировать |
|
при |
|
|
VGt (Xt,Ut), |
, Ut) с G (X, U) [Gt (Xt, Ut) Ф G3 (X,, U}) =* (Xt f] X,\ |
|
(J |
=l, 2,..., k, |
Gt (Xt, Ut) = G(X, U); |
где |
|
|
— множество ребер, Соединяющих куски 0,(Хг, Ut) |
и |
J, U}).
Конструктивными ограничениями в задачах компоновки являются: число кусков разрезания графа k\ число вершин в каждом из кусков графа (определяется числом конструктивных элементов, которые необходимо разместить на коммутационной плате, пластине БИС, подложке БГИС и т. д.): vG,(Xt, Ut) cz G(X, U)[\Xt\ = nt ± An]; максимальное число внешних связей каждого отдельно взятого куска графа (определяется количеством контактов используемого разъема, числом
выводов стандартного корпуса БИС или БГИС): yGi(Xi, Ut) cz k
cz G(X, U)[\UUtj\ < nit]; требование на раздельную компоновку
отдельных вершин хи Xj £ X в различных кусках графа (обусловлено конструктивными соображениями и условиями электромагнитной совместимости): yGt(Xt, Ui)<zzG(X, U)lxt £ Xt=>Xj
£ X \Xt].
Известные алгоритмы компоновки можно условно разбить на пять групп [9]: 1) алгоритмы, использующие методы целочисленного программирования; 2) последовательные алгоритмы; 3) итерационные алгоритмы; 4) смешанные алгоритмы; 5) алгоритмы, основанные на методе ветвей и границ.
Алгоритмы первой группы хотя и позволяют получить точное решение задачи, однако для устройства реальной сложности фактически де реализуемы на ЭВМ. В настоящее время наибольшее распространение получили приближенные алгоритмы компоновки (последовательные, итерационные, смешанные). При использовании последовательных алгоритмов сначала по определенному правилу выбирают первую вершину графа, затем осуществляют последовательный выбор вершин (из числа нераспределенных) и присоединение их к формируемому куску графа. После образования первого куска переходят ко второму и т. д. до получения желаемого разрезания исходного графа. В итерационных алгоритмах начальное разрезание графа на куски выполняют произвольным образом; оптимизация компоновки достигается парными или групповыми перестановками вершин графа из различных кусков. Процесс перераспределения вершин заканчивают при получении локального экстремума целевой функции, удовлетворяющего требованиям разработчика. В смешанных алгоритмах компоновки для получения начального варианта «разрезания» используется алгоритм последовательного формирования кусков; дальнейшая оптимизация решения осуществляется перераспределением вершин между
отдельными кусками графа.
Последовательные алгоритмы распределения конструктивных элементов. В
последовательных алгоритмах компоновки «разрезание» исходного графа G(X, U) на куски G^X^Ui), G2(X2, Uz), ■■■, Gk(Xk,Uk) сводится к следующему. В графе G(X, U) находят вершину xt £ X с минимальной локальной степенью р (xt) = min p (хЛ .
Если таких вершин несколько, то предпочтение отдают вершине с максимальным числом кратных ребер. Из подмножества вершин, смежных с вершинами формируемого куска графа Gt(Xi, Ui), выбирают ту, которая обеспечивает минимальное приращение связей куска с еще

нераспределенными вершинами. Данную вершину Xj £ X \Xt включают в Gi(Xi, t/t), если не происходит нарушения ограничения по числу внешних связей куска, т. е.
[xj 6 ГХ4&8 {Xj) = р (Х}) - 2 ^ а» -
= min Ъ(хт) & 2 b{xg)<m]—xJ[}Xl, xreVX% gs/yЈ
где a/s —элемент матрицы смежности исходного графа G(X, U); Ь(х ) — относительный вес вершины xg, равный приращению числа внешних ребер куска Gt(Xi, (А) при включении вершины xg во множе-•' ство Xt; E — множество индексов вершин, включенных в формируемый кусок графа на предыдущих шагах алгоритма; m — максимально допустимое число внешних связей отдельно взятого куска со всеми оставшимися.
Указанный процесс продолжается до тех пор, пока множество Xj не будет содержать п элементов либо присоединение очередной нераспределенной вершины х} к куску G1(X1,l/i) не приведет к нарушению ограничения по числу внешних соединений куска, равному
Следует отметить, что величина 8 (xg) не является
ной функцией IX^*, поэтому, для того чтобы убедиться в невозм. ности дальнейшего формирования куска вследствие нарушения последнего ограничения, необходимо проверить его невыполнимост' на последующих шагах увеличения множества Х4 вплоть до п. В к Ь честве окончательного варианта выбирают кусок Gi°(Xi°> Ui°)i CQ* держащий максимально возможное число вершин графа G(X,' Ц\ для которого выполняются ограничения на число внешних связей и входящих в него вершин (птш — «шах).
После образования куска Gi°(Xi°, U\o) процесс повторяют ддя формирования второго, третьего и т. д. кусков исходного графа с той лишь разницей, что рассмотрению подлежат вершины, не вошедшие в предыдущие куски.
Сформулируем алгоритм последовательной компоновки конструктивных элементов.
1°. ':0
2". Xf: =X(:=0; t: =t + 1; 0:=1; а:=птах,
где t, Q — порядковые номера формируемого куска и присоединяем вершины; а — ограничение на число вершин в куске.
3°. По матрице смежности исходного графа \ahp\NxN> где N — число вершин исходного графа (при большом значении N для сокращения объема оперативной памяти ЭВМ используем не саму матрицу смежности, а ее кодовую реализацию [29]), определяем локальные
N
степени вершин Х ^ 6 Х : р ( л ^ ) = V afp.\
4° Из множества нераспределенных вфшин X выбираем вершину Xj с р(л^) =minp(x/). Переходим к 6°. Если таких вершин
несколько, то переходим к 5°.
5 °. Из подмножества вершин X, с одинаковой локальной степенью выбирают вершину Xj с максимальным числом кратных ребер (минимальным числом смежных вершин), т. е. | TXJ | = min
| Yxf \ .
6°. Запоминаем исходную вершину формируемого куска графа х'Р : = Xj. Переходим к 10°. 7°. По матрице смежности |<2ftPUxJv строим множество Xs = = X л ГХ ( и определяем
относительные веса вершин хг
* Присоединение очередной вершины xj к множеству Xt приводит к увеличению числа внешних связей формируемого куска, если 6(*;-)> 0, либо к уменьшению,если
6(xj)< 0 (см. пример 4.2.).
Из множества Xs выбираем вершину *, с ЬЩ =
таких вершин несколько, то переходим к 9 °. v „ -,тга,тшм относительным ве-
|, т. е.
= max
xt = xt
и
, то переходим к 13°. 12°. Рассмотренные вершины включаем в
формируемый кусок
13°. в: =© + 1.
14°. Если в >а, то переходим к 15°, в противном случае — к 7°.
15°. Если |Х ,| < nmin, где пт\п —минимально допустимое число вершин в куске, то переходим к 21 °.
16°. Выбираем окончательный вариант сформированного куска графа: X ( : = X f; X : == X \Х
t;a: = nmax-
17°. Если |X|>nmax, то переходим к 20°. 18°. Если |X|<nmin, то переходим к 21°.
19°. Определяем число внешних связей последнего куска графа:
L.V . ^„„... t <; k —1, где k —число кусков разрезания графа, то переходим к 2°, в противном случае —к 23°.
21°. Предыдущий цикл «разрезания» считаем недействительным. Если t> 1, т. е. имеется как
где F- множество индексов вершин, входящих в X Если 2 |
минимум |
один |
ранее |
|
сформированный кусок, то |
||||
|
||||
b(xg)>m, то переходим к 21», в противном случае - к 24 . |
переходим |
к |
22°, в |
|
|
противном случае —к 23°. |
|||
|
22°. |
Ищем |
другой |
допустимый вариант формирования предыдущего куска с меньшим числом вершин: t : == t — 1; X : = X I) X t; X t : ={x(l)}; a : = |X И — 1; в : = 2. Переходим к 7°.
23°. Задача пр» заданных ограничениях не имеет решения. 24°. Конец работы алгоритма. Рассмотренный алгоритм прост, легко реализуется на ЭВМ и позволяет быстро получить
решение задачи компоновки. Блок-схема этого алгоритма приведена на рис. 4.4.
Данный алгоритм может эффективно применяться и при наличии ограничения на совместную компоновку отдельных вершин графа. В этом случае каждая такая вершина жестко закрепляется за определенным куском графа и формирование очередного куска начинается с непосредственного выбора этой вершины в качестве исходной х^

Рис. 4.4

,cM. операцию 6°). При этом L алгоритма исключаются операции 3° —5°. Проиллю-трируем работу последова-тельного алгоритма на примере-
Пример 4.2. «Разрезать» на «VCKH графО(Х, U), изображенный на рис. 4.5, при следующих ограничениях: 1) максимальное число связей каждого отдельно взятого куска 0г(Хг, Ut) не должно превышать т = 6; 2) число вершин в куске 3 < l^jl < 5. Из второго ограничения следует, ЧТо граф G(X, U) может быть «разрезан» на три или четыре
графа 7^;х7рГ
их справа к каждой строке матрицы:
Рис. 4.5
I/]). По матрице смежности исходного степени вершин xj £ X и приписываем
Определяем относительные веса вершин хг ребер. Получаем
хг х; "6
5 4 1
Так как Ь(хи) = mir,
к 6 Г*!
Ь(хг), то вО^, I/O включаем вершину W е.