Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

на тему- ldquo; Метод итерраций с использованием теории игрrdquo; по дисциплине Системный анализ

Работа добавлена на сайт samzan.net:


25

Министерство образования Республики Беларусь

Гомельский государственный университет им. Ф.Скорины

Кафедра АСОИ

Курсовая работа

на тему:

 Метод итерраций с использованием теории игр

по дисциплине «Системный анализ»

Выполнила:

студентка группы АС-3 Осадченко Е.Л.

Руководитель:

доцент кафедры АСОИ Давыдов В.С.

Гомель 2000


Содержание

[1] Содержание

[2]
1. Теоретические сведения

[3] 1.1. Антагонистические игры

[4] 1.1.1. Определение. Основные понятия

[5]
1.1.2. Проблема равновесия в игре

[6]
1.1.3. Решение в смешаных стратегиях

[7]
1.1.4. Теорема о минимаксе

[8]
1.2. Метод итераций

[9] 1.2.1. Описание

[10] 1.2.2. Критерий сходимости итерационного процесса

[11]
2. Практическое решение задачи

[11.0.0.1] Ai\Bj Bl   B2   ВЗ

[12]
3. Описание работы программы

[13]
Заключение

[14]
Список литературы.

[15]
Приложение 1. Текст программы.


Введение

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

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

От реального конфликта она отличается тем, что ведется по определенным правилам. Эти правила указывают права и обязанности игроков, а также исход игры - выигрыш или проигрыш одного из участников в зависимости от сложности обстановки. Мы будем считать, что выигрыши (проигрыши) игроков имеют количественное выражение.

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

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


1. Теоретические сведения

1.1. Антагонистические игры

1.1.1. Определение. Основные понятия

Игра называется игрой с нулевой суммой, если сумма выигрышей всех игроков равна нулю (т.е. каждый игрок выигрывает только за счет других).

Самый простой случай - парная игра с нулевой суммой – называетсяы антагонистической или игрой со строгим соперничеством. Теория антагонистических игр - наиболее развитый раздел теории игр.

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

Пусть у нас имеется m возможных стратегий Ai,A2,...,Am, а у противника п возможных Bi, B2 ,...., Вп ( игра m на п). Обозначим ац наш выигрыш, если мы пользуемся стратегией Ai, а противник стратегией Bj. Предположим, что для каждой пары стратегий выигрыш нам известен, тогда получаем платежную матрицу и игра G приведена к матричной форме.

Введем математическое описание антагонистической игры:

Будем исследовать такие операции для которых критерий эффективности имеет вид К( xi, ... , Xn, yi, ... , ym), причем в распоряжении первого лица находятся параметры х , а второго у. Области изменения векторов (xi, ... , Xn) и (yi, ... , ym) суть Х и Y соответственно.

Первое и второе лица назовем первым и вторым игроком; функцию К(X,Y) - платежной функцией игры; векторы х и у - чистыми стратегиями первого и второго игроков. Значение платежной функции при выборе первым игроком стратегии х, а вторым стратегии у назовем выигрышем k первого игрока. В дальнейшем будем считать, что первый игрок стремится максимизировать свой выигрыш. Величина К(х,у) называется выигрышем второго игрока при применении стратегии х, а вторым стратегии у.

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

Предположим, что х и у - векторы пит мерного евклидового пространства. Х и Y - замкнутые ограниченные множества пит мерного пространства соответственно. Функция К(х,у) непрерывна на этих множествах. Пусть i HJ конечны, тогда К(i, j) назовем матрицей конечной игры. Выясним какой выигрыш сможет получить первый игрок в конечной игре при наиболее неблагоприятных для себя условиях.

Пусть первый игрок выбирает для себя стратегию (чистую) Второй игрок, узнав его выбор, применит в свою очередь такую стратегию, чтобы минимизировать выбор первого, при условии, что первый выбирает i-ю стратегию, при этом первый игрок получит выигрыш min K(i,j). Но первый игрок может выбрать такую чистую стратегию, которая максимизирует величину выигрыша при наиболее неблагоприятных условиях, тогда его выигрыш равен max. min. K(i,j). Аналогично, если второй игрок выбирает j-ю стратегию, которая максимизирует его выигрыш при наиболее неблагоприятных для себя условиях  он проиграет первому игроку величину, равную max K(i,j). Выбирая свою наилучшую стратегию при неблагоприятных условиях, он проиграет не больше, чем max. min, K(i,j).

Теорема для конечных игр.

max. min. K(i,j) <= max- min. K(i,j).

Доказательство: очевидно, что max. min, K(i,j)<= K(i,j) отсюда max. min. K(i,j)<= max. K(i,j). Тогда max^ min. K(i,j)<= max. тт. K(i,j).

Т.е. решение сводится к нахождению максимина и минимакса по платежной матрице(принцип минимакса).


1.1.2. Проблема равновесия в игре

Наилучшей с точки зрения игрока А является та стратегия для которой aij максимально и равно а, она называется максиминной стратегией, а выигрыш а называется нижней ценой игры (а = max. min. а,). Аналогично для второго игрока стратегия В будет минимаксной, a b называется верхней границей (b = max. min, a").

Простейшим, но редко встречающимся на практике является случай а = Ь (нижняя цена игры совпадает с верхней). Равенство а = Ь означает, что в платежной матрице присутствует элемент а-", который одновременно оказывается минимальным в р-й строке и максимальным в q-м столбце. Очевидно элемент а^ представляет собой седловую точку, соединяющую в себе и свойства точки минимума (по одной группе переменных) и максимума по другой. В любой игре с седловой точкой стороны А и В, решившие придерживаться минимаксных стратегий попадают в ситуацию, характеризуемую тем, что и для А и для В выгодно сохранять одни и те же стратегии. Положение, при котором ни одна из сторон не имеет никаких разумных оснований для изменения своей стратегии, называется ситуацией равновесия. В играх с седловой точкой такая ситуация возникает и со сохраняются сколь угодно долго, если стороны А и В используют одни и те же стратегии, называющиеся в этом случае чистыми. Величина а? , равная верхней и нижней цене игры, называется чистой ценой игры. Применять чистые стратегии имеет смысл тогда, когда А и В располагают сведениями о действиях друг друга и достигнутых результатах. Если это не выполняется, то равновесие нарушается. Следовательно, следует различать игры с полной информацией, в которых каждый участник в любой момент времени знает всю предысторию игры. Далее будут рассматриваться только такие игры.

Каждая игра с полной информацией имеет седловую точку. Иногда в платежной матрице встречаются несколько седловых точек. Однако это не изменит характера рекомендуемых решений.


1.1.3. Решение в смешаных стратегиях

На практике наиболее распространенным является случай, когда платежная матрица вообще не имеет седловой точки а<>Ь. Анализ ситуаций, которые могут при этом возникнуть, удобно провести на примере. Чистые стратегии становятся неустойчивыми. Это связано, в частности, с хорошей информированностью сторон о действиях друг друга. В рассматриваемой ситуации каждой стороне необходимо скрыть свое поведение, чтобы ослабить влияние информационного фактора. Этого можно достичь, выбирая ходы случайно. Однако полный отказ от рационального начала и переход к бессистемному поиску ходов привел бы к прекращению игры как таковой. Приемлемый компромисс достигается здесь путем обоснованного, разумного введения элемента случайности в действиях сторон, так что каждый отдельный ход остается непредсказуемым, но вся совокупность обладает вполне определенными, заранее заданными свойствами. Другими словами, игроки чередуют свои стратегии в соответствии со специально разработанной схемой, обеспечивающей нужную частоту (вероятность) реализации каждой из стратегий игроков. Если Р( Ai) - вероятность появления Ai стратегии, то можно говорить о распределении вероятностей на множестве стратегий стороны А. Произвольно взятое распределение pi,p2,..., pn = Sa называется смешанной стратегией, которой располагает сторона А в данной игре. По аналогии существует распределение qi,q2,..,qm = Sb есть смешанная стратегия стороны В. Для определения этих приходится использовать критерии отличные от критериев минимакса и максимина. Это например критерий - средний ожидаемый выигрыш. Проведенный анализ общих условий общих условий ведения антагонистических игр позволил сформулироватьуниверсальный принцип действий сторон А и В, основанный на идее гарантированного результата. Конкретные решения, вытекающие из этого принципа, легко отыскиваются лишь в простейшем случае а = Ь.


1.1.4. Теорема о минимаксе

Весьма важным для теории и практики является вопрос о том, связаны ли между собой величины Оа и Ов (оптимальные результаты). Ответ дает теорема о минимаксе, играющая большую роль в понимании особенностей антагонистических игр и утверждающая, что в конечной игре двух лиц с нулевой суммой и полной информацией имеет место равенство Оа и Ов при а<>Ь. Доказать эту теорему можно разными способами, например путем анализа задач линейного программирования. Теорема о минимаксе указывает на существование ситуаций равновесия для случая а<>Ь и, следовательно, оптимальных стратегий Sa и Sb, т.е. решений игры, позволяющих добиваться среднее ожидаемого выигрыша 0=Оа=ОЬ. О называется ценой игры. Доказано, что а<=0<=Ь (где а и b соответственно нижняя и верхняя границы цены игры).

Существует также теорема об активных стратегиях : если один из участников игры придерживается своей оптимальной смешанной стратегии, то ожидаемый выигрыш останется неизменным и равным О независимо от характера действий другого участника в пределах его активных действий. Таким образом, стратегии Sa и Sb остаются оптимальными и в случаях, когда они применяются друг против друга, и в случаях, когда они применяются против любых иных стратегий. Важным результатом анализа является подтверждение того факта, что каждая конечная антагонистическая игра имеет хотя бы одно решение либо в чистых (а=Ь), либо в смешанных стратегиях (а<>Ь). Иначе говоря, любая такая игра имеет ситуацию равновесия, которую целесообразно сохранять, выбирая для практического использования соответствующие ей оптимальные стратегии.


1.2. Метод итераций

1.2.1. Описание

Рассмотрим теперь конечную антагонистическую игру двух лиц. Если эта игра повторяется достаточно много раз (во времени или в пространстве), то игроков может интересовать не выигрыш в каждой отдельной партии, а суммарный выигрыш или средний выигрыш во всех партиях. В этом случае, если первый игрок применяет во всех партиях некую чистую стратегию, это вскоре будет обнаружено вторым игроком, и он использует ту из чистых стратегий, которая минимизирует платеж. Аналогичное утверждение справедливо и для второго игрока. Поэтому, если первый игрок решил во всех партиях применять некую чистую стратегию, ему выгодно использовать максиминную стратегию, максимизирующей платеж при полной информации второго игрока о действиях первого. Это используется в статистических численных методах решения.

Опишем один из самых простых численных методов решения матричных игр - так называемый метод итераций (иначе метод Брауна- Робинссона). Идея его состоит в следующем. Разыгрывается "мысленный эксперимент", в котором стороны А и В поочередно применяют друг против друга свои стратегии, стремясь выиграть побольше (проиграть поменьше). Эксперимент состоит из ряда партий игры. Начинается он с того, что один из игроков (скажем А) выбирает произвольно одну из своих стратегий AL Противник В отвечает ему той из своих стратегий Bj, которая хуже всего для А, т.е. обращает его выигрыш при стратегии Ai в минимум. Дальше снова очередь А. Он отвечает В той своей стратегией Ак, которая дает максимальный выигрыш при стратегии В противника, дальше - снова очередь противника. Он отвечает нам той своей стратегией которая является наихудшей, примененной нами стратегии Ак, а для смешанной стратегии, в которой до сих пор примененные стратегии Aj и Ак встречаются с равными вероятностями. И так далее, на каждом шаге итерационного процесса каждый игрок отвечает на очередной ход другого той своей стратегией, которая является оптимальной для него относительно смешанной стратегии другого, в которую все примененные до сих пор стратегии входят пропорционально частотам их применения. Вместо того, чтобы вычислять каждый раз средний выигрыш, можно использовать просто накопленный за предыдущие ходы выигрышем и выбирать ту стратегию, при которой этот накопленный выигрыш максимален (минимален). В конце итерационного процесса вычисляются вероятности (частоты), с помощью которых далее можно решать задачу в смешанных стратегиях.

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

1.2.2. Критерий сходимости итерационного процесса

Доказано, что итерационный метод сходится, если при увеличении числа итераций (партий) средний выигрыш за одну партию будет стремится к цене игры, а частоты применения стратегий - к их вероятностям в оптимальных смешанных стратегиях. Сходимость метода Брауна-Робинссона очень медленная. Существуют способы его подхлестнуть. Но они в достаточной мере сложны и применение их не всегда выгодно.


2. Практическое решение задачи

Рассмотрим метод итераций на примере игры 3 на 3 с данной платежной матрицей (таб. I):

Таблица 1.

Ai\Bj Bl   B2   ВЗ

А1    7    2    9

А2    2     90

A3    9    0   11

Начнем с произвольно выбранной стратегии игрока А, например со стратегии 3. В таблице 1 приведены первые 15 шагов итерационного процесса по Методу Брауна-Робинссона. В первом столбце дан номер партии (пары выборов) k, во втором- номер i-й выбранной стратегии игрока А. В последующих трех столбцах - накопленный выигрыш за первые k партий при тех стратегиях, которые игроки применяли в предыдущих партиях и при стратегиях Bl, В2,ВЗ игрока В в данной партии (получается прибавлением элементов соответствующей строки к тому, что было выше).

Из этих накопленных выигрышей в таблице 2 подчеркнут минимальный (если их несколько, то подчеркнуты все) . Подчеркнутое число определяет ответный выбор игрока В в данной партии - он выбирает ту стратегию, которая соответствует подчеркнутому числу. Таким образом, определяется номер j-й оптимальной стратегии. В последующих трех столбцах дается накопленный выигрыш за k партий соответственно при стратегиях А1,А2,АЗ игрока А (получается прибавление элементов столбца Bj к тому, что было строкой выше). Из этих значений в таблице подчеркнуто максимальное; оно определяет выбор стратегии игрока А в следующей партии (строкой ниже). В последних трех столбцах таблицы 2 даны : vl- нижняя оценка цены игры, равная минимальному накопленному выигрышую, деленному на количество партий k; v2- верхняя оценка цены игры, равная максимальному накопленному выигрышу, деленному на k; v-среднее арифметическое между ними (оно служит лучшей, чем нижняя и верхняя, приближенной оценкой игры).

Как видно, величина v незначительно колеблется около цены игры v=5 (при составлении таблицы ко всем значениям прибавили 5). подсчитаем по таблице 2 частоты р1,р2,р3 (соответствующие стратегиям игрока В) и частоты ql,q2,q3 ( соответствующие стратегиям игрока А) :

р1=4/15=0,266; р2=7/15=0,468; р3=4/15=0,266;

ql=2/15=0,133; q2=8/l 5=0,534; q3=5/15=0,333;

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

Таблица 2.

k i В1 В2 B3 j А1 А2 A3 vl v2 V

1 3 9 0 11 2 2 9 0 0 9 4,5

2 2 11 9 11 2 4 18 0 4,5 9 6,75

3 2 13 18 П. 3 13 18 11 3,67 6 4,84

4 2 15 27 Ц 3 22 18 22 2,75 5,50 4,13

5 1 22 29 20 3 31 18 33 4 6,60 5,30

6 3 31 29 31 2 33 27 33 4,84 5,50 5,17

7 1 38 31 40 2 35 36 33 4,43 5,14 4,79

8 2 40 40 40 2 37 45 33 5,00 5,61 5,30

          

9 2 42 49 40 3 46 45 44 4,45 5,11 4,78

10 1 49 51 49 1 53 47 53 4,90 5,30 5,10

11 3 58 51 60 2 55 56 53 4,64 5,09 4,87

12 2 60 60 60 2 57 65 53 5,00 5,41 5,20

13 2 62 69 60 3 66 65 64 4,61 5,07 4,84

14 1 69 71 -69/ 1 73 67 73 4,93 5,21 5,07

15 3 78 11 80 2 75 76 73 4,74 5,06 4,90


3. Описание работы программы

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

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

Ввод платежной матрицы - дает возможность ввести платежную матрицу. Программа запрашивает размерность матрицы. В данной версии реализован максимальный размер 10 на 10, ввод большего числа повлечет за собой повтор ввода. На экран выводится матрица передвижение, по которой осуществляется с помощью курсорных стрелок. При нажатии на клавишу Enter предоставляется возможность ввода элемента матрицы. Ошибка при наборе ( например введение буквы или символа) повлечет за собой повторный ввод. Выход из этого режима осуществляется клавишей Esc.

Чтение из файла - чтение платежной матрицы с диска.

Запись в файл - сохранение платежной матрицы на диске.

Просмотр платежной матрицы - выводит на экран платежную матрицу, выход в основное меню по клавише Esc.

Рассчет - запрашивает количество итераций и рассчитывает частоты стратегий методом итераций.

Результаты - выдает на экран результаты рассчетов, выход в основное меню по клавише Esc.

Выход - выход из программы.


Заключение

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

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

Оказывается, что в военной области конфликты довольно редко удается свести к парным играм с нулевой суммой. Схема строгого антагонизма применима, как правило, только к операциям малого масштаба, ограниченным по значению. Если цели участников конфликта не прямо противоположны, а просто не совпадают, то математическая модель становится много сложнее : мы уже не можем интересоваться выигрышем только одной стороны; возникает так называемая биматрическая матрица, где каждый из участников стремится максимизировать свой выигрыш, а не просто минимизировать выигрыш противника. Теория таких игр гораздо сложнее теории антагонистических игр, а главное, из этой теории не удается получить четких рекомендаций. Второе. Бывает ситуация, когда решение надо принять одно-единственное. Разумно ли будет передоверять свой выбор случаю? И третье. В теории игр считается, что каждому игроку известны все возможные стратегии противника, не известно лишь, как он ими воспользуется. В реальном конфликте это обычно не так : перечень возможных стратегий противника не известен.

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


Список литературы.

  1.  Давыдов Э. Г. Исследование операций : Учебное пособие для студентов вузов. - М. : Высш. шк., 1990. - 383 с. : ил.
  2.  Вентцель Е. С. Исследование операций : задачи, принципы, методология. - 2-е изд. , стер. - М. : Наука, 1988. - 208 с.
  3.  Дегтярев Ю. И. Исследование операций : Учебник для вузов по спец. АСУ.- М. : Высш. шк., 1986.- 320 с.: ил.


Приложение 1. Текст программы.

Program Curs;

Uses Crt,dos,MyWin;

Const size=10;

    mastype : mastype=('Ввод платежной матрицы','Чтение из файла',

     Запись в файл','Просмотр платежной матрицы','Рассчет',

     'Результаты','Выход');

Type

  mmtype=array[1..size,1..size,] of integer;

  mtype=array[1..size] of integer;

  tr=1..3;

  ftype=Record

          n,m:integer;

          mas;mmtype;

        end;

Var

 mm:mmtype;{Платежная матрица}

 j,m,n:1..size;

 i,z:integer;

 dd:ftype;

 mfile:file of ftype;

 MA,MB,SA,SB:mtype;{Данные по итерациям}

 pos:_dy;

 v1,v2,v:real;{оценки цен игры нижняя,верхняя и средняя}

 f,a:boolean;

 key:char;

 k:integer;{Кол-во итераций}

 s:real;{Cумма игры по матрице}

Procedyre Test(Var a:boolean);

{Проверяет ошибку ввода}

Begin

  If IOResult=0 then f:=false;

  else a:=true;

end;

Prosedure OutputRes;

{Вывод результатов итерационного процесса на экран}

Var max,min:1..size;

Begin

  Full;

  ClearWin(20,10,52,18);

  Window(2,9,70,21);

  TextBackGround(15);

  TextColor(2);

  clrscr;

  Gotoxy(2,2);

  Write('Bероятности стратегий:');

  for i:=1 to n do

     Begin

       Gotoxy(2,2+i);

       Write('P(A',i,') : ',MA[i]/k)

   end;

for i:=1 to m do

Begin

  Gotoxy(42,2+i);

   Write('P(B',i,') :',MB[i]/k

   end;

  Gotoxy(2,11);

  Write('Кол-во итераций: ',k);

  max:=1;

  for i:=2 to n do

       if SA[i]>SA[max] then max:=i;

  min:=1;

  for i:=2 to m do

      if SB[i]>SB[max] then min:=i;

      v2:=SA[max]/k;

      v1:=SB[min]/k;

      v:=(v1+v2)/2;

      Gotoxy(2,12);

      Write('оценка цены игры:',v);

      Full;

      Goto(2,23);

      Write('Для выхода нажмите Esc');

      Key:=ReadKey;

      While Key<>#27 do

      Begin

         Key:=ReadKey;

      end;

   Procedure Output;

   {'Вывод на экран платежной матрицы'}

   Begin

      for i:=1 to m do

      Begin

         Gotoxy(7+(i-1)*7,3);

         Write('B',i);

       end;

       for i:=1 to n do

       Begin

          Gotoxy(2,5+(i-1));

          Write('A',i)

      end;

      Window(5,5,5+m*7,4+n);

      TextBackGround(15);

      TextColor(2);

      clrscr;

      for i:=1 to m do

      for j:=1 to n do

      Begin

         Gotoxy(3+(i-1)*7,j);

         Write(MM[i,j]);

      end;

  end;

 Procedure Input;

 {Процедура ввода платежной матрицы}

 Var x,y,x1,y1:byte;

     f:boolean;

     key:char;

 Procedure DCurs(x,y:byte;f:tr);

 Begin

   Window((x-1)*7+5,y+4,x*7+4,y+4);

   case f of

   1:Begin

  TextBackGround(15);

        TextColor(2);

      end;

   2:Begin

         TextBackGround(2);

         TextColor(15);

       end;

   3:Begin

        TextBackGround(2);

        TextColor(Red);

      end;

   end;

   Clrscr;

   Gotoxy(3,1);

   Write(MM[y,x]);

 end;

Begin

{$I-}

Full;

TextBackGround(0);

TextColor(2);

CkearWin(20,10,52,18);

Gotoxy(10,10);

Write('Введите размерность платежной матрицы n*m');

Gotoxy(10,11);

Write('Максимальная размерность 10*10)');

a:=true;

While a do

Begin

  ClearWin(14,20,80,12);

  Gotoxy(14,12);

  Write('n:');

  Read(n);

  Test(a);

  if n>size then a:=true;

 end;

 a:=True;

 While a do

 Begin

     ClearWin(14,13,80,13);

     Gotoxy(14,13);

     Write('m:');

     read(m);

     Test(a);

     if m>size then a:=true;

  end;

  CkearWin(10,10,50,14);

  Full;

    Output;

    x:=1;

    y:=1;

    DCurs(x,y,2);

    F:=True;

    While f do

    Begin

       Key:=ReadKey;

       Case Key of

       #72:Begin

             if y=1 then y1:=n else y1:=y-1;

             DCurs(x,y,1);

             DCurs(x,y1,2);

             y:=y1:

          end;

       #80:Begin

              if y=n then y1:=y else y1:=y+1;

              DCurs(x,y,1);

              DCurs(x,y1,2);

              y:=y1;

           end;

       #75:Begin

             if x=1 then x1:=m else x1:=x-1;

             DCurs(x,y.1);

             DCurs(x1,y,2);

             x:=x1;

          end;

       #77:Begin

              if x=m x1:=1 else x1:=x+1;

              DCurs(x,y,1);

              DCurs(x1,y,2);

              x:=x1;

           end;

      #13:Begin

             a:=True;

             While a do

             Begin

                DCurs(x,y,3);

                Gotoxy(3,1);

                Read(MM[y,x]);

                Test(a);

              end;

     #27:f:=false;

   end;

 end;

 Full;

 ClearWin(1,1,5+m*7,4+n);

 {$I+)

end;

Procedure FileWrite;

Begin;

{'Процедура записи данных в файл}

Assign(mfile,'mdata.txt);

Rewrite(mfile);

dd.n:=n;

dd.m:=m:

for i:=1 to n do

  for j:=1 to m do

  Begin

     dd.mas[i,j]:=MM[i,j]

    end;

  Write(mfile,dd);

  Close(mfile);

end;

Procedure Fileread;

Begin

  {'Процедура чтения данных из файла}

  {$I-}

  a:=false;

  Assign(mfile,'mdata.txt);

  Reset(mfile);

  Read(mfile.dd);

  Test(a);

  If not (a) Then

  Begin

       n:=dd.n;

       m:=dd.m;

       for i:=1 to n do

          for j:=1 to m do

          Begin

             MM[i,j]:=dd.mas[i,j]

          end;

        end;

           Close(mfile);

        end;

       Procedure CalcA;

       Var min:1..size;

        {Вычисление по данной итерации для стратегии В}

       Begin

           min:=1;

           for j:=2 to m do if SB[j]<SB[min] then min:=j;

           MB[min]:=MB[min]+1;

           for j:=1 to n do SA [j]:=SA[j]+MM[j,min];

         end;

         Procedure CalcB;

         Var max:1..size;

         {Вычисление по данной итерации для стратегии А}

         Begin

             max:=1;

             for j:=2 to n do if SA[j]>SA[max] then max:=j;

             MA[max]:=MA[max]+1;

             for j:=1 to m do SB[j]:=SB[j]+MM[max,j];

           end;

           Procedure Calculation;

           {Расчет итерационного процесса}

           Var d:1..size;

           Begin

              Full;

              ClearWin(20,10,52,18);

              Gotoxy(20,10);

              Write('Введите кол-во итераций');

              a:=True;

              {$I-}

              While a do

              Begin

                 ClearWin(24,11,80,11);

                 Gotoxy(20,11);

                 Write('K:');

                 Read(K);

                 test(a);

            end;

            {$+}

            Randomize;

            d:=Round(Random(n));

            MA[d]:=1;

            for i:=1 to m do SB[i]:=MM[d,i];

            CalcA;

            For i:=1 to k-1 do

            Begin

            CalcB;

            CalcA;

       end;

   end;

   Begin

     textbackground(0);

     clrscr;

     for:=1 to 29 do

     Begin

        gotoxy(z*40+1,i);

        textcolor(7);

        Write('.....');

     end;

 end;

 f:=true;

 While f do

 Begin

    Full;

    gotoxy(20,10);

    create(2,15,14,data,30,7,pos);

    case pos of

    1:Input;

    2:FileRead;

    3:FileWrite;

    4:Begin;

           Full;

           ClearWin(20,10,52,18);

           Output;

           Repeat Until Keypressed;

           Full;

           ClearWin(1,1,5+m*7,4+n);

        end;

        5:Calculation;

        6:OutputRes;

        7:f:=false;

     end;

  end;

end.

     Unit MyWin;

  Interffce

  Uses Crt;

  Type

    mastype=arrsy[1..7] of string[30];

    color=1..15;

    _dX=1..80;

    _dY=1..25;

  Var x:_dX;

      y:_dy;

  Procedure Full;

  Procedure ClearWin(x1:_dx;y1:_dy;x2:_dx;y2:_dy);

  Procedure Create(wc,cc,tc,:color;masinf:mastype;dX:_dX;dY:_dY;Var Pos:_dy)

  Implementation

  Procedure ClearWin;

  Var

     i:_dx;

     j:_dy;

  Begin

     for i:=x1 to x2 do

       for j:=y1 to y2 do

       Begin

          TextBackGround(0);

          Textcolor(7);

          gotoxy(i,j);

          Write('  ');

       end;

    end;

 Procedure Full;

 Begin

    Window(1,1,80,25);

  end;

Procedure Cursor(wc,cc,tc:color;masinf:mastype;dX:_dX;dY:_dY;past,now:_dY);

Begin

  window(x,y+past-1,x+dx,y+past-1);

  textbackground(wc);

  clrscr;

  textcolor(tc);

  Gotoxy(x,y+past-1);

  Write(masinf[past]);

  window(x,y+now-1,x+dx,y+now-1);

  textbackground(cc);

  clrscr;

  textcolor(wc);

  Gotoxy(x,y+now-1);

  Write(masinf[now]);

 end;

 Procedure Create;

 Var

       i:_dy;

       a:boolean;

       Key:char;

    Begin

       x:=WhereX;y:=WhereY;

       Window(X+1,Y+1,X+dX+1,Y+dY+1);

       textbackground(0);

       clrscr;

       Window(X,Y,X+dX,Y+dY);

       textbackground(wc);

       clrscr;

       for i:=2 to dY do

       Begin

          textcolor(tc);

          window(x,i+y-1,x+dx,y+i-1);

          textbackground(wc);

          clrscr;

          GotoXY(x,i+y-1);

          Write(masinf[i]);

       end;

       Window(X,Y,X+dX,Y);

       textbackground(cc);

       clrscr;

       textcolor(wc0;

       Gotoxy(x,y);

       Write(masinf[1]);

       a:=True;

       pos:=1;

       While a do

       Begin

          Key:=ReadKey;

          case key of

            #72:if pos=1 then

                 Begin

                   pos:=dy;

                   Curcor(wc,cc,tc,masinf,dX,dY,pos,pos-1);

                   pos:=pos-1;

                 end;

             #80: if pos dY then

                  Begin

                    pos:=1;

                    Curcor(wc,cc,tc,masinf,dx,xy,dy,pos);

                  end;

                  else

                  Begin

                    Cursor(wc,cc,tc,masinf,dx,dy,pos,pos+1);

                    pos:=pos+1

                 end;

               #13:a:=false;

           end

       end

   end;

 end.




1. Работы Римского клуба
2. атак Методи боротьби Боротьба з floodатаками Застосування кластера для вирішення проблеми атак на в
3. Контрольная работа Управление операционной деятельностью в сфере информационных технологий
4. Таможня
5. правову психологічну та історичну школи права.html
6. Вариант 4 Студенты гр
7. З Об архитектурной градостроительной и строительной деятельности в Республике Беларусь Принят Палато
8. е 30е годы Раздел- История ВСЕ РАЗДЕЛЫ Советская страна была приглашена на нее для обсуждения част
9. Островский А
10. С целью обеспечения безопасности несовершеннолетних детей в праздничные дни и зимнее время проведите инс
11. Финансовая политика Российской Федерации и основные направления её совершенствования на современном этапе
12. Иностранные слова в нашей речи
13. Сегодня в основном сортовой материал саженцы семена поступают на прилавки магазинов из Голландии Словени
14. 20 р. Ми що нижче підписалися з однієї сторони Подільський державний аграрнотехнічний університет
15. Инвестиции в сельское хозяйство- методы и перспектив
16. Курсовая работа- О повышении эффективности деятельности государственного сектора науки
17. 081994 N 26ФЗ от 28
18. The gurds of the Tsr were unble to stop this for s hrd s they tried the thief lwys got wy
19. Реферат- Полномочия хозяйственного суда
20. Отдохнув раз россияне возвращаются сюда снова и снова