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

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

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ

(Технический Университет)



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















Лабораторная работа № 3 по дисциплине:

Теория игр и исследование операций.

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







Выполнил: Жаров Д.И. (А-13-06)

Проверила: Гречкина П.В.

Преподаватель: Еремеев А.П.













Москва 2010

Оглавление

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

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

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

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

Ресурсы 5

Операции 6

Интерфейс 8

Объект прогона 9

Приложение 9

Функции. 9

Объект кадра 10

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









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

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

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

Лесник появляется в левом углу главной формы у себя дома, дровосек в правом углу у себя дома. Задача лесника - убирать пни и сажать на их месте деревья. Задача дровосека - рубить деревья и относить их на склад(к себе домой). Дровосек должен за определённое время(220 секунд) собрать определённое количество деревьев(10 деревьев).

Действия лесника:

Если лесник видит, что есть пни, он выходит из дома и идёт сажать дерево. Если нет пней(т.е. на карте 3 дерева), лесник остаётся дома и ждёт. После того, как лесник доходит до пня, он начинает сажать дерево. После того, как лесник заканчивает сажать дерево, он возвращается домой.

Действия дровосека:

Если дровосек видит, что есть деревья, он выходит из дома и идёт рубить дерево. Если деревьев нет(т.е. на карте 3 пня), дровосек остаётся дома и ждёт. После того, как дровосек доходит до дерева, он начинает рубить его. После того, как дровосек заканчивает рубить дерево, он возвращается домой. После того, как дровосек доходит до дома, он кладёт дерево на склад.

В произвольные моменты времени на карте на месте пня может появляться дерево.


Кадр из игры:



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

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



Общее количество — 4.



Ресурс: сущность дровосека.

$Resource_type Ресурс_Дровосек : permanent

$Parameters

Имя : (Дровосек)

State : (В_доме, Идёт_к_дереву, Возвращается_домой, Рубит_дерево)

IsWithTree : integer // (0 - без дерева, 1 - с деревом)

Дерево : (Дерево_1, Дерево_2, Дерево_3, Без_дерева)

Step : integer

Speed : integer

X : real

Y : real

X_begin : integer

Y_begin : integer

Действие : (Начало, Конец)

$End



Ресурс: сущность лесника.

$Resource_type Ресурс_Лесник : permanent

$Parameters

Имя : (Лесник)

State : (В_доме, Идёт_к_пню, Возвращается_домой, Сажает_дерево)

IsWithTree : integer // (0 - с деревом, 1 - без дерева)

Дерево : such_as Ресурс_Дровосек.Дерево//(Дерево_1, Дерево_2, Дерево_3, Без_дерева)

Step : integer

Speed : integer

X : real

Y : real

X_begin : integer

Y_begin : integer

Действие : (Начало, Конец)

$End









Ресурс: сущность дерева.

$Resource_type Ресурс_Дерево : permanent

$Parameters

Имя : such_as Ресурс_Дровосек.Дерево

IsTree : integer

X : integer

Y : integer

$End



Ресурс: счётчик (необходим для подсчёта накопленых деревьев).

$Resource_type Ресурс_Счетчик : permanent

$Parameters

Накоплено_деревьев : integer = 0

Нужно_запасти : integer = 10

$End



Ресурсы



Общее количество - 7.



Объект ресурса

Описание

дровосек

Экземпляр дровосека.

лесник

Экземпляр лесника.

дерево_1

дерево_2

дерево_3

Экземпляры деревьев.

счетчик

Счётчик



дровосек : Ресурс_Дровосек Дровосек В_доме 0 Без_дерева 0 10 700 280 700 280 Начало


лесник : Ресурс_Лесник Лесник В_доме 0 Без_дерева 0 20 120 280 120 280 Начало

дерево_1 : Ресурс_Дерево Дерево_1 0 300 280

дерево_2 : Ресурс_Дерево Дерево_2 0 400 280

дерево_3 : Ресурс_Дерево Дерево_3 0 500 280

счетчик : Ресурс_Счетчик * *





Операции

Общее количество — 21.

Список операций:

Название операции

Назначение

Операция_1

Операция_2

Операция_3

Начало перемещения дровосека к дереву

Операция_4

Перемещение дровосека в сторону дерева

Операция_5

Перемещение дровосека в сторону дома

Операция_6

Проверка на присутствие дровосека рядом с деревом

Операция_7

Вырубка дровосеком дерева

Операция_8

Выгрузка дровосеком дерева на склад

Операция_9

Вход дровосека в дом

Операция_10

Операция_11

Операция_12

Начало перемещения лесника к пню

Операция_13

Перемещение лесника в сторону пня

Операция_14

Перемещение лесника в сторону дома

Операция_15

Проверка на присутствие лесника рядом с пнём

Операция_16

Посадка лесником дерева

Операция_17

Проверка на присутствия лесника у дома

Операция_18

Вход лесника в дом

Операция_19

Операция_20

Операция_21

Произвольное появление дерева





$Operations

Операция_1 : Дровосеку_пойти_к_дереву Дерево_1

Операция_2 : Дровосеку_пойти_к_дереву Дерево_2

Операция_3 : Дровосеку_пойти_к_дереву Дерево_3

Операция_4 : Дровосек_идёт_к_дереву

Операция_5 : Дровосек_возвращается_домой

Операция_6 : Дровосек_подошёл_к_дереву

Операция_7 : Дровосек_рубит_дерево

Операция_8 : Дровосек_разгрузиться

Операция_9 : Дровосек_войти_в_дом

Операция_10 : Леснику_пойти_к_дереву Дерево_1

Операция_11 : Леснику_пойти_к_дереву Дерево_2

Операция_12 : Леснику_пойти_к_дереву Дерево_3

Операция_13 : Лесник_идёт_к_дереву

Операция_14 : Лесник_возвращается_домой

Операция_15 : Лесник_подошёл_к_пню

Операция_16 : Лесник_сажает_дерево

Операция_17 : Лесник_разгрузиться

Операция_18 : Лесник_войти_в_дом

Операция_19 : Респавн_дерева_1

Операция_20 : Респавн_дерева_2

Операция_21 : Респавн_дерева_3

$End





Интерфейс



Использовано кадров — 1.

Изображений — 4.



Изображения

изображение дровосека.

изображение лесника.

изображение пня.



изображение дерева.





Объект прогона



Model_name = drov

Resource_file = drov

OprIev_file = drov

Statistic_file = drov

Results_file = drov

Trace_file = drov

Frame_file = drov

Frame_number = 1

Show_mode = Animation

Show_rate = 10000.0

Приложение

Функции.



$Constant

Таймер : integer = 220

$End


$Function Длина_шага_X_Д : real [-100..100]

$Type = table

$Parameters

дровосек : such_as Ресурс_Дровосек.Имя

дерево : such_as Ресурс_Дровосек.Дерево

$Body

-40

-30

-20

0

$End


$Function Длина_шага_X_Л : real [-100..100]

$Type = table

$Parameters

лесник : such_as Ресурс_Лесник.Имя

дерево : such_as Ресурс_Лесник.Дерево

$Body

9

14

19

0

$End


$Sequence Рандом : integer

$Type = uniform 123456789

$End

Объект кадра



$Frame Основной

$Back_picture = <255 255 255> fon2


Show_if дерево_1.IsTree = 0

bitmap [дерево_1.X, дерево_1.Y, pen, pen_msk]

Show_if дерево_1.IsTree = 1

bitmap [дерево_1.X, дерево_1.Y, tree, tree_msk]

Show_if дерево_2.IsTree = 0

bitmap [дерево_2.X, дерево_2.Y, pen, pen_msk]

Show_if дерево_2.IsTree = 1

bitmap [дерево_2.X, дерево_2.Y, tree, tree_msk]

Show_if дерево_3.IsTree = 0

bitmap [дерево_3.X, дерево_3.Y, pen, pen_msk]

Show_if дерево_3.IsTree = 1

bitmap [дерево_3.X, дерево_3.Y, tree, tree_msk]

Show_if дровосек.IsWithTree = 0

bitmap [дровосек.X, дровосек.Y, drovosek, drovosek_msk]

Show_if дровосек.IsWithTree = 1

bitmap [дровосек.X, дровосек.Y, drovosek, drovosek_msk]

Show_if лесник.IsWithTree = 0

bitmap [лесник.X, лесник.Y, lesnik, lesnik_msk]

Show_if лесник.IsWithTree = 1

bitmap [лесник.X, лесник.Y, lesnik, lesnik_msk]

Show


text [ 50, 30, 150, 20, transparent, <0 0 0>, 'Запасли деревьев, %:' ]

text [ 150, 50, 100, 20, transparent, <0 0 0>, (счетчик.Накоплено_деревьев / счетчик.Нужно_запасти) * 100 ]

text [ 800, 30, 150, 20, transparent, <0 0 0>, 'Осталось времени, с:' ]

text [ 920, 50, 100, 20, transparent, <0 0 0>, Таймер - Time_now ]


$End


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

Файл
156591.doc
71470.rtf
92070.rtf
168182.rtf
23091.rtf




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