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

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

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

 

Окончание табл. 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

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

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

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

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