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

9.1.9. Имитация функционирования аэропорта 2

Сегменты, имитирующие функционирование аэропорта 2, построены в основном также, как и сегменты аэропорта 1, поэтому будут отмечены лишь некоторые особенности.

9.1.9.1. Поступление и учёт контейнеров в аэропорту 2

Сегмент Поступление и учёт контейнеров в аэропорту 2

предназначен для имитации приёма поступающих от источников грузов (контейнеров), учёта их, определения необходимого количества контейнеров для загрузки соответствующего самолёта и формирования команды для отправки этого самолёта на погрузку контейнеров (при наличии самолёта).

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

угольник.

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

введите в поля X: 30, Y: 830, Ширина: 290, Высота: 190.

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

ступление и учёт контейнеров в аэропорту 2.

4.Перетащите из Основной библиотеки по одному объек-

ту source, selectOutput5 (имя selectOutput5) и sink. Поместите и соедините их так, как на рис. 9.13.

Установите свойства объектов согласно табл. 9.10.

Рис. 9.13. Сегмент Поступление и учёт контейнеров в аэропорту 2

358

 

Таблица 9.10

 

 

Свойство

Значения

 

source

Имя:

истГрузов2

Тип заявки:

ГрузАэропорт2

Прибывают согласно

Времени между прибытиями

Время между прибытиями

exponential

Количество заявок, прибы-

(1/срВрПостКонт2)

1

вающих за один раз

Новая заявка

ГрузАэропорт2

Действия

d=(uniform_discr(минКонтПост2,

При выходе:

максКонтПост2));

 

всегоПостК2+=d;

 

текНалК2+=d;

 

selectOutput5

Тип заявки:

ГрузАэропорт2

Использовать:

Условия

Условие 1

текНалК2<грузПодСамА

Условие 2

стоянкаПогр2А.size()>0&&

 

погрузка2А.size()==0

Действия

текНалК2-=грузПодСамА;

При выходе 2

hold6.setBlocked(false);

Условие 3

текНалК2<грузПодСамБ

Условие 4

стоянкаПогр2Б.size()>0&&

 

погрузка2Б.size()==0

Действия

текНалК2-=грузПодСамБ;

При выходе 4

hold7.setBlocked(false);

 

sink

Тип заявки:

ГрузАэропорт2

Объект source с именем истГрузов2 генерирует заявкупартию класса ГрузАэропорт2 поступивших контейнеров. Заяв- ка-партия поступает на объект selectOutput5.

Описанная в п. 9.1.8.2 последовательность проверок условий производится и в данном сегменте каждый раз при появлении в модели очередной заявки-партии. Все заявки класса ГрузАэропорт2 также выводятся из модели.

В данном сегменте, как и в п. 9.1.8.2, при выполнении подобных условий, только относительно аэропорта 2, формируются команды на отправку самолётов на погрузку.

359

9.1.9.2. Ожидание разгрузки в аэропорту 2

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

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

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

угольник.

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

введите в поля X: 30, Y: 1040, Ширина: 310, Высота: 220.

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

ние разгрузки в аэропорту 2.

4.Перетащите из Библиотеки моделирования процессов по два объекта enter, queue, hold и один объект exit. Поместите и со-

едините их так, как на рис. 9.14.

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

В нём проверяется условие: средства разгрузки свободны (разгрузка2Б.size()==0) и на стоянке нет ожидающих разгрузку самолётов? Если да, то разблокировывается объект hold5 и заявкасамолёт типа Б входит в объект наРазгрузку2 и далее в сегмент имитации разгрузки аэропорта 2.

Рис. 9.14. Сегмент Ожидание разгрузки в аэропорту 2

360

Таблица 9.11

Свойство

Объекты

 

enter10

Тип заявки:

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

Действие при входе

if

 

(стоянкаРазгр2А.size()==0

 

&&разгрузка2А.size()==0)

 

hold4.setBlocked(false);

 

enter11

Тип заявки:

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

Действие при входе

if

 

(стоянкаРазгр2Б.size()==0

 

&&разгрузка2Б.size()==0)

 

hold5.setBlocked(false);

 

queue

Имя:

стоянкаРазгр2А

Тип заявки:

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

Вместимость

колСамТипА

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

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

 

queue1

Имя:

стоянкаРазгр2Б

Тип заявки:

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

Вместимость

колСамТипБ

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

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

 

hold4

Тип заявки:

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

Изначально заблокирован

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

 

hold5

Тип заявки:

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

Изначально заблокирован

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

 

exit

Имя:

наРазгрузку2

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

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

 

{hold4.setBlocked(true);

 

enter12.take(entity);}

 

else

 

{hold5.setBlocked(true);

 

enter13.take(entity);}

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

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

361

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

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

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

угольник.

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

введите в поля X: 360, Y: 1040, Ширина: 470, Высота: 220.

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

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

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

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

через объект enter13 поступила заявка-самолёт типа Б в объект split5. Объектом split5 заявка размножается на число заявок, равное количеству контейнеров, которые должны быть выгружены из самолёта. Заявка-оригинал из модели не выводится. Поэтому количество копий на 1 меньше, чем количество выгружаемых кон-

тейнеров (entity.колГрузоМест-1).

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

362

Таблица 9.12

Свойство

 

Значения

 

enter12

Тип заявки:

 

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

 

enter13

Тип заявки:

 

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

 

split4

Типы заявок:

 

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

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

 

 

 

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

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

 

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

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

 

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

Действия

 

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

При выходе

 

копии

 

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

 

 

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

 

 

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

 

 

entity.врПолёта=

 

 

original.врПолёта;

 

 

entity.разные =

 

 

original.разные;

 

split5

Типы заявок:

 

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

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

 

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

 

 

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

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

 

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

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

 

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

Действия

 

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

 

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

 

 

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

 

 

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

 

 

entity.врПолёта=

 

 

original.врПолёта;

 

 

entity.разные=

 

 

original.разные;

 

queue

Имя:

 

очРазгр2А

Тип заявки:

 

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

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

 

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

Действия

 

entity.разные=

При выходе:

 

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

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

 

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

363

 

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

 

 

Объекты

Свойства

queue1

Имя:

очРазгр2Б

Тип заявки:

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

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

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

Действия

entity.разные=

При выходе:

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

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

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

delay

Имя:

разгрузка2А

Тип заявки:

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

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

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

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

exponential

 

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

Вместимость

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

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

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

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

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

delay1

Имя:

разгрузка2Б

Тип заявки:

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

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

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

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

exponential

 

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

Вместимость

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

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

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

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

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

selectOutput6

Тип заявки:

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

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

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

Условие

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

 

выгрКонтА2

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

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

 

достКА12+=

 

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

 

hold4.setBlocked(false);

selectOutput7

Тип заявки:

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

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

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

Условие

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

 

выгрКонтБ2

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

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

364