Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель функционирования системы воздушных перевозок
Вывод результатов моделирования
Организуйте вывод результатов моделирования. Их также, как и исходные данные, следует разбить на две группы по признаку принадлежности к соответствующему аэропорту, выделить итоговые показатели. На этой области просмотра можно поместить и вспомогательные переменные, предназначенные для накопления необходимых для расчёта показателей статистических данных.
- Перетащите элемент Скруглённый прямоугольник на элемент Область просмотра с именем Результаты.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 25, Y: 2610, Ширина: 510, Высота: 450.
- Перетащите элемент text и в поле Текст: введите Результаты моделирования.
- Из библиотеки Основная перетащите элементы Простая переменная и поместите их так, как на рис. 9.3. Для всех переменных сохраните предлагаемый тип double, значение по умолчанию - 0.
- Перетащите ещё элементы text и введите пояснения к результатам моделирования как на рис. 9.3.
- Перетащите элемент text и в поле Текст: введите Вспомогательные переменные.
- Перетащите элементы Простая переменная и поместите их согласно рис. 9.3.
- Для всех переменных оставьте предлагаемый тип double, значение по умолчанию - 0.
- С целью сокращения машинного времени для вывода результатов моделирования используйте способ Событие (event). Код, который необходим для обработки статистических данных при наступлении события, вы напишите после построения событийной части модели.
Приступайте к построению событийной части модели, которая в соответствии со структурой системы воздушных перевозок включает имитацию функционирования аэропорта 1 и аэропорта 2.
Имитация функционирования аэропорта 1
Прибытие самолётов в аэропорт 1. Ожидание погрузки
Сегмент предназначен для имитации первоначального (последующего) прибытия самолётов в аэропорт 1, размещения их на стоянках, ожидания и отправки на погрузку (разгрузку) контейнеров.
- Из палитры Презентация перетащите элемент Прямоугольник.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 30, Y: 50, Ширина: 310, Высота: 200.
- Перетащите элемент text и в поле Текст: введите Прибытие самолётов в аэропорт 1. Ожидание погрузки.
- Перетащите из Основной библиотеки по два объекта source, enter, queue, hold и один объект exit. Поместите и соедините их так, как на рис. 9.4.
При построении модели вам придётся воспользоваться Java-кодом, в котором потребуются дополнительные поля заявок. Для этого вы должны создать нестандартный класс заявки с дополнительными полями для записи и хранения параметров, о которых упоминалось ранее (см. п. 9.1.4).
Создайте класс заявок ТранспСредство.
- Выделите объект source.
- В панели Проект щелкните правой кнопкой мыши элемент модели верхнего уровня дерева и выберите Создать/Java класс.
- Появится диалоговое окно Новый Java класс. В поле Имя: введите имя нового класса: ТранспСредство.
- В поле Базовый класс: выберите из выпадающего списка Entity в качестве базового класса. Щелкните кнопку Далее.
- Появится вторая страница Мастера создания Java класса. Добавьте поля Java класса, показанные на рис. 9.5.
- Оставьте выбранными флажки Создать конструктор и Создать метод toString ().
- Щелкните Готово. Закройте редактор кода.
Аналогичным образом создайте классы заявок ГрузАэропорт1 и ГрузАэропорт2 с дополнительными полями колГрузоМест1 и колГрузоМест2 типа int соответственно. Эти классы заявок, как вы помните, будут использоваться при имитации поступления партий грузов в аэропорты 1 и 2 соответственно.
Продолжите построение сегмента имитации Прибытие самолётов в аэропорт 1 и ожидания погрузки.
Поочередно выделите объекты этого сегмента и установите их свойства согласно Табл. 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.