Опубликован: 15.02.2013 | Уровень: для всех | Доступ: платный
Лекция 10:

Модель функционирования системы воздушных перевозок

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

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

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

  1. Из палитры Презентация перетащите элемент Прямоугольник.
  2. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 600, Y: 270, Ширина: 470, Высота: 200.
  3. Перетащите элемент text и в поле Текст: введите Разгрузка самолётов в аэропорту 1.
  4. Перетащите из Основной библиотеки по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на рис. 9.10.
  5. Установите свойства объектов согласно табл. 9.9.

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

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

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

увеличить изображение
Рис. 9.10. Сегмент Разгрузка самолётов в аэропорту 1
Таблица 9.9.
Свойство Значения
enter8
Класс заявки: ТранспСредство
enter9
Класс заявки: ТранспСредство
split2
Классы заявок:
Оригинал, Копия ТранспСредство,
ТранспСредство
Количество копий entity.колГрузоМест-1
Новая заявка (копия) new ТранспСредство()
Действие при выходе копии entity.типТрансп=
original.типТрансп;
entity.колГрузоМест=
original.колГрузоМест;
entity.врПолёта=
original.врПолёта;
entity.разные=
original.разные;
split3
Классы заявок:
Оригинал, Копия ТранспСредство,
ТранспСредство
Количество копий entity.колГрузоМест-1
Новая заявка (копия) new ТранспСредство()
Действие при выходе копии entity.типТрансп=
original.типТрансп;
entity.колГрузоМест=
original.колГрузоМест;
entity.врПолёта=
original.врПолёта;
entity.разные =original.разные;
queue
Имя: очРазгр1А
Класс заявки: ТранспСредство
Максимальная вместимость Установить флажок
Действие при выходе entity.разные=
срВрВыгрКонтСам1А
Включить сбор статистики Установить флажок
queue1
Имя: очРазгр1Б
Класс заявки: ТранспСредство
Максимальная вместимость Установить флажок
Действие при выходе entity.разные=
срВрВыгрКонтСам1А
Включить сбор статистики Установить флажок
delay
Имя: разгрузка1А
Класс заявки: ТранспСредство
Задержка задаётся Явно
Время задержки exponential
(1/entity.разные)
Вместимость выгрКонтСам1А
Действие при выходе выгрКонтА1++;
Включить сбор статистики Установить флажок
delay1
Имя: разгрузка1Б
Класс заявки: ТранспСредство
Задержка задаётся Явно
Время задержки exponential
(1/entity.разные)
Вместимость выгрКонтСам1Б
Действие при выходе выгрКонтБ1++;
Включить сбор статистики Установить флажок
selectOutput3
Класс заявки: ТранспСредство
Выход true выбирается При выполнении условия
Условие entity.колГрузоМест==
выгрКонтА1
Действие при выходе (true) выгрКонтА1=0;
достКА21+=
entity.колГрузоМест;
hold2.setBlocked(false);
selectOutput4
Класс заявки: ТранспСредство
Выход true выбирается При выполнении условия
Условие entity.колГрузоМест==
выгрКонтБ1
Действие при выходе (true) выгрКонтБ1=0;
достКБ21+=
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.

Алексей Гроссман
Алексей Гроссман

Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио.

Елена Блинаева
Елена Блинаева