![](/user_photo/_userpic.png)
Литература / Работы 8_9
.pdf
|
Продолжение табл. 9.9 |
Свойство |
Значения |
queue1 |
|
Имя: |
очРазгр1Б |
Тип заявки: |
ТранспСредство |
Максимальная вместимость |
Установить флажок |
Действия При выходе |
entity.разные= |
|
срВрВыгрКонтСам1Б |
Включить сбор статистики |
Установить флажок |
delay |
|
Имя: |
разгрузка1А |
Тип заявки: |
ТранспСредство |
Задержка задаётся |
Определённое время |
Время задержки |
exponential |
|
(1/entity.разные) |
Вместимость |
выгрКонтСам1А |
Действия При подходе к выходу |
выгрКонтА1++; |
Включить сбор статистики |
Установить флажок |
delay1 |
|
Имя: |
разгрузка1Б |
Тип заявки: |
ТранспСредство |
Задержка задаётся |
Определённое время |
Время задержки |
exponential |
|
(1/entity.разные) |
Вместимость |
выгрКонтСам1Б |
Действия При подходе к выходу |
выгрКонтБ1++; |
Включить сбор статистики |
Установить флажок |
selectOutput3 |
|
Тип заявки: |
ТранспСредство |
Выход true выбирается |
При выполнении условия |
Условие |
entity.колГрузоМест== |
|
выгрКонтА1 |
Действия |
выгрКонтА1=0; |
При выходе (true): |
достКА21+= |
|
entity.колГрузоМест; |
|
hold2.setBlocked(false); |
selectOutput4 |
|
Тип заявки: |
ТранспСредство |
Выход true выбирается |
При выполнении условия |
Условие |
entity.колГрузоМест== |
|
выгрКонтБ1 |
Действия |
выгрКонтБ1=0; |
При выходе (true): |
достКБ21+= |
356
|
|
Окончание табл. 9.9 |
|
|
|
|
|
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.
357
![](/html/23035/253/html_zS2UGhF9Zd.ni6O/htmlconvd-dV0QWj53x1.jpg)
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
![](/html/23035/253/html_zS2UGhF9Zd.ni6O/htmlconvd-dV0QWj55x1.jpg)
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
![](/html/23035/253/html_zS2UGhF9Zd.ni6O/htmlconvd-dV0QWj57x1.jpg)
Рис. 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
|
Окончание табл. 9.12 |
|
|
Свойства |
Значения |
|
достКБ12+= |
|
entity.колГрузоМест; |
|
hold5.setBlocked(false); |
|
exit |
Имя: |
наОжПогр2 |
Тип заявки: |
ТранспСредство |
Действия |
достК12+= |
При выходе: |
entity.колГрузоМест; |
|
if (entity.типТрансп==1) |
|
enter14.take(entity); |
|
else enter15.take(entity); |
|
sink4 |
Тип заявки: |
ТранспСредство |
9.1.9.4. Ожидание погрузки в аэропорту 2
Сегмент Ожидание погрузки в аэропорту 2 предназначен для имитации ожидания погрузки самолётов, прибывших из аэропорта 1, после разгрузки в аэропорту 2 .
Создайте сегмент.
1.Из палитры Презентация перетащите элемент Прямо-
угольник.
2.На странице Местоположение и размер панели Свойства
введите в поля X: 340, Y: 830, Ширина: 290, Высота: 190.
3.Перетащите элемент text и в поле Текст: введите Ожида-
ние погрузки в аэропорту 2.
4.Перетащите из Библиотеки моделирования процессов по
два объекта enter, queue, hold и один объект exit. Поместите и соедините их так, как на рис. 9.16.
5. Установите свойства объектов согласно табл. 9.13. Данный сегмент отличается от аналогичного сегмента аэропор-
та 1 тем, что он не предназначен в том числе и для первичного приёма самолётов. Заявки-самолёты поступают на имитируемые объектами queue стоянки стоянкаПогр2А и стоянкаПогр2Б
соответственно только после разгрузки.
Элементы hold6 и hold7 также изначально заблокированы, поэтому заявки-самолёты дальше стоянок не проходят. Элементы hold6 и hold7 также управляются сегментом Поступление и учёт контейнеров в аэропорту 2.
365