Динамическое программирование - это вычислительный метод для решения задач управления определённой структуры. Данная задача с n переменными представляется как много шаговый процесс принятия решений. На каждом шаге определяется экстремум функции только от одной переменной.
Рассмотрим нелинейную задачу распределения ресурсов между предприятиями отрасли. Предположим, что указано n пунктов, где требуется построить или реконструировать предприятия одной отрасли, для чего выделено b рублей. Обозначим через fj(xj) прирост мощности или прибыли на j-том предприятии, если оно получит xj рублей капвложений. Требуется найти такое распределение (х1, х2,..., хn) капвложений между предприятиями, которое максимизирует суммарный прирост мощности или прибыли
Z=f1(x1)+f2(x2)+...+fn(xn)
при ограничении по общей сумме капвложений
х1 + х2 +...+хn = b
причём будем считать, что все переменные xj принимают только целые значения xj =1,2,...
Функции fj(xj) мы считаем заданными, заметив, что их определение -довольно трудоёмкая экономическая задача.
Воспользуемся методом динамического программирования для решения этой задачи.
Введём параметр состояния и определим функцию состояния. За параметр состояния x примем количество рублей, выделяемых нескольким предприятиям, а функцию состояния Fk(x) определим как максимальную прибыль на первых k предприятиях, если они вместе получат x рублей. Параметр x может меняться от 0 до b. Если из x рублей k-ое предприятие получит Хк рублей, то каково бы ни было это значение, остальные x-Хк рублей естественно распределить между предприятиями от 10-го до (к-1)-го предприятия, чтобы была получен максимальная прибыль Fk-1(x-xk). Тогда прибыль k предприятий будет равна fk(xk) + Fk-1(x-xk). Надо выбрать такое значение xk между 0 и x, чтобы эта сумма была максимальной, и мы приходим к рекуррентному соотношению:
Fk(x) = max {fk(xk) + Fk-1(x-xk)}
0 £ X £ x
для k=2,3,....,n.Если же k=1,то
F1(x)=f1(x).
Рассмотрим конкретный пример. Пусть производственное объединение состоит из 4-х предприятий (k=4).Общая сумма капвложений равна 700 тыс. рублей (b=700), выделяемые предприятиям суммы кратны 100 тыс. рублей.
Значения функций fj(xj) приведены в табл. 1.
Прежде всего заполняем табл.3. Значения f2(x2) складываем со значениями F1(x-x2)=f1(x-x2) и на каждой побочной диагонали находим наибольшее число, которое помечаем звёздочкой. Заполняем табл.3.
Продолжая процесс табулируем функции F3(x), x3(x) и т.д. В табл.6 заполняем только одну диагональ для значения x=700.
Таблица 1.
Xj | ||||||||
f1(xj) | ||||||||
f2(xj) | ||||||||
f3(xj) | ||||||||
f4(xj) |
Таблица 2.
x-х2 | |||||||||
х2 | |||||||||
85* | 160* | --- | |||||||
175* | 190* | --- | --- | ||||||
201* | 211* | 219* | --- | --- | --- | ||||
--- | --- | --- | --- | ||||||
--- | --- | --- | --- | --- | |||||
--- | --- | --- | --- | --- | --- | ||||
--- | --- | --- | --- | --- | --- | --- |
Таблица 3.
x | ||||||||
F2(x) | ||||||||
x2(x) |
Таблица 4.
x-x3 | |||||||||
x3 | |||||||||
85* | 160* | ||||||||
202* | --- | ||||||||
218* | 233* | 248* | --- | --- | |||||
261* | --- | --- | --- | ||||||
--- | --- | --- | --- | ||||||
--- | --- | --- | --- | --- | |||||
--- | --- | --- | --- | --- | --- | ||||
--- | --- | --- | --- | --- | --- | --- |
Таблица 5.
x | ||||||||
F3(x) | ||||||||
x3(x) |
Таблица 6.
x-x4 | |||||||||
x4 | |||||||||
284* | |||||||||
Наибольшее число диагонали в табл.6:
Zmax = 284 тыс. рублей
X4* = 300
X3*+X2*+X1*=700–300=400
В табл.5:
где сумма равна 400
Х3* = 200
Х1*+Х2*=400-200=200
В табл.3.
где сумма равна 200
Х2*=100
Х1*=100
Оптимальная программа: 1) Х1*=100; Х2*=100;
Х3*=200; Х4*=300
Zmax(X1*;... X4*)=284
ТЕОРИЯ МАТРИЧНЫХ ИГР.
Дана матрица: 1 -2 -4 0
2 2 1 -3
У первого игрока 2 чистых стратегии, у второго 4 чистых стратегий.
Формула математического ожидания выигрыша:
М(R, Q) = å å aij piqj
Для выявления активных стратегий воспользуемся рисунком 4 и преобразуем исходную матрицу добавив 5:
-2 | -4 | ||
-3 |
Û
Û М –точка минимально
гарантированных выигрышей
В3 и В4 – активные стратегии
Pi – вероятность выигрыша первого
игрока, применяя i-ую стратегию
Qj – вероятность выигрыша второго
игрока, применяя j-ую стратегию
n - цена игры
В1 | В2 | |
А1 | ||
А2 |
Имеем:
Найдем оптимальные стратегии: P*=(p1;p2), Q*=(q1;q2).
|
|
|
|
5p1+2p2=n Þ p1+6p2=5p1+2p2 Þ p1=p2 Þ p1=1/2
p1+p2=1 p1+p2=1 p1+p2=1 p2=1/2
P*=(1/2;1/2)
|
|
|
|
6q1+2q2=n Þ q1+5q2=6q1+2q2 Þ q1=3/5q2Þ q1=3/8
q1+q2=1 q1+q2=1 1+q2=1 q2=5/8
Q*=(3/8;5/8)
Найдем риски игры и среднее значение выигрыша.
M3–среднее значение выигрыша, если противник применит стратегию В3.
r – риск; r = s
M3=1/2*1+1/2*6=3,5
M4=1/2*1+1/2*6=3,5
D3=1*1/2+36*1/2-12,25=6,25; r3=Ö6,25=2,5
D4=25*1/2+4*1/2-12,25=2,25; r4=Ö2,25=1,5
Mобщ.=1*1/2*3/8+6*1/2*5/8+5*1/2*3/8+2*1/2*5/8=58/16=3,625
Среднее значение выигрыша равно 3,625.
Dобщ.=1*1/2*3/8+36*1/2*5/8+25*1/2*3/8+4*1/2*5/8-3364/256=4,18
sобщ.= 4,18=2,04