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

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

Московский Энергетический Институт

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









Лабораторная работа №3

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

по курсу

«Теория игр и Исследование Операций»















Выполнила: студентка группы А-13-06

Салимова Алсу

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









Москва 2010



Содержание


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

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

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

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

Ресурсы 3

Операции 4

Интерфейс 4

Выполнение 5

Статистика 5

Приложение 6


















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

Реализовать в системе имитационного моделирования РДО следующую ситуацию:

Автобус начинает движение по маршруту. На улице есть три остановки (с одним человеком, двумя или тремя). Чем больше людей заберет автобус, тем больше прибыли он получит.

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



На улице 6 остановок с разным количеством людей (1,2 и 3 человека). Чем больше людей заберет автобус, соответственно, тем больше денег он заработает. Однако время стоянки автобуса на остановки прямо пропорционально количеству пассажиров совершающих посадку. В тоже время автобус ограничен временем работы (м.б смена или полный рабочий день), по его истечению перевозка людей прекращается.



































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

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



Ресурс «Остановки» описывает остановку с людьми:

- состояние остановки;

-деньги за проезд (15 за одного человека);

- количество людей, стоящих на остановке (1, 2 или 3).

$Resource_type Остановки : permanent

$Parameters


состояние_остановки :(не_доставлен, перевозит, доставлен) = не_доставлен

деньги : integer

клиент : integer


$End


Ресурс «Автобусы» предназначен для описания автобуса:

$Resource_type Автобусы : permanent

$Parameters


состояние_автобуса : (едет, приехал, уехал) = едет

деньги_за_проезд : integer = -10

$End

Ресурсы



Используется 7 постоянных ресурсов: 6 остановок и 1 автобус:

$Resources

остановка_1: Остановки trace * 30 2

остановка_2: Остановки trace * 45 3

остановка_3: Остановки trace * 15 1

остановка_4: Остановки trace * 45 3

остановка_5: Остановки trace * 15 1

остановка_6: Остановки trace * 30 2

остановка_7: Остановки trace * 15 1

Автобус_1: Автобусы trace * *

$End


Операции



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

$Operations

Работа : Образец_Работа

$End






Интерфейс





Используется 1 кадр анимации



Цифрами обозначено количество денег за проезд, которое должен получить автобус на каждой остановке.



Выполнение



Model_name = Mymodel


Resource_file = mymodel

OprIev_file = mymodel

Statistic_file = mymodel

Results_file = mymodel

Trace_file = mymodel

Frame_file = mymodel

Frame_number = 1

Show_mode = Animation

Show_rate = 30000.0


Terminate_if Time_now >= 1000.0


Статистика



В ходе тестирования программы было рассмотрено три случайных версии:


$Sequence Рандом : real

$Type = uniform 123456789

$End


$Sequence Рандом1 : real

$Type = uniform 1345785

$End


$Sequence Рандом2 : real

$Type = uniform 112334111455664321113

$End


В первом случае выигрыш был 130.

Второй случай: 180

Третий случай: 140

Вывод: Видно, что оптимальный вариант №2, поскольку минимизировано время обслуживания столиков.



Приложение

FUN

$Constant

X_1 : real = 150.0 {время}

$End


$Function Проверка_автобуса :such_as Автобусы.состояние_автобуса

$Type = algorithmic

$Parameters

время : real

$Body

Calculate_if время<X_1 Проверка_автобуса=едет

Calculate_if время>X_1 Проверка_автобуса=приехал

$End


$Sequence Рандом1 : real

$Type = uniform 1345785

$End


$Sequence Рандом2 : real

$Type = uniform 234567891

$End


$Sequence Рандом : real

$Type = uniform 123456789

$End


$Function Выч_Время :real

$Type = algorithmic

$Parameters

клиент : integer

$Body

Calculate_if клиент=1 Выч_Время=30.0

Calculate_if клиент=2 Выч_Время=60.0

$End



$Function Выч_Время2 :real

$Type = algorithmic

$Parameters

клиент : integer

$Body

Calculate_if клиент=1 Выч_Время2=20.0

Calculate_if клиент=2 Выч_Время2=30.0

$End



FRM

$Frame Кадар_1

$Back_picture = <255 255 255> bg

Show


bitmap [ 50, 206, c1, c11]

bitmap [ 330, 206, c2, c22]

bitmap [ 670, 206, c3, c33]

bitmap [ 80, 460, c2, c22]

bitmap [ 434, 460, c3, c33]

bitmap [ 718, 460, c1, c11]

text [ 620, 50, 250, 15, transparent, <0 0 0>, <'Деньги_за_проезд' ]

text [ 600, 50, 180, 15, transparent, <0 0 0>, >Автобус_1.деньги_за_проезд]

text [ 70, 280, 100, 15, transparent, <0 0 0>, >остановка_1.деньги]

text [ 350, 280, 100, 15, transparent, <0 0 0>, >остановка_2.деньги]

text [ 660, 280, 100, 15, transparent, <0 0 0>, >остановка_3.деньги]

text [ 70, 550, 100, 15, transparent, <0 0 0>, >остановка_4.деньги]

text [ 350, 550, 100, 15, transparent, <0 0 0>, >остановка_5.деньги]

text [ 660, 550, 100, 15, transparent, <0 0 0>, >остановка_6.деньги]


Show_if остановка_2.состояние_остановки = перевозит

bitmap [50, 206, a1, a11]


Show_if остановка_3.состояние_остановки = перевозит

bitmap [296, 206, a2, a22]


Show_if остановка_4.состояние_остановки = перевозит

bitmap [650, 206, a3, a33]


Show_if остановка_5.состояние_остановки = перевозит

bitmap [46, 460, a2, a22]


Show_if остановка_6.состояние_остановки = перевозит

bitmap [376, 460, a3, a33]


Show_if остановка_7.состояние_остановки = перевозит

bitmap [682, 460, a1, a11]



Show_if остановка_2.состояние_остановки = доставлен

bitmap [50, 206, s1, s11]


Show_if остановка_3.состояние_остановки = доставлен

bitmap [330, 206, s2, s22]


Show_if остановка_4.состояние_остановки = доставлен

bitmap [670, 206, s3, s33]


Show_if остановка_5.состояние_остановки = доставлен

bitmap [80, 460, s2, s22]


Show_if остановка_6.состояние_остановки = доставлен

bitmap [434, 460, s3, s33]


Show_if остановка_7.состояние_остановки = доставлен

bitmap [718, 460, s1, s11]


Show_if Автобус_1.состояние_автобуса = уехал

bitmap [690, 440, c1, c11]


text [0, 355, 100, 15, transparent, <0 0 0>, >Автобус_1.состояние_автобуса]


Show_if Time_now < X_1

text [615, 100, 250, 15, transparent, <0 0 0>, <'осталось времени']

text [690, 100, 100, 15, transparent, <0 0 0>, >X_1-(Time_now)]

Show_if Time_now > X_1

text [615, 100, 250, 15, transparent, <0 0 0>, <'Осталось времени']

text [650, 100, 100, 15, transparent, <0 0 0>, >0]

$End


PMD


$Results

Деньги : get_value Автобус_1.деньги_за_проезд

состояние_автобуса : get_value Автобус_1.состояние_автобуса

$End

14



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

Файл
76059.rtf
185009.doc
21963-1.rtf
45777.rtf
ref-18199.doc




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