Опубликован: 15.02.2013 | Уровень: для всех | Доступ: платный
Лекция 10:

Модель функционирования системы воздушных перевозок

Вывод результатов моделирования

Организуйте вывод результатов моделирования. Их также, как и исходные данные, следует разбить на две группы по признаку принадлежности к соответствующему аэропорту, выделить итоговые показатели. На этой области просмотра можно поместить и вспомогательные переменные, предназначенные для накопления необходимых для расчёта показателей статистических данных.

  1. Перетащите элемент Скруглённый прямоугольник на элемент Область просмотра с именем Результаты.
  2. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 25, Y: 2610, Ширина: 510, Высота: 450.
  3. Перетащите элемент text и в поле Текст: введите Результаты моделирования.
  4. Из библиотеки Основная перетащите элементы Простая переменная и поместите их так, как на рис. 9.3. Для всех переменных сохраните предлагаемый тип double, значение по умолчанию - 0.
    Элементы Простая переменная для вывода результатов моделирования

    увеличить изображение
    Рис. 9.3. Элементы Простая переменная для вывода результатов моделирования
  5. Перетащите ещё элементы text и введите пояснения к результатам моделирования как на рис. 9.3.
  6. Перетащите элемент text и в поле Текст: введите Вспомогательные переменные.
  7. Перетащите элементы Простая переменная и поместите их согласно рис. 9.3.
  8. Для всех переменных оставьте предлагаемый тип double, значение по умолчанию - 0.
  9. С целью сокращения машинного времени для вывода результатов моделирования используйте способ Событие (event). Код, который необходим для обработки статистических данных при наступлении события, вы напишите после построения событийной части модели.

Приступайте к построению событийной части модели, которая в соответствии со структурой системы воздушных перевозок включает имитацию функционирования аэропорта 1 и аэропорта 2.

Имитация функционирования аэропорта 1

Прибытие самолётов в аэропорт 1. Ожидание погрузки

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

  1. Из палитры Презентация перетащите элемент Прямоугольник.
  2. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 30, Y: 50, Ширина: 310, Высота: 200.
  3. Перетащите элемент text и в поле Текст: введите Прибытие самолётов в аэропорт 1. Ожидание погрузки.
  4. Перетащите из Основной библиотеки по два объекта source, enter, queue, hold и один объект exit. Поместите и соедините их так, как на рис. 9.4.

При построении модели вам придётся воспользоваться Java-кодом, в котором потребуются дополнительные поля заявок. Для этого вы должны создать нестандартный класс заявки с дополнительными полями для записи и хранения параметров, о которых упоминалось ранее (см. п. 9.1.4).

Создайте класс заявок ТранспСредство.

  1. Выделите объект source.
  2. В панели Проект щелкните правой кнопкой мыши элемент модели верхнего уровня дерева и выберите Создать/Java класс.
  3. Появится диалоговое окно Новый Java класс. В поле Имя: введите имя нового класса: ТранспСредство.
  4. В поле Базовый класс: выберите из выпадающего списка Entity в качестве базового класса. Щелкните кнопку Далее.
  5. Появится вторая страница Мастера создания Java класса. Добавьте поля Java класса, показанные на рис. 9.5.
  6. Оставьте выбранными флажки Создать конструктор и Создать метод toString ().
  7. Щелкните Готово. Закройте редактор кода.

Аналогичным образом создайте классы заявок ГрузАэропорт1 и ГрузАэропорт2 с дополнительными полями колГрузоМест1 и колГрузоМест2 типа int соответственно. Эти классы заявок, как вы помните, будут использоваться при имитации поступления партий грузов в аэропорты 1 и 2 соответственно.

Сегмент Прибытие самолётов в аэропорт 1

увеличить изображение
Рис. 9.4. Сегмент Прибытие самолётов в аэропорт 1
Поля нового Java класса ТранспСредство

увеличить изображение
Рис. 9.5. Поля нового Java класса ТранспСредство

Продолжите построение сегмента имитации Прибытие самолётов в аэропорт 1 и ожидания погрузки.

Поочередно выделите объекты этого сегмента и установите их свойства согласно Табл. 9.4.

Таблица 9.4.
Свойство Значения
source
Имя: самолёт1
Класс заявки: ТранспСредство
Заявки прибывают согласно Времени между прибытиями
Время между прибытиями 0
Количество заявок, прибывающих за один раз колСамТипА
Ограниченное количество прибытий Установить флажок
Максимальное количество прибытий 1
Новая заявка new ТранспСредство()
Действие при выходе entity.типТрансп=1;
entity.колГрузоМест=
грузПодСамА;
source1
Имя: самолёт2
Класс заявки: ТранспСредство
Заявки прибывают согласно Времени между прибытиями
Время между прибытиями 0
Количество заявок, прибывающих за один раз колСамТипА
Ограниченное количество прибытий Установить флажок
Максимальное количество прибытий 1
Новая заявка new ТранспСредство()
Действие при выходе entity.типТрансп=2;
entity.колГрузоМест=
грузПодСамБ;
queue
Имя: стоянкаПогр1А
Класс заявки: ТранспСредство
Вместимость колСамТипА
Включить сбор статистики Установить флажок
queue1
Имя: стоянкаПогр1Б
Класс заявки: ТранспСредство
Вместимость колСамТипБ
Включить сбор статистики Установить флажок
hold
Класс заявки: ТранспСредство
Изначально заблокирован Установить флажок
hold1
Класс заявки: ТранспСредство
Изначально заблокирован Установить флажок
exit
Имя: наПогрузку1
Класс заявки: if (entity.типТрансп==1) {hold.setBlocked(true);
Действие при выходе enter2.take(entity);}
else {hold1.setBlocked(true);
enter3.take(entity);}
enter
Класс заявки: ТранспСредство
enter1
Класс заявки: ТранспСредство

Остановимся на замысле построения сегмента.

При запуске модели источники самолёт1 и самолёт2 генерируют число заявок, равное количеству самолётов типа А и типа Б соответственно. На этом активность источников прекращается.

Эти заявки-самолёты поступают на имитируемые объектами queue стоянки стоянкаПогр1А и стоянкаПогр1Б соответственно.

Элементы hold и hold1 изначально заблокированы, поэтому заявки-самолёты дальше не проходят.

Элементы hold и hold1 управляются сегментом Поступление и учёт контейнеров в аэропорту 1. Как только в аэропорт 1 поступит количество контейнеров, достаточное для полной загрузки самолёта типа А, и этот самолёт имеется на стоянке, а также нет самолётов типа А на погрузке, формируется команда на разблокировывание элемента hold.

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

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

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

Алексей Гроссман
Алексей Гроссман

Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио.

Елена Блинаева
Елена Блинаева