Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель функционирования системы воздушных перевозок
Разгрузка самолётов в аэропорту 1
Сегмент Разгрузка самолётов в аэропорту 1 предназначен для имитации разгрузки самолётов, прибывающих с грузом из аэропорта 2.
Создайте сегмент.
- Из палитры Презентация перетащите элемент Прямоугольник.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 600, Y: 270, Ширина: 470, Высота: 200.
- Перетащите элемент text и в поле Текст: введите Разгрузка самолётов в аэропорту 1.
- Перетащите из Основной библиотеки по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на рис. 9.10.
- Установите свойства объектов согласно табл. 9.9.
Предположим, что из сегмента ожидания разгрузки через объект enter8 поступила заявка-самолёт типа А в объект split2. Объектом split2 заявка размножается на число заявок, равное количеству контейнеров, которые должны быть выгружены из самолёта. Заявка-оригинал из модели не выводится.
Таким образом, далее каждая заявка интерпретируется как заявка-контейнер. Тем не менее, каждой копии присваиваются значения полей оригинала, так как после выгрузки все заявки-контейнеры, кроме последней, будут выведены из модели. Однако неизвестно какая из заявок будет последней - оригинал или копия. Поэтому и присваиваются копиям значения полей оригинала.
Свойство | Значения |
---|---|
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.