--PAGE_BREAK--1.2 Упрощениематрицы игры
Если какая-нибудь из стратегий игрока Аокажется доминирующей каждую из остальных его стратегий, то она и должна выбираться игроком Ав качестве предпочтительной, поскольку его выигрыш при этой стратегии и при любом состоянии природы Пне меньше выигрыша при любой из остальных стратегий.
Если же матрица игры не обладает указанным свойством, т.е. у игрока Анет стратегии, доминирующей каждую из остальных его стратегий, то нужно посмотреть, нет ли у него доминируемых или дублирующих стратегий. При наличии таковых, соответствующие им строки матрицы можно удалить, уменьшив тем самым ее размерность.
Таким образом, в играх с природой можно и полезно пользоваться принципом доминирования стратегий игрока А(строк матрицы игры). Однако принцип доминирования стратегий (состояний) природы (столбцов матрицы игры) недопустим, поскольку природа не выбирает свои состояния с целью по возможности большего уменьшения выигрышей игрока А,для нее нет более или менее эффективных состояний.
1.3 Критерий Байеса относительно выигрышей
Предположим, что статистик из прошлого опыта известны не только состояния П
j, j
= l, ..., п,в которых может находиться природа П,но и соответствующие вероятности q1 , ...,qnс которым природа П реализует эти состояния. Тогда мы находимся в ситуации принятия решения в условиях риска.
Показателем эффективности стратегии Аiпо критерию Байеса относительно выигрышей называется среднее значение, или математическое ожидание выигрыша i-йстроки с учетом вероятностей всех возможных состояний природы. Обозначая это среднее значение через āi,будем иметь:
āi= q1ai1+ q2ai2+ … + qnain= , i=1, …,m. (6)
Таким образом, atпредставляет собой взвешенное среднее выигрышей i-йстроки, взятых с весами q1 , ...,qn.
Оптимальной среди чистых стратегий по критерию Байеса относительно выигрышей считается стратегия Аiс максимальным показателем эффективности, т.е. с максимальным средним выигрышем:
āi0=max āi. (7)
1≤ i ≤m
Таким образом, выбранное решение по этому критерию является оптимальным не в каждом отдельном случае, а в среднем.
Распространим понятие показателя эффективности по критерию Байеса относительно выигрышей на смешанные стратегии игрока П.
Пусть P= (p1 , ...,pn)-некоторая смешанная стратегия игрока А, при которой чистая стратегия Аiиспользуется им с вероятностью pi, i=1, ..., т. Тогда выигрыш игрока Апри смешанной стратегии P= (p1 , ...,pn)и при состоянии природы П
jбудет равен
H (P, Пj)= , j=1, …,n. (8)
Показателем эффективности смешанной стратегии P= (p1 , ...,pn)по критерию Байеса относительно выигрышей назовем среднее значение выигрышей, с учетом вероятностей q1 , ...,qnсостояний природы. Обозначим этот показатель через .
Получим:
= ===. (9)
Таким образом показатель эффективности смешанной стратегии P= (p1 , ...,pn)по критерию Байеса относительно выигрышей представляет собой взвешенное среднее показателей эффективности чистых стратегий А
i, i
= l, ..., m, по тому же критерию с весами pi, i
= l, ..., m.
Если, в частности, стратегия P= (p1 , ...,pn)является чистой стратегией А
k, k
= l, ..., m, то pi= 0 i≠ k, pk= 1,и ее показатель эффективности как смешанной стратегии ,превращается в ее показатель эффективности как чистой стратегии āk, вычисляемый по формуле (6).
Пусть SA— множество всех смешанных (в том числе и чистых) стратегий игрока A. Оптимальной среди всех стратегий множества SAпо критерию Байеса относительно выигрышей назовем стратегию P, показатель эффективности (9) которой максимален:
max=. (10)
PϵSa
Стратегия А
iоптимальная среди чистых стратегий по критерию Байеса относительно выигрышей, является оптимальной по тому же критерию и среди всех смешанных стратегий множества SA.
При принятии решений в условиях риска по критерию Байеса относительно выигрышей можно обойтись только чистыми стратегиями, не используя смешанные.
продолжение
--PAGE_BREAK--1.4 Критерий Байеса относительно рисков
Рассмотрим ту же игру с природой матрицей, в которой известны вероятности состояний природы q1 , ...,qn.При принятии решений в условиях риска можно пользоваться не только средними выигрышами, но и средними рисками. Составим матрицу рисков для матрицы A, используя формулу рисков (3)
Таблица 3– Матрица рисков
П
j
А
i
П
1
П
2
…
П
n
А1
r11
r12
…
r1n
А2
r21
r22
…
r2n
…
…
…
…
…
А
m
rm1
rm2
…
rmn
Показателем неэффективности стратегии А
iпо критерию Байеса относительно рисков называется среднее значение, или математическое ожидание риска i-й строки матрицы (таблица 3), вероятности которых, очевидно, совпадают с вероятностями состояний природы. Обозначим средний риск при стратегии А
i через ṝi,тогда
ṝi= q1ri1 +q2ri2+ … + qnrin= , i=1, …,m. (11)
является взвешенной средней рисков i-й строки матрицы (таблица 3) с весами pi, i=1, ..., т.
Оптимальной среди чистых стратегий по критерию Байеса относительно рисков является стратегия П
j, показатель неэффективности (11) которой минимален, т.е. минимален средний риск
ṝi0=minṝi. (12)
1≤ i≤m
Определим понятие риска при использовании игроком А смешанной стратегиии при состоянии природы П
j, j
= l, ..., п, как разность
r(P,П
j) = [max H (U, Пj)] — H (P, Пj), j=1, …,n. (13)
UϵSa
между максимальным выигрышем maxH(U, Пj) при всех смешанных стратегиях U= (u1 , ...,un)ϵSAи при состоянии природы П
jи выигрышем H(P, Пj) при смешанной стратегии P= (p1 , ...,pn)и при состоянии природы П
j.
В качестве показателя неэффективности смешанной стратегии P= (p1 , ...,pn) покритерию Байеса относительно рисков рассмотрим взвешенную среднюю рисков (13) с весовыми коэффициентами, равными вероятностям q1 , ...,qnсостояний природы:
=. (14)
Оптимальной среди всех смешанных (в том числе и чистых) стратегий по критерию Байеса относительно рисков будем считать стратегию P, показатель неэффективности которой, вычисляемый по формуле (14), минимален:
min=. (15)
PϵSa
Если А
i-стратегия, оптимальная среди чистых стратегий по критерию Байеса относительно рисков, то она является оптимальной по тому же критерию и среди всех смешанных стратегий множества SA.
При принятии решения в условиях риска по критерию Байеса относительно рисков так же как и в случае критерия Байеса относительно выигрышей достаточно использовать одни чистые стратегии, не рассматривая смешанные.
Критерии Байеса относительно выигрышей и относительно рисков эквивалентны, т.е. если стратегия А
iявляется оптимальной по критерию Байеса относительно выигрышей, то она является оптимальной и по критерию Байеса относительно рисков, и наоборот, стратегия А
i, оптимальная по критерию Байеса относительно рисков, оптимальна и по критерию Байеса относительно выигрышей.
продолжение
--PAGE_BREAK--1.5 Критерий Лапласа относительно выигрышей
В предыдущих двух критериях Байеса известные вероятности q1 , ...,qnсостояний природы могли быть получены из статистических данных, отражающих многократное решение подобных задач, или в результате наблюдений за поведением природы. Однако, довольно часто складывается такая ситуация, когда мы лишены возможности определить вероятности состояний природы указанными способами. Желая все же принять решение в условиях риска, мы вынуждены оценить вероятности состояний природы субъективно. Существуют различные методы численной субъективной оценки степени правдоподобности состояний природы. Один из них состоит в том, что мы не можем отдать предпочтение ни одному из состояний природы, и потому считаем их равновероятными, т.е. q1 = .. .=qn= . Этот принцип называется «принципом недостаточного основания» Лапласа. На нем основан критерий Лапласа относительно выигрышей.
Показателем эффективности стратегии А
iпо критерию Лапласа относительно выигрышей называется среднее арифметическое выигрышей i-й строки:
āi= , i=1, …,m. (16)
Оптимальной среди чистых стратегий по критерию Лапласа относительно выигрышей считается стратегия А
i
показатель эффективности, кот-
орой, вычисляемый по формуле (16), максимален, т.е. āi= maxāi.
1≤ i≤m
Очевидно, что критерий Лапласа относительно выигрышей есть частный случай критерия Байеса относительно выигрышей при q1 = .. .=qn= .Поэтому все утверждения на счет критерия Байеса относительно выигрышей, остаются в силе и для критерия Лапласа относительно выигрышей.
Подставляя (16) в (9), получим показатель эффективности смешанной стратегии P= (p1 , ...,pn)по критерию Лапласа относительно выигрышей
= . (17)
Стратегия P= (p1 , ...,pn)будет оптимальной среди всех смешанных стратегий множества SAпо критерию Лапласа относительно выигрышей, если она максимизирует показатель эффективности (17).
Оптимальная среди чистых стратегия А
iпо критерию Лапласа относительно выигрышей является оптимальной по тому же критерию и среди всех смешанных стратегий.
продолжение
--PAGE_BREAK--1.6 Критерий Лапласа относительно рисков
Критерий Байеса относительно рисков при равновероятных состояниях природы, q1 = .. .=qn= , превращается в критерий Лапласа относительно рисков. Тогда величина , получающаяся из (11) при qj= ,j=1, …,n,илиболее простая величина представляет собой показатель неэффективности стратегии А
iпо критерию Лапласа относительно рисков. Следовательно, оптимальной среди чистых стратегий по критерию Лапласа относительно рисковявляется стратегия А
i
, показатель неэффективности которой минимален. Подставляя в (14) значения qj= ,j=1, …,n, получим показатель неэффективности смешанной стратегии Р по критерию Лапласа относительно рисков,вместо которого можно рассматривать более простую величину =.Стратегия Р,для которой показатель принимает минимальное значение, является оптимальной среди всех стратегий множества SA.Чистая стратегия, оптимальная среди чистых стратегий по критерию Лапласа относительно рисков, оптимальна по тому же критерию и среди всех смешанных стратегий множества SA.
Критерии Лапласа относительно выигрышей и относительно рисков эквивалентны.
1.7 Критерий относительных значений вероятностей состояний природы с учетом выигрышей (рисков)
В практике принятия решений часто встречается случай, когда нам неизвестны вероятности состояний природы, но мы имеем представление о том, какие состояния природы более правдоподобны, какие менее правдоподобны, а какие равноправдоподобны. Поэтому мы можем расположить (неизвестные) вероятности состояний природы в виде убывающей или возрастающей последовательности. Для простоты предположим, что расположение q1, ...,qnуже и есть монотонная последовательность. Если, например, эта последовательность строго убывает, то правдоподобнее всех состояние П1затем по степени правдоподобности следует состояние П2, и т. д., наименьшей правдоподобностью обладает состояние Пn. Не зная, на сколько одна вероятность состояния природы отличается от другой, мы можем предположительно придать им относительные значения, пропорциональные членам некоторой (подходящей на наш взгляд) монотонной последовательности положительных чисел τ1, ...,τn, т.е.
q1 : q2 :q3 :… :qn= τ1 : τ2 :τ3 :… :τn. (18)
Из (18) следует, что если q1 , ...,qnубывающая, соответственно возрастающая, последовательность, то убывающей, соответственно возрастающей, является и последовательность τ1 , ...,τn.
При этом следует учитывать нормировочное равенство
=1 (19)
Вероятность j-ого столбца определяется по формуле:
qj= , j=1, …,n (20)
Из (20) и (19) получим:
1 = = = . (21)
Из (21) выразим q1вероятность возникновения состояния природы П1:
q1= . (21)
Тогда:
qj= . (22)
Мы нашли значения вероятностейqj,j=1, …,n,состояний природы.
Критерий Байеса относительно выигрышей при вероятностях состояний природы назовемкритериемотносительных значений вероятностей состояний природы с учетом выигрышей.При этом критерии показателем эффективности стратегииА
iявляется величинаāi, получающаяся из равенства (6) подстановкой в него вероятностей (22):
āi=, i=1, …, m. (23)
Так как множитель не зависит от номера i,то в качестве показателя эффективности стратегии А
iвместо величины (23) можно рассматривать величину:
āi =, i=1, …, m. (23)
Оптимальной среди чистых стратегий по рассматриваемому критерию является стратегия с максимальным показателем эффективности (23).
Критерий Байеса относительно рисков при вероятностях состояний природы назовем критерием относительных значений вероятностей состояний природы с учетом рисков. При этом показатель неэффективности стратегии подсчитывается по формуле (6), вероятности q1 , ...,qnв которой представлены формулой (2.20.31):
ṝi=, i=1, …, m. (24)
Оптимальной среди чистых стратегий по обсуждаемому критерию является стратегия с минимальным показателем неэффективности (24).
2 Алгоритмическое обеспечение
Выбор алгоритма решения задачи зависит от поставленных условий. Если вероятность состояний природы не определена и события равновероятны, то следует остановиться на критерии Лапласа. Если вероятность состояний природы не определена, но события имеют различную вероятность, то следует выбрать критерий относительных значений вероятностей состояний природы. В противном случае следует использовать критерий Байеса. Если исходными данными является платежная матрица, то для решения будут использоваться критерии относительно выигрышей, и критерии относительно рисков для матрицы рисков.
Проиллюстрируем алгоритм принятия решения в условиях риска на конкретном примере с использованием Excel. Для демонстрации всех критериев будем использовать платежную матрицу без заданной вероятности. Рассмотрим 2 случая: события имеют одинаковую вероятность и отличную друг от друга. На основе матрицы выигрышей построим матрицу рисков.
Рассмотрим игру с природой где игрок имеет 7 (m=7) чистых стратегий A1 , A2,A3,A4,A5,A6,A7, природа П может находиться в одном из четырех (n=5) состояний П
1, П
2, П
3, П4, П
5. Статистик оценил последствия применения каждой из своих чистых стратегий Ai, в зависимости от состояний П
jприроды, результаты представлены в платежной матрице 7×5 (таблица 3).
Таблица 3 – Платежная матрица
A=
П
j
А
i
П
1
П
2
П
3
П
4
П
5
А1
5
6
4
3
4
А2
7
4
5
2
3
А3
2
3
6
4
2
А
4
4
8
3
1
А
5
4
7
4
6
2
А
6
7
4
5
2
3
А
7
1
3
1
1
1
продолжение
--PAGE_BREAK--
Упрощение матрицы.У игрока А нет стратегии, доминирующей каждую из остальных его стратегий, следовательно, нужно посмотреть, нет ли у него доминируемых или дублирующих стратегий. При наличии таковых, соответствующие им строки матрицы можно удалить, уменьшив тем самым ее размерность. Стратегия А2доминирует стратегию А7 и потому стратегию А7 можно отбросить; стратегии А2и А6дублирующие, следовательно, одну из них, например А6, можно удалить. В результате получим матрицу (таблица 3) размерности 5x5:
Таблица 4 – Упрощенная платежная матрица
A=
П
j
А
i
П1
П2
П3
П4
П5
А1
5
6
4
3
4
А2
7
4
5
2
3
А3
2
3
6
4
2
А4
4
8
3
1
А5
4
7
4
6
2
Критерий Лапласа относительно выигрышей.Вероятности q1 , q2,q3, q4,q5 состояний природы равны между собой и имеют значение qj= 0,2.
Показатель эффективности стратегии А
iпо критерию Байеса относительно выигрышейрассчитывается для i-й строки по формуле (16):
ā1= = 0,2*(5+6+4+3+4) = 4,4;
ā2= 4,2;
ā3= 3,4;
ā4= 3,2;
ā5= 4,6.
Как видно из полученных результатов оптимальной среди чистых стратегий по критерию Лапласа относительно выигрышей является ā50 = 4.6, т.к. значение ее максимально.
Критерий Лапласа относительно рисков. Построим на основе матрица выигрышей матрицу рисков, для этого дополним таблицу 4 строкой значений показателей благоприятности βj(1):
Таблица 5 – Показатели благоприятности
П
j
А
i
П1
П2
П3
П4
П5
А1
5
6
4
3
4
А2
7
4
5
2
3
А3
2
3
6
4
2
А4
4
8
3
1
А5
4
7
4
6
2
βj
7
8
6
6
4
Рискrij(2) эторазность между показателем благоприятности βjсостояния природы П
jи выигрышем aij. Для матрицы Аматрица рисков RAимеет ту же размерность 5x5:
Таблица 6 – Матрица упущенных возможностей
RA=
П
j
А
i
П1
П2
П3
П4
П5
А1
2
2
2
3
А2
4
1
4
1
А3
5
5
2
2
А4
3
3
6
3
А5
3
1
2
2
Показатель неэффективности стратегии А
iпо критерию Байеса относительно рисковрассчитывается по формуле (11):
ṝ1= = 0,2*(2+2+2+3+0) = 1,8;
ṝ2= 2;
ṝ3= 2,8;
ṝ4= 3;
ṝ5= 1,6.
Оптимальной среди чистых стратегий по критерию Байеса относительно рисковявляется ṝ50= 1.6,т.к. значение ее минимально. Как и предполагалось результаты, полученные по матрице выигрышей и по матрице рисков, совпадают. Для следующего критерия расчеты относительно рисков производиться не будут.
Критерийотносительных значений вероятностей состояний природы с учетом выигрышей. Как уже известно, этот критерий используется в тех случаях, когда вероятность событий не известна, но статистик имеет представление об отношении вероятности одного состоянии природы к другим. Игрок Aрешил для себя, что менее правдоподобно возникновение П1, затем по степени правдоподобности следуют состояния П2, П3 и П4, наибольшей правдоподобностью обладает П5, последовательность возрастает. Для определения вероятности q1 , q2,q3, q4,q5зададим произвольнуюмонотонную возрастающую последовательность положительных чисел τ1, τ2,τ3, τ4, τ5: 9, 16, 18, 22, 23. Вероятность состояния природы П1определяется по формуле (22):
q1= ==≈0,1023.
q2≈0,1818;
q3≈0,2046;
q4= 0,25;
q5= 0,2614;
Дополним матрицу игры (таблица 4) строкой с найденными вероятностями:
Таблица 5 – Матрица игры с заданными вероятностями
П
j
А
i
П1
П2
П3
П4
П5
А1
5
6
4
3
4
А2
7
4
5
2
3
А3
2
3
6
4
2
А4
4
8
3
1
А5
4
7
4
6
2
q1
0,102
3
0,1818
0,204
6
0,25
0,261
4
Показатель эффективности стратегии Аiпо критерию Байеса относительно выигрышейрассчитывается по формуле (6):
ā1= = 5*0,1023+6*0,1818+4*0,2046+3*0,25+4*0,2614=4,2159;
ā2= 3,75;
ā3= 3,5;
ā4= 2,7386;
ā5= 4,5227;
Оптимальной среди чистых стратегий по критерию Байеса относительно выигрышейявляется ā50=4,5227, значение максимально.
Таким образом, выбранное решение по этому критерию является оптимальным не в каждом отдельном случае, а в среднем.
Результаты, полученные по трем критерия, совпадают.
продолжение
--PAGE_BREAK--3 Программное обеспечение
Для реализации алгоритма принятия решения в условиях риска воспользуемся средой программирования Delphi7.
Программа состоит из двух модулей, которые реализуют ввод исходной информации, считывание ее, преобразование входной информации в выходную и вывод выходной информации на экран.
Программа работает в различных режимах, которые зависят от задаваемых параметров:
1) Тип матрицы:
a) Матрица игры (без матрицы рисков);
b) Матрица игры с расчетом матрицы рисков;
c) Матрица рисков.
2) Вероятность состояний природы:
a) Вероятность определена;
b) Вероятность неопределенна:
i) События равновероятны;
ii) События не равновероятны.
В качестве глобальных параметров выступают количество состояний природы (m) и количество стратегий игрока (n). После каждого изменения их значений форма перерисовывается в соответствии с заданной размерностью.
Входными параметрами являются матрица игры либо матрица рисков и вектор вероятности (q). Вектор вероятности вводятся в последнюю строку (если «Вероятность определена»), либо задается произвольной последовательностью чисел (если «События не равновероятны»), либо отсутствует (если «События равновероятны»).
Выходной информацией является номер оптимальной стратегии, который после обработки исходной информации выводится в матрицу планирования. Оптимальная стратегия находится соответственно для матрицы игры или матрицы рисков, или для обеих сразу. Пользователь имеет возможность упрощение матрицы, очистки полей.
Основной модуль служит для ввода данных и необходимых настроек.
Кнопка «Просчитать риски» работает только для матрицы игры, служит для расчета матрицы рисков.
Кнопка «Задать» задает вероятность возникновения определенного состояния природы на основе произвольной последовательности чисел, работает при «События не равновероятны».
Интерфейс основного модуля:
Дополнительные модуль подключается в случае задания параметра «События не равновероятны», где пользователь рассчитывает вероятность по произвольной последовательности чисел. Количество столбцов в основном модуле и в дополнительном взаимосвязаны.
Интерфейс дополнительного модуля:
В модулях реализована проверка на заполнение полей в таблицах, при возникновении такой ситуации пользователю выдается сообщение:
Проверка на деление на ноль:
При нажатии на кнопку «Упростить», возможны два варианта:
и второй, где А с номером убранной строки:
Если в результате упрощения осталась только 1 строка, где А с номером убранной строки:
4 Исследовательская часть
Проведем исследование работоспособности программы на тестовых примерах. Рассмотрим матрицу игры с заданной вероятностью, матрицу игры и рисков с равной вероятностью и матрицу рисков с относительнымизначениями вероятностей состояний природы.
Матрица игры с заданной вероятностью. Возможно строительство четырех типов электростанций А1 — тепловые, А2 — приплотинные, А3 — безшлюзовые, А4 — шлюзовые. Эффективность каждого типов электростанций определяется сочетанием различных факторов, в том числе и факторов, зависящих от различных случайных явлений: погодных условий. режима рек, стоимости топлива и его перевозки, сейсмической обстановки района и т.д. Число возможных сочетаний факторов равно десяти, обозначим их как состояния природы (П1, П2, П3, П4, П5, П6, П7, П8, П9, П10). Вероятности возникновения каждой обстановки равны: q1=0,12, q2=0,04,q3=0,09, q4=0,1,q5=0,06,q6=0,15,q7=0,07,q8=0,12,q9=0,16,q10=0,9. Экономическая эффективность типа электростанций в зависимости состояний природы задается в программном модуле:
Доминирующих либо дублирующих строк нет, упрощение не требуется:
Стратегия А4 является оптимальной:
Матрица игры и построенная на ее основе матрица рисков с равной вероятностью. На промышленном предприятии готовятся к переходу на выпуск новых видов продукции товаров народного потребления. При этом возможны восемь решений А1, А2, А3, А4, А5, А6, А7, А8, каждому из которых соответствует определенный вид продукции или их сочетание. Результаты принятых решений существенно зависит от обстановки (степени обеспеченности производства материальными ресурсами), которая может быть семи видов: П1, П2, П3, П4, П5, П6, П7. Каждому сочетанию Аi, i=1, …, 8 и обстановки Пj, j=1, …, 7, соответствует определенный выигрыш — эффективность выпуска новых видов продукции. Всевозможные выигрыши записываются в программный модуль:
Доминирующих либо дублирующих строк нет, упрощение не требуется:
Рассчитаем матрицу рисков:
Стратегия А3 является оптимальной:
Матрица рисков с относительнымизначениями вероятностей состояний природы. Крупный инвестор может вложить свою прибыль в семь бизнес проектов A1 , A2,A3,A4,A5,A6,A7, при этом возможны пять состояний рынка П
1, П
2, П
3, П4, П
5. Каждому сочетанию Аi, i=1, …, 7 и обстановки Пj, j=1, …, 5, соответствует определенный риск упустить выгоду.
Всевозможные выигрыши записываются в программный модуль:
Строка А7 больше А2, А6 равна А2:
Вероятность возникновения определенных состояний рынка инвестору не известна, но имеет представление, какие события более, а какие менее вероятны. Он решил,что менее правдоподобно возникновение П1, затем по степени правдоподобности следуют состояния П2, П3 и П4, наибольшей правдоподобностью обладает П5. Не зная, на сколько одна вероятность состояния природы отличается от другой, он придал им относительные значения, 9: 16: 18: 22: 23 для П
1, П
2, П
3, П4, П
5соответственно. Нажав на кнопку задать вводится последовательность:
Расчет вероятности:
Оптимальное значение А5:
продолжение
--PAGE_BREAK--Заключение
В ходе выполнения курсовой работы был исследован процесс принятия решений в условиях риска. Для поиска оптимального значения были рассмотрены критерии Байеса, Лапласа и критерий оптимальных значений вероятностей состояний природы относительно выигрышей и рисков.
Кроме этого был создан программный модуль, реализующий данные алгоритмы.
В данный работе были выполнены следующие задачи:
1. Выполнено подробное математическое описание поиска оптимальной стратегии в условиях риска.
2. Детально описан алгоритмрешения задачи. Проиллюстрирована работа алгоритма на контрольном примере с использованием стандартных программных средств (Excel) с численным выводом результатов.
3. Выбрана среда программированияDelphi7. Описанамодульная структуры программного комплекса. Представлен интерфейс.
4. Исследована работоспособность программы на трех тестовых примерах.
Список литературы
1. ЛабскерЛ. Г.Теория критериев оптимальности и экономические решения – М.: Издательство «КноРус», 2005. – 744 с.
2. Хемди А. ТахаВведение в исследование операций. – М.: «Вильямс», 2007. – 903 с.
3. Шапкин А.С. Экономитческие и финансовые риски. Оценка, управление, портфель инвестиций[Текст]: Учебное пособие для вузов/ А.С. Шапкин – М.: Издательско – торговая корпорация «Дашков и К°», 2003. — 544 с.
4. Экономико-математическое моделирование: Учебник для студентов вузов/ Под общ. ред. И.Н. Дрогобыцкого.- М.: Издательство “Экзамен”, 2004.- 800 с.
5. www.delphisources.ru/
Приложение
Основноймодуль:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, Grids;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
GroupBox3: TGroupBox;
RadioButton3: TRadioButton;
Button2: TButton;
RadioButton4: TRadioButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
StringGrid1: TStringGrid;
GroupBox4: TGroupBox;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
GroupBox5: TGroupBox;
Button1: TButton;
procedure CheckBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure CheckBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure CheckBox2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure CheckBox2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid3KeyPress(Sender: TObject; var Key: Char);
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
otvet:integer;
implementation
uses unit2;
{$R *.dfm}
procedure TForm1.CheckBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CheckBox2.Checked:=False;
RadioButton1.Enabled:=False;
RadioButton2.Enabled:=False;
Button2.Enabled:=false;
StringGrid2.Enabled:=true;
end;
procedure TForm1.CheckBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then begin
CheckBox1.Checked:=true;
CheckBox2.Checked:=False;
RadioButton1.Enabled:=False;
RadioButton2.Enabled:=False;
Button2.Enabled:=false;
StringGrid2.Enabled:=true;
end;
end;
procedure TForm1.CheckBox2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 13 then begin
CheckBox2.Checked:=true;
CheckBox1.Checked:=False;
RadioButton1.Enabled:=true;
RadioButton2.Enabled:=true;
StringGrid2.Enabled:=false;
if RadioButton2.Checked=True then
Button2.Enabled:=true;
end;
end;
procedure TForm1.CheckBox2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CheckBox1.Checked:=False;
RadioButton1.Enabled:=true;
RadioButton2.Enabled:=true;
StringGrid2.Enabled:=false;
if RadioButton2.Checked=True then
Button2.Enabled:=true;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Button2.Enabled:=true;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Button2.Enabled:=false;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
GroupBox4.Caption:='Ìàòðèöà èãðû';
Button3.Enabled:=True;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
Form1.Height:=480;
GroupBox4.Caption:='Ìàòðèöà ðèñêîâ';
Button3.Enabled:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
Form1.Top:=210;
Form1.Left:=410;
Form1.Height:=480;
StringGrid1.ColCount:=SpinEdit1.Value+1;
StringGrid1.RowCount:=SpinEdit2.Value+1;
StringGrid2.ColCount:=SpinEdit1.Value+1;
StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);
StringGrid1.DefaultRowHeight:=round((StringGrid1.Height-10)/StringGrid1.RowCount);
StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);
for i:=1 to SpinEdit1.Value do
StringGrid1.Cells[i,0]:='Ï'+inttostr(i);
for i:=1 to SpinEdit2.Value do
StringGrid1.Cells[0,i]:='A'+inttostr(i);
StringGrid2.Cells[0,0]:='q';
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
var i:integer;
begin
StringGrid1.ColCount:=SpinEdit1.Value+1;
StringGrid1.DefaultColWidth:=round((StringGrid1.Width-10)/StringGrid1.ColCount);
StringGrid2.ColCount:=SpinEdit1.Value+1;
StringGrid2.DefaultColWidth:=round((StringGrid2.Width-10)/StringGrid2.ColCount);
for i:=1 to SpinEdit1.Value+1 do
StringGrid1.Cells[i,0]:='Ï'+inttostr(i);
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
var i:integer;
begin
StringGrid1.RowCount:=SpinEdit2.Value+1;
StringGrid1.DefaultRowHeight:=round((StringGrid1.Height-10)/StringGrid1.RowCount);
for i:=1 to SpinEdit2.Value+1 do
StringGrid1.Cells[0,i]:='A'+inttostr(i);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,j:integer;
f:boolean;
a: array [0..12] of integer;
begin
f:=true;
for i:=0 to SpinEdit2.Value-1 do
a[i]:=0;
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
if StringGrid1.Cells[i,j]='' then f:=false;
if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')
else begin
Form1.Height:=757;
StringGrid3.ColCount:=SpinEdit1.Value+1;
StringGrid3.RowCount:=SpinEdit2.Value+1;
StringGrid3.DefaultColWidth:=round((StringGrid3.Width-10)/StringGrid3.ColCount);
StringGrid3.DefaultRowHeight:=round((StringGrid3.Height-10)/StringGrid3.RowCount);
for i:=1 to SpinEdit1.Value do
StringGrid3.Cells[i,0]:='Ï'+inttostr(i);
for i:=1 to SpinEdit2.Value do
StringGrid3.Cells[0,i]:='A'+inttostr(i);
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
if a[i-1]
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
StringGrid3.Cells[i,j]:=inttostr(a[i-1]-strtoint(StringGrid1.Cells[i,j]));
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
var i,j:integer;
begin
Form1.Height:=480;
for i:=1 to SpinEdit1.Value do begin
for j:=1 to SpinEdit2.Value do begin
StringGrid1.Cells[i,j]:='';
StringGrid3.Cells[i,j]:='';
end;
StringGrid2.Cells[i,0]:='';
Form2.StringGrid1.Cells[i,1]:='';
Form2.StringGrid2.Cells[i,1]:='';
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form2.Close;
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
begin
if not (key in ['0'..'9',#8]) then key:=#0;
end;
end;
procedure TForm1.StringGrid2KeyPress(Sender: TObject; var Key: Char);
begin
begin
if not (key in ['0'..'9','.',',',#8]) then key:=#0;
end;
end;
procedure TForm1.StringGrid3KeyPress(Sender: TObject; var Key: Char);
begin
begin
if not (key in ['0'..'9',#8]) then key:=#0;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i,j,max,maxr:integer;
f:boolean;
a: array [0..12] of Real;
begin
f:=true;
max:=0;
maxr:=0;
for i:=0 to SpinEdit2.Value-1 do
a[i]:=0;
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
if StringGrid1.Cells[i,j]='' then f:=false;
if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')
else begin
f:=true;
// ÊÐÈÒÅÐÈÉ ÁÀÉÅÑÀ
if CheckBox1.Checked=true then begin
for i:=1 to SpinEdit1.Value do
if StringGrid2.Cells[i,0]='' then f:=false;
if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')
else begin
// äëÿ ìàòðèöû èãðû ïîäñò÷åò ìàò îæèäàíèÿ
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);
// äëÿ ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà
if RadioButton3.Checked=true then begin
for i:=1 to SpinEdit2.Value-1 do
if a[max]
if Form1.Height
ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;
// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà
if RadioButton4.Checked=true then begin
for i:=1 to SpinEdit2.Value-1 do
if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(max+1)); end;
// äëÿ ðàñ÷èòàííîé ìàòðèöû ðèñêîâ
if (Form1.Height=757) and (RadioButton3.Checked=true) then begin
f:=true;
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
if StringGrid3.Cells[i,j]='' then f:=false;
if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')
else begin
for i:=0 to SpinEdit2.Value-1 do
a[i]:=0;
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j])*strtofloat(StringGrid2.Cells[i,0]);
for i:=1 to SpinEdit2.Value-1 do
if a[maxr]>a[i] then maxr:=i;
if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ ñîâïàäàþò: À'+inttostr(max+1))
else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(maxr+1))
end;
end;
end;
end;
// ÊÐÈÒÅÐÈÉ ËÀÏËÀÑÀ
If (CheckBox2.Checked=true) and (RadioButton1.Checked=true) then begin
// äëÿ ìàòðèöû èãðû ïîäñò÷åò ìàò îæèäàíèÿ
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
a[j-1]:=a[j-1]+strtoint(StringGrid1.Cells[i,j]);
// äëÿ ìàòðèöû èãðû îïðåäåëåíèÿ ìàêñèìóìà
if RadioButton3.Checked=true then Begin
for i:=1 to SpinEdit2.Value-1 do
if a[max]
if Form1.Height
ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)); end;
// äëÿ ìàòðèöû ðèñêîâ îïðåäåëåíèÿ ìèíèìóìà
if RadioButton4.Checked=true then begin
for i:=1 to SpinEdit2.Value-1 do
if a[max]>a[i] then max:=i; ShowMessage('Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(max+1)); end;
// äëÿ ðàñ÷èòàííîé ìàòðèöû ðèñêîâ
if (Form1.Height=757) and (RadioButton3.Checked=true) then begin
f:=true;
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
if StringGrid3.Cells[i,j]='' then f:=false;
if f=false then ShowMessage('Çíà÷åíèÿ íå îïðåäåëåíû')
else begin
for i:=0 to SpinEdit2.Value-1 do
a[i]:=0;
for i:=1 to SpinEdit1.Value do
for j:=1 to SpinEdit2.Value do
a[j-1]:=a[j-1]+strtoint(StringGrid3.Cells[i,j]);
for i:=1 to SpinEdit2.Value-1 do
if a[maxr]>a[i] then maxr:=i;
if max=maxr then ShowMessage('Îïòèìàëüíûå çíà÷åíèÿ ñîâïàäàþò: À'+inttostr(max+1))
else ShowMessage('Íàøåë îïòèìàëüíûé ìàêñèìóì: À'+inttostr(max+1)+'; Íàøåë îïòèìàëüíûé ìèíèìóì: À'+inttostr(maxr+1))
end;
end;
end;
f:=true;
// ÒÐÅÒÈÉ ÊÐÈÒÅÐÈÉ
If (CheckBox2.Checked=true) and (RadioButton2.Checked=true) then begin
757>757> продолжение
--PAGE_BREAK--757>