Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Литература / Работы 8_9

.pdf
Скачиваний:
80
Добавлен:
12.02.2018
Размер:
1.6 Mб
Скачать

 

Продолжение табл. 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

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

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

Рис. 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