Лабораторные работы (2011) (лаба RDO)

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)


Институт Автоматики и Вычислительной Техники

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



















О Т Ч Е Т


по лабораторной работе №3

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



















Студент гр. А-13-07 Рязанов М.А.


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







Москва 2011

Оглавление

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

Словесное описание предметной области 4

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

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

Ресурсы 5

Операции 5

Интерфейс 6

Выполнение 6

Приложение 7

Используемые в программе образцы операций 7

Написанные функции 10

Пример работы: 10

Заключение 12

Литература 12




















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

С помощью инструментария для интеллектуального имитационного моделирования (RDO) описать движение пешехода через дорогу с регулируемым пешеходным переходом.

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

Пешеход хочет перейти дорогу по регулируемому пешеходному переходу. Начинает движение незадолго до пешеходного перехода. Подойдя к переходу, пешеход проверяет наличие запрещающего знака, если его не оказалось, то переходит дорогу.

Пользователь имеет возможность управлять запрещающим знаком:

  • Показать знак, нажатием клавиши «вверх»

  • Спрятать знак, нажатием клавиши «вниз»

Пешеход делает 10 шагов до перехода, и 8 шагов по переходу (для имитации увеличения скорости движения по переходу)

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

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

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

{пешеход}

$Resource_type ТипПешеход : temporary

$Parameters

сост : (Пришел, Идет_до, Идет_по, Иду)

шагов : integer [0..10] = 0

$End

{главное состояние ситемы}

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

$Parameters

Не_пришли : integer [0..100] //сюда засунем сколько должно прийти

Можно_идти : integer [0..1] = 1 //можно идти или нет, изначально можно.

{для анимации}

sin: such_as ТипСостояние.Не_пришли

s01: such_as ТипСостояние.Не_пришли

s02: such_as ТипСостояние.Не_пришли

s03: such_as ТипСостояние.Не_пришли

s04: such_as ТипСостояние.Не_пришли

s05: such_as ТипСостояние.Не_пришли

s06: such_as ТипСостояние.Не_пришли

s07: such_as ТипСостояние.Не_пришли

s08: such_as ТипСостояние.Не_пришли

s09: such_as ТипСостояние.Не_пришли

s10: such_as ТипСостояние.Не_пришли

ss: such_as ТипСостояние.Не_пришли

s11: such_as ТипСостояние.Не_пришли

s12: such_as ТипСостояние.Не_пришли

s13: such_as ТипСостояние.Не_пришли

s14: such_as ТипСостояние.Не_пришли

s15: such_as ТипСостояние.Не_пришли

s16: such_as ТипСостояние.Не_пришли

s17: such_as ТипСостояние.Не_пришли

s18: such_as ТипСостояние.Не_пришли

$End

{состояние знака}

$Resource_type ТипЗнак : permanent

$Parameters

состояниезнака : (Есть,Нет)

$End

Ресурсы



В программе присутствуют следующие ресурсы:

$Resources

Состояние : ТипСостояние trace 10 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0

Привет: ТипЗнак trace Нет

$End


Изначально нет знака и устанавливаем состояние, с помощью которого впоследствии будем имитировать движение. Количество пешеходов – это первое число в «Состоянии». Мы даём пройти десяти пешеходам.

Операции



В программе присутствуют следующие операции (2 из которых интерактивные):

$Operations

//операции для пешехода


//приход

Приход_пешехода: О_Приход_пешехода 0.1 //время появления

//начало движения

Начать_идти : О_Начать_идти

//идти_до_перехода

Идти_до_перехода: О_Идти_до_перехода

//промежуточное, для начала перехода, и в нем знак проверяется

Перейти_перекресток: О_Перейти_переход

//процесс перехода

Переход_перекрестка: О_Переход_перехода


//операции для знака


//появление знака

Появление_знака: О_Появление_знака 'UP'

//исчезновение знака

Появление_знака: О_Исчезновение_знака 'DOWN'

$End


Интерфейс

Рис.1. Пересечение проезжей части по пешеходному переходу

Рис.2. Пересечение проезжей части по пешеходному переходу с запрещающим знаком.

Выполнение

Model_name = football

Resource_file = football

Results_file = football

OprIev_file = football

Trace_file = football

Frame_file = football

Frame_number = 1

Show_mode = Animation

Show_rate = 50.0

//заканчиваем работу, когда меньше нуля становится счетчик пешеходов

Terminate_if Time_now >= 10*60*60.0 or Состояние.Не_пришли < 0


Приложение

Используемые в программе образцы операций:


//щаблон прихода пешехода

$Pattern О_Приход_пешехода : operation

$Parameters

Время : real = 0.05 // параметр, передаётся в OPR

$Relevant_resources //"уместные" ресурсы

_Состояние : ТипСостояние Keep Keep //берем состояние, которое потом постоянно будет изменяться

_Пешеход : ТипПешеход NonExist Create //пешехода создаём, типа временный ресурс

$Time = Время

$Body

//меняем состояние

_Состояние

Choice from _Состояние.Не_пришли > 0 and _Состояние.Можно_идти = 1

first

Convert_begin

Не_пришли set _Состояние.Не_пришли - 1 //даём идти пешеходу, уменьшаем пришедших на единицу

Можно_идти set 0


Convert_end

Можно_идти set 1

sin set _Состояние.sin + 1 //начальное состояние

//меняем пешехода

_Пешеход

Convert_end

сост set Пришел //состояние пришел

шагов set 0 //начало движения


$End

//первое движение

$Pattern О_Начать_идти : rule

$Relevant_resources

_Пешеход : ТипПешеход Keep

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

$Body

_Пешеход

Choice from _Пешеход.сост = Пришел

first

Convert_rule

сост set Идет_до //меняем на состояние "идет до перекрестка"

шагов set 0

_Состояние

Choice NoCheck

first

Convert_rule

sin set _Состояние.sin - 1 //ушел с начального

s01 set _Состояние.s01 + 1 //перешел на следующее, но шагов не делал

$End


//дойти до перехода

$Pattern О_Идти_до_перехода : operation

$Relevant_resources

_Пешеход : ТипПешеход Keep Keep

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

$Time = время_шага

$Body

_Пешеход

Choice from _Пешеход.шагов < N and _Пешеход.сост = Идет_до

first

Convert_begin

сост set Иду //состояние идет у пешехода


Convert_end

шагов set _Пешеход.шагов + 1 //сделан шаг

сост set Идет_до

_Состояние

Choice NoCheck

first

Convert_end

s01 set _Состояние.s01 + СменаСостояния( 1, _Пешеход.шагов)

s02 set _Состояние.s02 + СменаСостояния( 2, _Пешеход.шагов)

s03 set _Состояние.s03 + СменаСостояния( 3, _Пешеход.шагов)

s04 set _Состояние.s04 + СменаСостояния( 4, _Пешеход.шагов)

s05 set _Состояние.s05 + СменаСостояния( 5, _Пешеход.шагов)

s06 set _Состояние.s06 + СменаСостояния( 6, _Пешеход.шагов)

s07 set _Состояние.s07 + СменаСостояния( 7, _Пешеход.шагов)

s08 set _Состояние.s08 + СменаСостояния( 8, _Пешеход.шагов)

s09 set _Состояние.s09 + СменаСостояния( 9, _Пешеход.шагов)

s10 set _Состояние.s10 + СменаСостояния( 10, _Пешеход.шагов)

$End

//перейти

$Pattern О_Перейти_перекресток : rule

$Relevant_resources

_Пешеход : ТипПешеход Keep

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

$Body

_Пешеход

Choice from _Пешеход.шагов = N and _Пешеход.сост = Идет_до and Привет.состояниезнака=Нет

first

Convert_rule

сост set Идет_по

шагов set 0

_Состояние

Choice NoCheck

first

Convert_rule

s10 set _Состояние.s10 - 1

$End

//переход

$Pattern О_Переход_перекрестка : operation

$Relevant_resources

_Пешеход : ТипПешеход Keep Keep

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

$Time = время_шага

$Body


_Пешеход

Choice from _Пешеход.шагов < N and _Пешеход.сост = Идет_по

first

Convert_begin

сост set Иду

Convert_end

сост set Идет_по

шагов set _Пешеход.шагов + 1


_Состояние

Choice NoCheck

first

Convert_end

s11 set _Состояние.s11 + СменаСостояния( 1, _Пешеход.шагов)

s12 set _Состояние.s12 + СменаСостояния( 2, _Пешеход.шагов)

s13 set _Состояние.s13 + СменаСостояния( 3, _Пешеход.шагов)

s14 set _Состояние.s14 + СменаСостояния( 4, _Пешеход.шагов)

s15 set _Состояние.s15 + СменаСостояния( 5, _Пешеход.шагов)

s16 set _Состояние.s16 + СменаСостояния( 6, _Пешеход.шагов)

s17 set _Состояние.s17 + СменаСостояния( 7, _Пешеход.шагов)

s18 set _Состояние.s18 + СменаСостояния( 8, _Пешеход.шагов)

$End


//появление знака

$Pattern О_Появление_знака : keyboard trace


$Relevant_resources

_Знак : ТипЗнак Keep Keep

$Time = 0.0

$Body

_Знак

Choice NoCheck

first

Convert_begin

состояниезнака set Есть

Convert_end

$End


//исчезновение знака

$Pattern О_Исчезновение_знака : keyboard trace


$Relevant_resources

_Знак : ТипЗнак Keep Keep


$Time = 0.0

$Body

_Знак

Choice NoCheck

first

Convert_begin

состояниезнака set Нет

Convert_end

$End




Написанные функции:

$Function СменаСостояния: integer = 0

$Type = algorithmic

$Parameters

_позиция : such_as ТипПешеход.шагов

_шагов : such_as ТипПешеход.шагов

$Body

Calculate_if _позиция = _шагов - 1 СменаСостояния = -1

Calculate_if _позиция = _шагов СменаСостояния = 1

$End


Пример работы:

  1. Начало работы. Нет знака, пешеход просто подходит к переходу и проходит его.


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

Файл
ref-17237.doc
178731.rtf
31678.rtf
161982.rtf
5118-1.rtf




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