Лабораторные работы (2009) (отчётмой)

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

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

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







Отчет

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

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

по курсу:

«Теория принятия решений»



выполнил студент

группы А-13-05

Гаркуша И.В.



















Москва 2009

Оглавление:

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

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

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

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

Ресурсы 4

Операции 4

Выполнение 5

Функции 5

Описание графики 5

Интерфейс 8

Статистика 9

Приложение 9


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





Реализовать в системе имитационного моделирования РДО следующую ситуацию: Заправка самолёта в аэропорту. Заправщик может единовременно взять на борт 7 тонн керосина, всего самолёту необходимо 35 тонн.

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

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

Время перегонки очередной тонны по топливной системе выбирается случайно, из интервала 0.001-0.03 ч. После начала переливания топлива в цистерну необходимо 0.004ч на каждую тонну. По окончании процесса погрузки очередной тонны заправщик ожидает следующую тонну, затем повторяет процесс погрузки, и так пока не заполнится собственный бак. По заполнению бака заправщик отправляется к самолету, и тратит на это (0.015 + 0.007* кол-во тонн топлива в баке), тем самым учитывается вес груза.

Находясь возле самолета, заправщик перекачивает топливо из собственного бака в баки самолета, тратя на это по 0.003ч. на каждую тонну топлива. Затем, с уже пустым баком он отправляется к ленте.

Заметим, что с момента начала разгрузки в самолёт топлива заправщиком до начала его загрузки топливной системой аэропорта, можно нажатием кнопок 1 – 7 задать объём, который необходимо погрузить в заправщик.

Заправщик прекращает загружать самолет, когда в баках самолета не останется места для топлива.

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



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

В модели используется ресурс ЗаправщикС, и его тип- Заправщик.

$Resource_type заправщик : permanent

$Parameters

объём_бака: integer [0..7] = 7

тонны_в_баке: integer [0..7] = 0

место_заправщика : (на_трубе, самолета) = на_трубе

тонна_на_трубе: integer

тонн_в_самолете: integer=0

идёт_есть_тонна: integer[0..1]=0

идёт_разгрузка: integer[0..1]=0

идёт_заправка: integer[0..1]=0

заправщик_идёт_самолетой: integer[0..1]=0

заправщик_идёт_на_трубу: integer[0..1]=0

$End



Ресурсы

В модели используется единственный ресурс, который включает в себя все данные о состоянии заправщика и заправки вцелом, и имеет тип заправщик:

$Resources

заправщикС: заправщик trace * * * 1 * * * * * *

$End

Операции

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

$Operations

есть_тонна : О_есть_тонни

добавление_в_бако : о_добавления_в_бако

заправщик_идет_самолетой : о_заправщик_идет_самолетой

выгрузка_тонны : о_выгрузка_тонны

заправщик_идет_на_трубу : о_заправщик_идет_на_трубу

новый_объём_1 : о_смена_объёма_бака '1' 1

новый_объём_2 : о_смена_объёма_бака '2' 2

новый_объём_3 : о_смена_объёма_бака '3' 3

новый_объём_4 : о_смена_объёма_бака '4' 4

новый_объём_5 : о_смена_объёма_бака '5' 5

новый_объём_6 : о_смена_объёма_бака '6' 6

новый_объём_7 : о_смена_объёма_бака '7' 7

$End

Выполнение

Model_name =loader

Resource_file =loader

OprIev_file =loader

Statistic_file =loader

Results_file =loader

Trace_file =loader

Frame_file =loader

Frame_number =1

Show_mode = Animation

Show_rate = 50.0

Terminate_if заправщикС.тонн_в_самолете > объём_бакасама- заправщикС.объём_бака

Функции

$Constant

объём_бакасама : integer = 35

$End

$Sequence Интервал_тонни : real

$Type = uniform 154895

$End





Описание графики


$Frame Кадр1

$Back_picture = <100 100 100> fon

Show

//bitmap [0, 176, q ,w]


Show_if заправщикС.место_заправщика = на_трубе

bitmap [150, 340, loader,loaderm]


Show_if заправщикС.место_заправщика = самолета

bitmap [350, 340, loader,loaderm]


Show_if заправщикС.тонны_в_баке = 0 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket,loadbasketf]

Show_if заправщикС.тонны_в_баке = 1 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket7,loadbasketf]

Show_if заправщикС.тонны_в_баке = 2 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket6,loadbasketf]

Show_if заправщикС.тонны_в_баке = 3 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket5,loadbasketf]

Show_if заправщикС.тонны_в_баке = 4 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket4,loadbasketf]

Show_if заправщикС.тонны_в_баке = 5 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket3,loadbasketf]

Show_if заправщикС.тонны_в_баке = 6 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket2,loadbasketf]

Show_if заправщикС.тонны_в_баке = 7 and заправщикС.место_заправщика = на_трубе

bitmap [15, 290, loadbasket1,loadbasketf]



Show_if заправщикС.тонны_в_баке = 0 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket,loadbasketf]

Show_if заправщикС.тонны_в_баке = 1 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket7,loadbasketf]

Show_if заправщикС.тонны_в_баке = 2 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket6,loadbasketf]

Show_if заправщикС.тонны_в_баке = 3 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket5,loadbasketf]

Show_if заправщикС.тонны_в_баке = 4 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket4,loadbasketf]

Show_if заправщикС.тонны_в_баке = 5 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket3,loadbasketf]

Show_if заправщикС.тонны_в_баке = 6 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket2,loadbasketf]

Show_if заправщикС.тонны_в_баке = 7 and заправщикС.место_заправщика = самолета

bitmap [500, 290, loadbasket1,loadbasketf]


Show_if заправщикС.тонна_на_трубе = 0 and заправщикС.место_заправщика = на_трубе

bitmap [20, 15, ud_p,udf]

Show_if заправщикС.тонна_на_трубе = 1 and заправщикС.место_заправщика = на_трубе

bitmap [20, 15, ud_sr,udf]



Show_if заправщикС.идёт_заправка = 1

bitmap [100, 200, str_in,bagstr_f]

Show_if заправщикС.идёт_разгрузка = 1

bitmap [450, 230, str_out,bagstr_f]



Show_if заправщикС.идёт_есть_тонна = 1

text [ 175,24, 100, 20, <0 0 0>, <0 255 0>, 'No Fuel' ]

Show_if заправщикС.тонна_на_трубе = 1

text [ 175,24, 200, 20, <0 0 0>, <0 255 0>, 'Fuel in system' ]


Show_if заправщикС.идёт_разгрузка = 1

text [ 175,24, 200, 20, <0 0 0>, <0 255 0>, 'LOADIN IN THE PLANE' ]


Show_if заправщикС.заправщик_идёт_самолетой = 1

text [ 175,24, 200, 20, <0 0 0>, <0 255 0>, 'GO TO THE PLANE' ]


Show_if заправщикС.заправщик_идёт_на_трубу = 1

text [ 175,24, 200, 20, <0 0 0>, <0 255 0>, 'Go to the fuel system' ]


Show_if заправщикС.тонн_в_самолете >= 0

text [ 490,239, 120, 20, <0 0 0>, <0 255 0>, 'FUEL ON BOARD' ]

Show_if заправщикС.тонн_в_самолете >= 0

text [ 610,239, 120, 20, <0 0 0>, <0 255 0>, заправщикС.тонн_в_самолете]

Show_if заправщикС.тонн_в_самолете >= 0

text [ 520,260, 30, 20, <0 0 0>, <0 255 0>, 'OF']

Show_if заправщикС.тонн_в_самолете >= 0

text [ 550,260, 40, 20, <0 0 0>, <0 255 0>, объём_багсама]


Show_if заправщикС.место_заправщика = самолета

bitmap [470, 100, samolet2,samoletf]



$End

Интерфейс

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


  1. Топливная система аэропорта: каплей отображается наличие перегоняемого керосина

  2. капля №2 отображает процесс погрузки топлива в заправщик

  3. Строка состояния

  4. Отображает количество топлива уже погруженное в самолёт

  5. Шкала загрузки собственного объёма цистерны заправщика ( всего 7 едениц, по одной на тонну топлива )

  6. Сам заправщик


Клавиатура:

В процессе моделирования есть возможность менять объём цистерны заправщика, путём нажатия на соответствующую цифру на клавиатуре в диапазоне от 1 до 7ми.


Статистика

время_на_поход_к_трубе FALSE 4 0.0755456 0.0016 0.02 0.02

время_на_возвращение_самолетой FALSE 5 0.259688 0.015125 0.055 0.055

время_на_разгрузку FALSE 29 0.0821558 0.000261 0.003 0.003

время_на_заправку FALSE 35 0.132205 0.00056 0.004 0.004

время_на_есть_тонну FALSE 34 0.450406 0.00729097 0.00628219 0.019943

В результате изменения начальных значений генераторов случайных чисел результаты меняются незначительно.

Вывод: При использовании цистерн большего объёма, расход времени значительно сокращается

Приложение



//Обработчик подачи тонны топлива

$Pattern О_есть_тонни : operation

$Relevant_resources

_заправщик : заправщикС keep keep

$Time = Интервал_тонни(0.005, 0.02)

$Body

_заправщик

Choice from _заправщик.тонны_в_баке < _заправщик.объём_бака and

_заправщик.тонна_на_трубе = 0 and

_заправщик.место_заправщика = на_трубе and

_заправщик.идёт_есть_тонна = 0

first

Convert_begin {trace}

идёт_есть_тонна set 1

Convert_end {trace}

тонна_на_трубе set _заправщик.тонна_на_трубе + 1

идёт_есть_тонна set 0

$End


$Pattern о_добавления_в_бако : operation

$Relevant_resources

_заправщик : заправщикС keep Keep

$Time = 0.004

$Body

_заправщик

Choice from _заправщик.тонны_в_баке < _заправщик.объём_бака and

_заправщик.тонна_на_трубе > 0 and

_заправщик.место_заправщика = на_трубе and

_заправщик.идёт_заправка = 0

first

Convert_begin {trace}

идёт_заправка set 1

Convert_end

тонны_в_баке set _заправщик.тонны_в_баке + 1

тонна_на_трубе set _заправщик.тонна_на_трубе - 1

идёт_заправка set 0;

$End


$Pattern о_заправщик_идет_самолетой : operation

$Relevant_resources

_заправщик : заправщикС keep Keep

$Time = 0.02 + 0.005 * _заправщик.тонны_в_баке

$Body

_заправщик

Choice from _заправщик.тонны_в_баке = _заправщик.объём_бака and

_заправщик.место_заправщика = на_трубе and

_заправщик.заправщик_идёт_самолетой = 0

first

Convert_begin {trace}

заправщик_идёт_самолетой set 1

Convert_end

место_заправщика set самолета

заправщик_идёт_самолетой set 0

$End


$Pattern о_выгрузка_тонны : operation

$Relevant_resources

_заправщик: заправщикС keep Keep

$Time = 0.003

$Body

_заправщик

Choice from _заправщик.тонны_в_баке > 0 and

_заправщик.место_заправщика = самолета and

_заправщик.идёт_разгрузка=0

first

Convert_begin {trace}

идёт_разгрузка set 1

Convert_end

тонны_в_баке set _заправщик.тонны_в_баке - 1

тонн_в_самолете set _заправщик.тонн_в_самолете + 1

идёт_разгрузка set 0

$End



$Pattern о_заправщик_идет_на_трубу : operation

$Relevant_resources

_заправщик : заправщикС keep Keep

$Time = 0.02

$Body

_заправщик

Choice from _заправщик.тонны_в_баке = 0 and

_заправщик.место_заправщика = самолета and

_заправщик.заправщик_идёт_на_трубу = 0

first

Convert_begin {trace}

заправщик_идёт_на_трубу set 1

Convert_end

место_заправщика set на_трубе

заправщик_идёт_на_трубу set 0

$End


$Pattern о_смена_объёма_бака : keyboard

$Parameters новый_объём : integer = 4

$Relevant_resources

_заправщик : заправщикС keep Keep

$Time = 0.0

$Body

_заправщик

Choice from новый_объём<=4 and новый_объём>0

first

Convert_begin

объём_бака set новый_объём

Convert_end

$End

11






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

Файл
2031.rtf
27278.rtf
13809-1.rtf
project1.doc
101031.rtf




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