
Санкт-Петербургский Государственный Электротехнический
Университет «ЛЭТИ»
Кафедра МОЭВМ
Лабораторная работа по ФиЛПр
О Т Ч Е Т
Факультет КТИ
группа 3341
студент Марьяскин Е.
Санкт-Петербург
2005 г.
Постановка задачи.
Реализовать «толпу» из нескольких однотипных объектов, имеющих несколько совпадающих характеристик. Смоделировать развитие этих объектов с помощью нескольких возможных действий над ними, при этом учитывать влияние эффекта толпы на выбор этих действий.
Описание алгоритма.
В качестве рассматриваемого объекта выбран военнослужащий офицер. Каждый такой объект имеет следующие характеристики:
Имя |
Обозначение |
Диапазон |
Начальное значение |
Звание |
R |
[1..11] |
2 |
Любовь к Родине |
P |
Z |
0 |
Настроение |
M |
[0..10] |
3 |
Знания |
K |
[0..20] |
15 |
Опыт |
E |
[0..∞) |
0 |
Над объектами можно производить 8 действий, изменяющих данные следующим образом:
Действие |
Условие выполнения |
dR |
dP |
dM |
dK |
dE |
Повысить в звании |
R<11 |
+1 |
+2 |
+2 |
-2 |
+3 |
Понизить в звании |
R>1 |
-1 |
+1 |
-2 |
0 |
+2 |
Выполнить задание |
|
0 |
-1 |
-1 |
+1 |
+1 |
Выплатить зарплату |
E>8 |
0 |
+1 |
+1 |
0 |
0 |
Руководить подчиненными |
R>2 |
0 |
0 |
+1 |
-1 |
+1 |
Быть наказанным |
|
0 |
-1 |
-1 |
0 |
+1 |
Прослушать урок политинформации |
|
0 |
+1 |
-1 |
+1 |
0 |
Переподчинить |
|
0 |
0 |
-2 |
0 |
+1 |
При этом если обратиться к любому из действий, то оно выполнится с вероятностью, зависящей от характеристик объекта на данный момент. Точнее:
Действие |
Вероятность * 10^2 |
Повысить в звании |
77-7*R |
Понизить в звании |
60+4*|R-6|-E/6-2*K-M |
Выполнить задание |
60-E/2+P-R |
Выплатить зарплату |
50+3*R-2*M+E/12 |
Руководить подчиненными |
30+3*R+P/4 |
Быть наказанным |
40-2*R-E/10+2*K+2*M |
Прослушать урок политинформации |
60-E/6+M |
Переподчинить |
50-3*R+P/5 |
Выполнение программы реализуется следующим образом: сначала происходит инициализация параметров для каждого объекта, т.е. присваиваются стартовые параметры. Затем в цикле(пользователь указывает количество моделируемых шагов) выполняются действия над объектами. При этом случайно выбирается очередное действие, которое применяется ко всем объектам. Таким образом, влияние толпы обеспечено выбором одного для всех действия на каждый шаг, а индивидуальность обеспечивается тем, что благодаря не единичной вероятности выполнения конкретного действия над конкретным объектом, некоторые объекты подвергаются этому диктуемому толпой действию, а другие – нет. Шаг считается удачным, если выбранное действие применилось хотя бы к одному объекту, иначе перевыбирается действие для всей толпы на этот шаг. Все текущие характеристики для всех объектов выводятся на экран. Названия выполненных действий также выводятся. Программа прекращает свое выполнение штатно, при введении на очередном запросе количество шагов, равное 0 и аварийно при введении некорректного числа шагов.