Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / Compyuternoe_modelirovanie_v_AnyLogic_7_Boev_VD.pdf
Скачиваний:
225
Добавлен:
12.02.2018
Размер:
8.72 Mб
Скачать

Заявка-самолёт поступает на объект наПогрузку1 (объект exit) и далее на сегмент Погрузка контейнеров в аэропорту 1.

Если ожидающих погрузку самолётов типа А нет, а количество контейнеров достаточно для полной загрузки самолёта типа Б и он имеется в наличии, то аналогично формируется команда на разблокировывание элемента hold1. Заявка-самолёт также поступает на объект наПогрузку1 (объект exit) и далее на сегмент Погруз-

ка контейнеров в аэропорту 1.

Элементы enter и enter1 увеличивают число входов объектов queue и queue1 соответственно. Через них поступают в последующем заявки-самолёты, прибывшие из аэропорта 2, разгруженные и теперь отправленные на стоянки ожидания погрузки в аэропорту 1.

9.1.8.2. Поступление и учёт контейнеров в аэропорту 1

Сегмент Поступление и учёт контейнеров в аэропорту 1

предназначен для имитации приёма поступающих от источников грузов (контейнеров), учёта их, определения необходимого количества контейнеров для загрузки соответствующего самолёта и формирования команды для отправки этого самолёта на погрузку контейнеров.

Создайте этот сегмент.

1.Из палитры Презентация перетащите элемент Прямо-

угольник.

2.На странице Местоположение и размер панели Свойства

введите в поля X: 30, Y: 270, Ширина: 220, Высота: 200.

3.Перетащите элемент text и в поле Текст: введите По-

ступление и учёт контейнеров в аэропорту 1.

4.Перетащите из Библиотеки моделирования процессов по

одному объекту source, selectOutput5 (имя selectOutput) и sink.

Поместите и соедините их так, как на рис. 9.8. Установите свойства объектов согласно табл. 9.5.

Объект source с именем истГрузов1 генерирует заявкупартию класса ГрузАэропорт1 поступивших контейнеров, число которых в партии распределено по равномерному закону. Заяв- ка-партия поступает на объект selectOutput.

В условии 1 проверяется наличие числа контейнеров, достаточного для полной загрузки самолёта типа А. Если число контейнеров недостаточно, заявка-партия уничтожается. Так продолжается до тех пор, пока не выполнится условие 1.

344

Рис. 9.8. Сегмент Поступление и учёт контейнеров в аэропорту 1

 

 

 

Таблица 9.5

 

 

 

 

Свойство

 

 

Значения

 

 

source

Имя:

 

 

истГрузов1

Тип заявки:

 

 

ГрузАэропорт1

Прибывают согласно

 

 

Времени между прибытиями

Время между прибытиями

 

 

exponential(1/срВрПостКонт1)

Количество заявок, прибы-

 

1

вающих за один раз

 

 

Новая заявка

 

 

ГрузАэропорт1

Действия При выходе

 

 

a=(uniform_

 

 

 

discr(минКонтПост1,

 

 

 

максКонтПост1));

 

 

 

всегоПостК1+=a;

 

 

 

текНалКонт1+=a;

 

selectOutput

Тип заявки:

 

 

ГрузАэропорт1

Использовать:

 

 

Условия

Условие 1

 

 

текНалК1<грузПодСамА

Условие 2

 

 

стоянкаПогр1А.size()>0&&

 

 

 

погрузка1А.size()==0

Действия При выходе 2

 

 

текНалК1-=грузПодСамА;

 

 

 

hold.setBlocked(false);

Условие 3

 

 

текНалК1<грузПодСамБ

345

 

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