Лабораторные работы (2011) (Отчет)

Посмотреть архив целиком

Московский энергетический институт (ТУ)


Кафедра прикладной математики









Лабораторная работа по Теории Игр №3

Моделирование с помощью системы интеллектуального имитационного моделирования РДО











Студент:

Кохов Виктор

Группа:

А-13-07

Преподаватель:

Еремеев А.П.












Москва 2011

Содержание


Содержание 2

Постановка задачи 3

Описание предметной области 3

Описание имитационной модели 3

Типы ресурсов 3

Ресурсы 4

Операции 4

Интерфейс 5

Прогон 5

Заключение 6

Приложение 6

Образцы операций 6

Объекты кадров анимации 12

Литература 14


Постановка задачи

Реализация некоторой ситуации с помощью системы интеллектуального имитационного моделирования РДО.

Описание предметной области

Имеется помещение, вход в которое может быть открыт или закрыт. Открытие происходит с помощью клавиши ‘O’, закрытие с помощью клавиши ‘C’. 8 танцоров и танцовщиц должны пройти в зал и далее на танцплощадку. Если DJ нет, то танцоры становятся около танцплощадки и ждут прихода DJ. Убрать DJ можно с помощью клавиши ‘Q’, вернуть на место с помощью клавиши ‘S’. Время танца каждой пары определяется с помощью нормального распределения с параметрами: математическое ожидание 0.9, дисперсия 1.0. После того как пара оттанцевала она идет на выход. Конечное состояние наступает, когда все 8 пар оттанцевали и вышли.

Описание имитационной модели

Типы ресурсов

Всего 3 типа ресурсов: один постоянный и 2 временных.

Тип_состояние (постоянный ресурс) определяет почти все переменные в модели. Состояние ворот – открыты или закрыты, состояние парней – не вошли, входит, перед вратами, в очереди, на танец, в танце, на выход, вышли (аналогично и для девушек), наличие DJ – есть или нету и общее количество действий.


Тип ресурса Тип_парень и Тип_девушка, вообще говоря, одинаковы и отражают текущее состояние танцора(танцовщицы).


$Resource_type Тип_Состояние : permanent

$Parameters

Не_вошлиМ : integer

Не_вошлиД : integer

ВходятМ : integer

ВходятД : integer

Можно_входить : integer [0..1] = 1

Перед_вратамиМ : integer

Перед_вратамиД : integer

Врата_открыт : (открыто, закрыто) = закрыто

В_очередиМ : integer

В_очередиД : integer

На_танецМ : integer

На_танецД : integer

В_танцеМ : integer

В_танцеД : integer

На_выходМ : integer

На_выходД : integer

ВышлиМ : integer

ВышлиД : integer

Общее_число_действий : integer

DJ : (есть, нету) = есть

$End


$Resource_type Тип_парень : temporary

$Parameters

сост : (нач, появл, перед, очередь, натанец, танец, выход, кон)

$End


$Resource_type Тип_девушка : temporary

$Parameters

сост : (нач, появл, перед, очередь, натанец, танец, выход, кон)

$End

Ресурсы

Изначально создается только постоянный ресурс с соответствующими параметрами

$Resources

состояние : Тип_Состояние 8 8 0 0 1 0 0 * 0 0 0 0 0 0 0 0 0 0 0 *

$End

Операции

Всего 14 операций

$Operations

Открыть_врата : Обр_Открыть_врата 'O'

Закрыть_врата : Обр_Закрыть_врата 'C'

DJп : Обр_ПоставитьDJ 'S'

DJу : Обр_УбратьDJ 'Q'

Обр_танцевать : Обр_танцевать

Встань_на_танцпол : Обр_на_танцпол

Обслуживание : Обр_Обслуживание

Перед_Входом1 : Обр_Перед_входомМ

Перед_Входом2 : Обр_Перед_входомД

Вход1 : Обр_ВходМ

Вход2 : Обр_ВходД

Появление_грешника1 : Обр_ПоявлениеМ

Появление_грешника2 : Обр_ПоявлениеД

Уход : Обр_Уход

$End

Интерфейс


Пример работы программы. 3 пары уже танцуют, 2 танцора и танцовщицы еще не вошли в помещение. Один танцор стоит в очереди, ожидает партнершу, а также 2 танцора и танцовщицы уже вышли.

Прогон

// Имя модели (*.pat, *.rtp, *.fun и *.dpt)

Model_name = Dance

// Ресурсы (*.rss)

Resource_file = Dance

// Операции (*.opr)

// Одновременно в модели может присутствовать или файл *.opr или файл *.dpt, но не оба сразу

OprIev_file = Dance

// Собираемые показатели (*.pmd)

Statistic_file = Dance

// Результаты прогона (*.pmv), выводятся внизу экрана

Results_file = Dance

// Трассировка (*.trc)

// Если файл трассировки закомментировать, то отключится вся трассировка в модели

Trace_file = Dance

// Анимация (*.trc)

Frame_file = Dance

// Отображение анимации начинается с кадра Frame_number

Frame_number = 1

// Режим прогона, включить анимацию

Show_mode = Animation

// Скорость анимации. Чем больше значение, тем быстрее прогон

Show_rate = 750.0


// Условие остановки модели. После Terminate_if можно указать любое логическое выражение

Terminate_if состояние.ВышлиМ >=8 and состояние.ВышлиД >=8

Заключение

В системе интеллектуального имитационного моделирования была реализована модель работы танцевального клуба.

Приложение

Образцы операций


{Появление парня на экране}

$Pattern Обр_ПоявлениеМ : operation

$Relevant_resources

_состояние : Тип_Состояние Keep Keep

_парень : Тип_парень NonExist Create

$Time = Нормальное_Распределение(0.5, 1.0)

$Body

_состояние

Choice from _состояние.Не_вошлиМ > 0 and _состояние.Можно_входить = 1 and _состояние.Не_вошлиМ >= _состояние.Не_вошлиД


first

Convert_begin

Не_вошлиМ set _состояние.Не_вошлиМ - 1

Можно_входить set 0

Общее_число_действий set _состояние.Общее_число_действий + 1

Convert_end

Можно_входить set 1

ВходятМ set _состояние.ВходятМ + 1

Общее_число_действий set _состояние.Общее_число_действий + 1

_парень

Convert_end


сост set появл

$End


{Появление девушки на экране}

$Pattern Обр_ПоявлениеД : operation

$Relevant_resources

_состояние : Тип_Состояние Keep Keep

_девушка : Тип_девушка NonExist Create

$Time = Нормальное_Распределение(0.5, 1.0)

$Body

_состояние

Choice from _состояние.Не_вошлиД > 0 and _состояние.Можно_входить = 1


first

Convert_begin

Не_вошлиД set _состояние.Не_вошлиД - 1

Можно_входить set 0

Общее_число_действий set _состояние.Общее_число_действий + 1

Convert_end

Можно_входить set 1

ВходятД set _состояние.ВходятД + 1

Общее_число_действий set _состояние.Общее_число_действий + 1

_девушка

Convert_end

сост set появл

$End


{Встать в очередь перед входом в зал М}

$Pattern Обр_Перед_входомМ : rule trace

$Relevant_resources

_состояние : Тип_Состояние Keep

_парень : Тип_парень Keep

$Body

_состояние

Choice from _состояние.ВходятМ > 0 and _состояние.ВходятМ >= _состояние.ВходятД

first

Convert_rule

ВходятМ set _состояние.ВходятМ - 1

Перед_вратамиМ set _состояние.Перед_вратамиМ + 1

_парень

Choice from _парень.сост = появл

first

Convert_rule

сост set перед

$End


{Встать в очередь перед входом в зал Д}

$Pattern Обр_Перед_входомД : rule trace

$Relevant_resources

_состояние : Тип_Состояние Keep

_девушка : Тип_девушка Keep

$Body

_состояние

Choice from _состояние.ВходятД > 0

first

Convert_rule

ВходятД set _состояние.ВходятД - 1


Перед_вратамиД set _состояние.Перед_вратамиД + 1

_девушка


Choice from _девушка.сост = появл

first

Convert_rule

сост set перед

$End


{Переход в очередь на танец М}

$Pattern Обр_ВходМ : operation

$Relevant_resources

_состояние : Тип_Состояние Keep Keep

_парень : Тип_парень Keep Keep

$Time = Нормальное_Распределение(0.5, 1.0)

$Body

_состояние

Choice from _состояние.Перед_вратамиМ > 0 and _состояние.Врата_открыт = открыто and _состояние.Перед_вратамиМ >= _состояние.Перед_вратамиД

first

Convert_begin

Перед_вратамиМ set _состояние.Перед_вратамиМ - 1

В_очередиМ set _состояние.В_очередиМ + 1

Convert_end

Общее_число_действий set _состояние.Общее_число_действий + 1

_парень

Choice from _парень.сост = перед

first

Convert_begin

сост set очередь

Convert_end

сост set очередь

$End


{Переход в очередь на танец Д}

$Pattern Обр_ВходД : operation

$Relevant_resources

_состояние : Тип_Состояние Keep Keep

_девушка : Тип_девушка Keep Keep

$Time = Нормальное_Распределение(0.5, 1.0)

$Body

_состояние

Choice from _состояние.Перед_вратамиД > 0 and _состояние.Врата_открыт = открыто

first

Convert_begin

Перед_вратамиД set _состояние.Перед_вратамиД - 1

В_очередиД set _состояние.В_очередиД + 1

Convert_end

Общее_число_действий set _состояние.Общее_число_действий + 1

_девушка

Choice from _девушка.сост = перед

first

Convert_begin

сост set очередь

Convert_end

сост set очередь

$End




{Встать в пару из очереди (если не было DJ), а теперь есть}

$Pattern Обр_Обслуживание : rule trace

$Relevant_resources

_состояние : Тип_Состояние Keep

_парень : Тип_парень Keep

_девушка : Тип_девушка Keep

//$Time = Нормальное_Распределение(2, 1.0)

$Body

_состояние

Choice from _состояние.В_очередиМ > 0 and _состояние.В_очередиД > 0 and _состояние.DJ=есть

first

Convert_rule

В_очередиМ set _состояние.В_очередиМ - 1

На_танецМ set _состояние.На_танецМ + 1

В_очередиД set _состояние.В_очередиД - 1

На_танецД set _состояние.На_танецД + 1

Общее_число_действий set _состояние.Общее_число_действий + 1

_парень

Choice from _парень.сост = очередь


Случайные файлы

Файл
91380.rtf
76334.rtf
~1.DOC
240-1512.DOC
106925.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.