Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / Compyuternoe_modelirovanie_v_AnyLogic_7_Boev_VD.pdf
Скачиваний:
225
Добавлен:
12.02.2018
Размер:
8.72 Mб
Скачать

9.1.8.6. Разгрузка самолётов в аэропорту 1

Сегмент Разгрузка самолётов в аэропорту 1 предназначен для имитации разгрузки самолётов, прибывающих с грузом из аэропорта 2.

Создайте сегмент.

1.Из палитры Презентация перетащите элемент Прямо-

угольник.

2.На странице Местоположение и размер панели Свойства

введите в поля X: 600, Y: 270, Ширина: 470, Высота: 200.

3.Перетащите элемент text и в поле Текст: введите Раз-

грузка самолётов в аэропорту 1.

4.Перетащите по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на рис. 9.12.

5.Установите свойства объектов согласно табл. 9.9. Предположим, что из сегмента ожидания разгрузки через объ-

ект enter8 поступила заявка-самолёт типа А в объект split2. Объектом split2 заявка размножается на число заявок, равное количеству контейнеров, которые должны быть выгружены из самолёта. Заяв- ка-оригинал из модели не выводится.

Таким образом, далее каждая заявка интерпретируется как за- явка-контейнер. Тем не менее, каждой копии присваиваются значения полей оригинала, так как после выгрузки все заявкиконтейнеры, кроме последней, будут выведены из модели. Однако неизвестно какая из заявок будет последней — оригинал или копия. Поэтому и присваиваются копиям значения полей оригинала.

Рис. 9.12. Сегмент Разгрузка самолётов в аэропорту 1

354

Таблица 9.9

Свойство

 

Значения

 

enter8

Тип заявки:

 

ТранспСредство

 

enter9

Тип заявки:

 

ТранспСредство

 

split2

Типы заявок:

 

ТранспСредство,

Оригинал, Копия

 

 

 

ТранспСредство

Количество копий

 

entity.колГрузоМест-1

Новая заявка (копия)

 

ТранспСредство

Действия

 

entity.типТрансп=

При выходе копии:

 

 

 

original.типТрансп;

 

 

entity.колГрузоМест=

 

 

original.колГрузоМест;

 

 

entity.врПолёта=

 

 

original.врПолёта;

 

 

entity.разные=

 

 

original.разные;

 

split3

Типы заявок:

 

ТранспСредство,

Оригинал, Копия

 

 

 

ТранспСредство

Количество копий

 

entity.колГрузоМест-1

Новая заявка (копия)

 

ТранспСредство

Действия

 

entity.типТрансп=

При выходе копии:

 

 

 

original.типТрансп;

 

 

entity.колГрузоМест=

 

 

original.колГрузоМест;

 

 

entity.врПолёта=

 

 

original.врПолёта;

 

 

entity.разные

 

 

=original.разные;

 

queue

Имя:

 

очРазгр1А

Тип заявки:

 

ТранспСредство

Максимальная вместимость

 

Установить флажок

Действия

 

entity.разные=

При выходе:

 

срВрВыгрКонтСам1А

Включить сбор статистики

 

Установить флажок

355

 

Продолжение табл. 9.9

Свойство

Значения

queue1

Имя:

очРазгр1Б

Тип заявки:

ТранспСредство

Максимальная вместимость

Установить флажок

Действия При выходе

entity.разные=

 

срВрВыгрКонтСам1Б

Включить сбор статистики

Установить флажок

delay

Имя:

разгрузка1А

Тип заявки:

ТранспСредство

Задержка задаётся

Определённое время

Время задержки

exponential

 

(1/entity.разные)

Вместимость

выгрКонтСам1А

Действия При подходе к выходу

выгрКонтА1++;

Включить сбор статистики

Установить флажок

delay1

Имя:

разгрузка1Б

Тип заявки:

ТранспСредство

Задержка задаётся

Определённое время

Время задержки

exponential

 

(1/entity.разные)

Вместимость

выгрКонтСам1Б

Действия При подходе к выходу

выгрКонтБ1++;

Включить сбор статистики

Установить флажок

selectOutput3

Тип заявки:

ТранспСредство

Выход true выбирается

При выполнении условия

Условие

entity.колГрузоМест==

 

выгрКонтА1

Действия

выгрКонтА1=0;

При выходе (true):

достКА21+=

 

entity.колГрузоМест;

 

hold2.setBlocked(false);

selectOutput4

Тип заявки:

ТранспСредство

Выход true выбирается

При выполнении условия

Условие

entity.колГрузоМест==

 

выгрКонтБ1

Действия

выгрКонтБ1=0;

При выходе (true):

достКБ21+=

356

 

 

Окончание табл. 9.9

 

 

 

 

 

entity.колГрузоМест;

 

 

hold3.setBlocked(false);

 

exit

 

 

 

Имя:

 

наОжПогр1

Тип заявки:

 

ТранспСредство

Действия

 

достК21+=

При выходе

 

entity.колГрузоМест;

 

 

if (entity.типТрансп==1)

 

 

enter.take(entity);

 

 

else enter1.take(entity);

 

sink2

 

 

 

Тип заявки:

 

ТранспСредство

Заявки-контейнеры занимают очередь к объекту разгрузка1А, имитирующему непосредственно выгрузку контейнеров из самолёта типа А в аэропорту 1. При покидании очереди выполня-

ется код entity.разные=срВрВыгрКонтСам1А, записываю-

щий в поле с именем разные заявки-контейнера среднее время выгрузки одного контейнера.

После объекта разгрузка1А, на выходе которого ведётся счёт выгруженных контейнеров (выгрКонтА1++), заявки-контейнеры входят в объект selectOutput3.

Этот объект проверяет условие (entity.колГрузоМест ==выгрКонтА1): полная ли выгрузка самолёта? При выполнении этого условия, а оно будет выполнено тогда, когда будет выгружен последний контейнер, последняя заявка теперь уже в качестве за- явки-самолёта поступит в объект наОжПогр1 (exit).

При выходе из объекта selectOutput3 переменной выгрКонтА1

присваивается значение 0, так она должна участвовать в очередной имитации выгрузки. Кроме того, разблокировывается объект hold2, так как теперь средства выгрузки аэропорта 1 самолётов типа А свободны

Из объекта наОжПогр1 (exit) заявка-самолёт типа А поступит в сегмент имитации ожидания погрузки самолётов типа А аэропорта 1.

Аналогичным образом имитируется выгрузка из самолёта типа Б. Имитация начинается с поступления заявки-самолёта через объект enter9 в объект split3.

357