Опубликован: 15.02.2013 | Доступ: свободный | Студентов: 256 / 0 | Длительность: 16:52:00
ISBN: 978-5-9556-0146-5
Лекция 10:

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

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

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

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

  1. Из палитры Презентация перетащите элемент Прямоугольник.
  2. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 30, Y: 270, Ширина: 220, Высота: 200.
  3. Перетащите элемент text и в поле Текст: введите Поступление и учёт контейнеров в аэропорту 1.
  4. Перетащите из Основной библиотеки по одному объекту source, selectOutput5 (имя selectOutput) и sink. Поместите и соедините их так, как на рис. 9.6.

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

Объект source с именем истГрузов1 генерирует заявку-партию класса ГрузАэропорт1 поступивших контейнеров, число которых в партии распределено по равномерному закону. Заявка-партия поступает на объект selectOutput.

В условии 0 проверяется наличие числа контейнеров, достаточного для полной загрузки самолёта типа А. Если число контейнеров недостаточно, заявка-партия уничтожается. Так продолжается до тех пор, пока не выполнится условие 0.

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

Рис. 9.6. Сегмент Поступление и учёт контейнеров в аэропорту 1
Таблица 9.5.
Свойство Значения
source
Имя: истГрузов1
Класс заявки: ГрузАэропорт1
Заявки прибывают согласно Времени между прибытиями
Время между прибытиями exponential(1/срВрПостКонт1)
Количество заявок, прибывающих за один раз 1
Новая заявка new ГрузАэропорт1()
Действие при выходе a=(uniform_
discr(минКонтПост1,
максКонтПост1));
всегоПостК1+=a;
текНалКонт1+=a;
selectOutput
Класс заявки: ГрузАэропорт1
Использовать: Условия
Условие 0 текНалК1<грузПодСамА
Условие 1 стоянкаПогр1А.size()>0&&
погрузка1А.size()==0
Действие при выходе 1 текНалК1-=грузПодСамА;
hold.setBlocked(false);
Условие 2 текНалК1<грузПодСамБ
Условие 3
Действие при выходе 3
sink
Класс заявки: ГрузАэропорт1

После выполнения условия 0 проверяется условие 1: наличие самолётов типа А на стоянке ожидания погрузки и незанятость пунктов погрузки.

При выполнении условия 1 формируется команда на разблокировывание элемента hold (см. п. 9.1.8.2) и самолёт типа А отправляется на погрузку.

Если условие 1 не выполняется, например, при отсутствии свободного самолёта типа А, проверяется условие 2.

Если условие 2 не выполняется, то есть недостаточно контейнеров для полной загрузки самолёта типа Б, то заявка-партия уничтожается.

Если условие 2 выполняется (поступило число контейнеров, достаточное для полной загрузки самолёта типа Б), проверяется условие 3: наличие самолётов типа Б на стоянке ожидания погрузки и незанятость пунктов погрузки.

Если условие 3 не выполняется, заявка-партия уничтожается.

При выполнении условия 3 формируется команда на разблокировывание элемента hold1 (см. п. 9.1.8.2) и самолёт типа Б отправляется на погрузку.

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

Погрузка контейнеров в аэропорту 1

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

Создайте сегмент Погрузка контейнеров в аэропорту 1.

  1. Из палитры Презентация перетащите элемент Прямоугольник.
  2. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 350, Y: 50, Ширина: 460, Высота: 200.
    Сегмент Погрузка контейнеров в аэропорту 1

    увеличить изображение
    Рис. 9.7. Сегмент Погрузка контейнеров в аэропорту 1
  3. Перетащите элемент text и в поле Текст: введите Погрузка контейнеров в аэропорту 1.
  4. Перетащите из Основной библиотеки по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на рис. 9.7.
  5. Установите свойства объектов согласно табл. 9.6.
Таблица 9.6.
Свойство Значения
enter2
Класс заявки: ТранспСредство
enter3
Класс заявки: ТранспСредство
split
Классы заявок:
Оригинал, Копия ТранспСредство,
ТранспСредство
Количество копий entity.колГрузоМест-1
Новая заявка (копия) new ТранспСредство()
Действие при выходе копии entity.типТрансп=
original.типТрансп;
entity.колГрузоМест=
original.колГрузоМест;
entity.tPolet=
original.tPolet;
entity.разные =original.разные;
split1
Классы заявок:
Оригинал, Копия ТранспСредство,
ТранспСредство
Количество копий entity.колГрузоМест-1
Новая заявка (копия) new ТранспСредство()
Действие при выходе копии entity.типТрансп=
original.типТрансп;
entity.колГрузоМест=
original.колГрузоМест;
entity.врПолёта=
original.врПолёта;
entity.разные =original.разные;
Имя: очПогр1А
Класс заявки: ТранспСредство
Максимальная вместимость Установить флажок
Действие при выходе entity.разные=
срВрПогрКонтСам1А;
Включить сбор статистики Установить флажок
queue1
Имя: очПогр1Б
Класс заявки: ТранспСредство
Максимальная вместимость Установить флажок
Действие при выходе entity.разные=
срВрПогрКонтСам1Б;
Включить сбор статистики Установить флажок
delay
Имя: погрузка1А
Класс заявки: ТранспСредство
Задержка задаётся Явно
Время задержки exponential
(1/entity.разные)
Вместимость погрКонтСам1А
Действие при выходе погрКонтА1++;
Включить сбор статистики Установить флажок
delay1
Имя: погрузка1Б
Класс заявки: ТранспСредство
Задержка задаётся Явно
Время задержки exponential
(1/entity.разные)
Вместимость погрКонтСам1Б
Действие при выходе погрКонтБ1++;
Включить сбор статистики Установить флажок
selectOutput1
Класс заявки: ТранспСредство
Выход true выбирается При выполнении условия
Условие entity.колГрузоМест
==погрКонтА1
Действие при выходе (true) entity.врПолёта=
normal(отклВрПолётаА12,
срВрПолётаА12);
погрКонтА1=0;
selectOutput2
Класс заявки: ТранспСредство
Выход true выбирается При выполнении условия
Условие entity.колГрузоМест
==погрКонтБ1
Действие при выходе (true) entity.врПолёта=
normal(отклВрПолётаБ12,
срВрПолётаБ12);
погрКонтБ1=0;
exit
Имя: наВзлёт12
Класс заявки: ТранспСредство
Действие при выходе if (entity.типТрансп==1) enter4.take(entity);
else enter5.take(entity);
sink
Класс заявки: ТранспСредство

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

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

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

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

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

Из этого объекта заявка-самолёт типа А с полным грузом поступит в сегмент имитации полёта из аэропорта 1 в аэропорт 2.

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

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

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

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