![](/user_photo/_userpic.png)
Литература / Работы 8_9
.pdf
|
Окончание табл. 9.5 |
|
|
Свойство |
Объекты |
Условие 4 |
стоянкаПогр1Б.size()>0&& |
|
погрузка1Б.size()==0 |
Действия При выходе 4 |
текНалК1-=грузПодСамБ; |
|
hold1.setBlocked(false); |
|
sink |
Тип заявки: |
ГрузАэропорт1 |
После выполнения условия 1 проверяется условие 2: наличие самолётов типа А на стоянке ожидания погрузки и незанятость пунктов погрузки.
При выполнении условия 2 формируется команда на разблокировывание элемента hold (см. п. 9.1.8.2) и самолёт типа А отправляется на погрузку.
Если условие 2 не выполняется, например, при отсутствии свободного самолёта типа А, проверяется условие 3.
Если условие 3 не выполняется, то есть недостаточно контейнеров для полной загрузки самолёта типа Б, заявка-партия уничтожается.
Если условие 3 выполняется (поступило число контейнеров, достаточное для полной загрузки самолёта типа Б), проверяется условие 4: наличие самолётов типа Б на стоянке ожидания погрузки и незанятость пунктов погрузки.
Если условие 4 не выполняется, заявка-партия уничтожается. При выполнении условия 4 формируется команда на разблокировывание элемента hold1 (см. п. 9.1.8.2) и самолёт типа Б отправ-
ляется на погрузку.
Описанная последовательность проверок производится каждый раз при появлении в модели очередной заявки-партии. Все заявки типа ГрузАэропорт1 выводятся из модели.
9.1.8.3. Погрузка контейнеров в аэропорту 1
Сегмент Погрузка контейнеров в аэропорту 1 предназначен для имитации погрузки в самолёты и отправки загруженных самолётов в полёт в аэропорт назначения.
Создайте сегмент Погрузка контейнеров в аэропорту 1.
1.Из палитры Презентация перетащите элемент Прямо-
угольник.
2.На странице Местоположение и размер панели Свойства
введите в поля X: 350, Y: 50, Ширина: 460, Высота: 200.
346
![](/html/23035/253/html_zS2UGhF9Zd.ni6O/htmlconvd-dV0QWj42x1.jpg)
Рис. 9.9. Сегмент Погрузка контейнеров в аэропорту 1
3.Перетащите элемент text и в поле Текст: введите По-
грузка контейнеров в аэропорту 1.
4.Перетащите из Библиотеки моделирования процессов по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на рис. 9.9.
5.Установите свойства объектов согласно табл. 9.6.
Таблица 9.6
Свойство |
|
Значения |
|
enter2 |
|
Тип заявки: |
|
ТранспСредство |
|
enter3 |
|
Тип заявки: |
|
ТранспСредство |
|
split |
|
Типы заявок: |
|
ТранспСредство, |
Оригинал, Копия |
|
|
|
|
ТранспСредство |
Количество копий |
|
entity.колГрузоМест-1 |
Новая заявка (копия) |
|
ТранспСредство |
Действия |
|
entity.типТрансп= |
При выходе копии: |
|
original.типТрансп; |
|
|
entity.колГрузоМест= |
|
|
original.колГрузоМест; |
|
|
entity.tPolet= |
|
|
original.tPolet; |
|
|
entity.разные |
|
|
=original.разные; |
347
|
|
Продолжение табл. 9.6 |
|
|
|
Свойство |
Значения |
|
split1 |
||
Типы заявок: |
|
ТранспСредство, |
Оригинал, Копия |
|
|
|
|
ТранспСредство |
Количество копий |
|
entity.колГрузоМест-1 |
Новая заявка (копия) |
|
ТранспСредство |
Действия |
|
entity.типТрансп= |
При выходе копии: |
|
|
|
|
original.типТрансп; |
|
|
entity.колГрузоМест= |
|
|
original.колГрузоМест; |
|
|
entity.врПолёта= |
|
|
original.врПолёта; |
|
|
entity.разные |
|
|
=original.разные; |
Имя: |
|
очПогр1А |
Тип заявки: |
|
ТранспСредство |
Максимальная вместимость |
|
Установить флажок |
Действия При выходе |
|
entity.разные= |
|
|
срВрПогрКонтСам1А; |
Включить сбор статистики |
|
Установить флажок |
queue1 |
||
Имя: |
|
очПогр1Б |
Тип заявки: |
|
ТранспСредство |
Максимальная вместимость |
|
Установить флажок |
Действия При выходе |
|
entity.разные= |
|
|
срВрПогрКонтСам1Б; |
Включить сбор статистики |
|
Установить флажок |
delay |
||
Имя: |
|
погрузка1А |
Тип заявки: |
|
ТранспСредство |
Задержка задаётся |
|
Определённое время |
Время задержки |
|
exponential |
|
|
(1/entity.разные) |
Вместимость |
|
погрКонтСам1А |
Действия При подходе к выходу |
|
погрКонтА1++; |
Включить сбор статистики |
|
Установить флажок |
delay1 |
||
Имя: |
|
погрузка1Б |
Тип заявки: |
|
ТранспСредство |
Задержка задаётся |
|
Определённое время |
348
|
|
Окончание табл. 9.6 |
|
|
|
Время задержки |
|
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 заявка размножается на число заявок, равное количеству контейнеров, которые должны быть погружены в самолёт. Заявкаоригинал из модели не выводится.
Таким образом, далее каждая заявка интерпретируется как за- явка-контейнер. Тем не менее, каждой копии присваиваются значения полей оригинала, так как после погрузки все заявкиконтейнеры, кроме последней, будут выведены из модели.
349
Заявки-контейнеры занимают очередь к объекту погрузка1А, имитирующему непосредственно погрузку контейнеров в самолёт типа А в аэропорту 1. При покидании очереди выполняется код entity.разные=срВрПогрКонтСам1А, записывающий в поле с именем разные заявки-контейнера среднее время погрузки одного контейнера.
После объекта погрузка1А, на выходе которого ведётся счёт погруженных контейнеров (погрКонтА1++), заявки-контейнеры входят в объект selectOutput1.
Этот объект проверяет условие (entity.колГрузоМест ==погрКонтБ1): полная ли загрузка самолёта? При выполнении этого условия, а оно будет выполнено тогда, когда будет загружен последний контейнер, последняя заявка теперь уже в качестве за- явки-самолёта поступит в объект наВзлёт (exit).
Из этого объекта заявка-самолёт типа А с полным грузом поступит в сегмент имитации полёта из аэропорта 1 в аэропорт 2.
Аналогичным образом имитируется погрузка в самолёт типа Б. Имитация начинается с поступления заявки-самолёта через объект enter3 в объект split1.
9.1.8.4. Полёт из аэропорта 1 в аэропорт 2
Сегмент Полёт из аэропорта 1 в аэропорт 2 предназначен для имитации полёта самолётов с грузом из аэропорта 1 в аэропорт 2.
Создайте сегмент.
1.Из палитры Презентация перетащите элемент Прямо-
угольник.
2.На странице Местоположение и размер панели Свойства
введите в поля X: 830, Y: 50, Ширина: 240, Высота: 200.
3.Перетащите элемент text и в поле Текст: введите Полёт из аэропорта 1 в аэропорт 2.
4.Перетащите из Библиотеки моделирования процессов по
два объекта enter, delay и один объект exit. Поместите и соедините их так, как на рис. 9.10.
5. Установите свойства объектов согласно табл. 9.7. Предположим, что поступила заявка-самолёт типа А в объект
enter4 и далее в объект с именем полётА12 (delay). Идентификатор полётА12 означает, что объект имитирует непосредственно полёт из аэропорта 1 в аэропорт 2. В аэропорту 2 заявка-самолёт входит в сегмент ожидания разгрузки.
350
![](/html/23035/253/html_zS2UGhF9Zd.ni6O/htmlconvd-dV0QWj46x1.jpg)
Рис. 9.10. Сегмент Полёт из аэропорта 1 в аэропорт 2
Таблица 9.7
Свойство |
Значения |
|
enter4 |
Тип заявки: |
ТранспСредство |
|
enter5 |
Тип заявки: |
ТранспСредство |
|
delay |
Имя: |
полётА12 |
Тип заявки: |
ТранспСредство |
Задержка задаётся |
Определённое время |
Время задержки |
entity.врПолёта |
Вместимость |
колСамТипА |
Включить сбор статистики |
Установить флажок |
|
delay1 |
Имя: |
ПолётБ12 |
Тип заявки: |
ТранспСредство |
Задержка задаётся |
Определённое время |
Время задержки |
entity.врПолёта |
Вместимость |
колСамТипБ |
Включить сбор статистики |
Установить флажок |
|
exit |
Действия |
if (entity.типТрансп==1) |
При выходе: |
enter10.take(entity); |
|
else enter11.take(entity); |
351
![](/html/23035/253/html_zS2UGhF9Zd.ni6O/htmlconvd-dV0QWj47x1.jpg)
9.1.8.5. Ожидание разгрузки в аэропорту 1
Сегмент Ожидание разгрузки в аэропорту 1 предназначен для имитации ожидания разгрузки самолётов, прибывающих с грузом из аэропорта 2.
Создайте сегмент.
1.Из палитры Презентация перетащите элемент Прямо-
угольник.
2.На странице Местоположение и размер панели Свойства
введите в поля X: 270, Y: 270, Ширина: 310, Высота: 200.
3.Перетащите элемент text и в поле Текст: введите Ожида-
ние разгрузки в аэропорту 1.
4.Перетащите из Библиотеки моделирования процессов по два объекта enter, queue, hold и один объект exit. Поместите и соедините их так, как на рис. 9.11.
5.Установите свойства объектов согласно табл. 9.8. Предположим, что поступила заявка-самолёт из аэропорта 2 в
объект enter6. Если средства разгрузки свободны, то есть выполняется условие (разгрузка1А.size()==0), разблокировывается объект hold2 и заявка-самолёт входит в объект наРазгрузку1 и далее в сегмент имитации разгрузки.
Рис. 9.11. Сегмент Ожидание разгрузки в аэропорту 1
352
|
Таблица 9.8 |
|
|
Свойство |
Значения |
|
|
|
enter6 |
Тип заявки: |
ТранспСредство |
Действие при входе |
if (разгрузка1А.size()==0) |
|
hold2.setBlocked(false); |
|
enter7 |
Тип заявки: |
ТранспСредство |
Действие при входе |
if (разгрузка1Б.size()==0) |
|
hold3.setBlocked(false); |
|
queue |
Имя: |
стоянкаРазгр1А |
Тип заявки: |
ТранспСредство |
Вместимость |
колСамТипА |
Включить сбор статистики |
Установить флажок |
|
queue1 |
Имя: |
стоянкаРазгр1Б |
Тип заявки: |
ТранспСредство |
Вместимость |
колСамТипБ |
Включить сбор статистики |
Установить флажок |
|
hold2 |
Тип заявки: |
ТранспСредство |
Изначально заблокирован |
Установить флажок |
|
hold3 |
Тип заявки: |
ТранспСредство |
Изначально заблокирован |
Установить флажок |
|
exit |
Имя: |
наРазгрузку1 |
Действия |
if (entity.типТрансп==1) |
При выходе: |
{hold2.setBlocked(true); |
|
enter8.take(entity);} |
|
else |
|
{hold3.setBlocked(true); |
|
enter9.take(entity);} |
При выходе из объекта наРазгрузку1 блокируется объект hold2 кодом hold2.setBlocked(true), так как теперь средства разгрузки самолётов типа А аэропорта 1 заняты.
Если поступает заявка-самолёт типа Б, то она входит в сегмент через объект enter7. Имитация ожидания разгрузки заявкойсамолётом типа Б производится аналогично.
353
![](/html/23035/253/html_zS2UGhF9Zd.ni6O/htmlconvd-dV0QWj49x1.jpg)
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