|
Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Модель функционирования системы воздушных перевозок
Имитация функционирования аэропорта 2
Сегменты, имитирующие функционирование аэропорта 2, построены в основном также, как и сегменты аэропорта 1, поэтому будут отмечены лишь некоторые особенности.
Поступление и учёт контейнеров в аэропорту 2
Сегмент Поступление и учёт контейнеров в аэропорту 2 предназначен для имитации приёма поступающих от источников грузов (контейнеров), учёта их, определения необходимого количества контейнеров для загрузки соответствующего самолёта и формирования команды для отправки этого самолёта на погрузку контейнеров (при наличии самолёта).
- Из палитры Презентация перетащите элемент Прямоугольник.
- На странице Местоположение и размер панели Свойства введите в поля X: 30, Y: 830, Ширина: 290, Высота: 190.
- Перетащите элемент text и в поле Текст: введите Поступление и учёт контейнеров в аэропорту 2.
- Перетащите из Основной библиотеки по одному объекту source, selectOutput5 (имя selectOutput5) и sink. Поместите и соедините их так, как на Рис. 9.13.
Установите свойства объектов согласно Табл. 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 | |
| Действия При выходе 4 | текНалК2-=грузПодСамБ; |
| hold7.setBlocked(false); | |
| sink | |
| Тип заявки: | ГрузАэропорт2 |
Объект source с именем истГрузов2 генерирует заявку-партию класса ГрузАэропорт2 поступивших контейнеров. Заявка-партия поступает на объект selectOutput5.
Описанная в п. 9.1.8.2 последовательность проверок условий производится и в данном сегменте каждый раз при появлении в модели очередной заявки-партии. Все заявки класса ГрузАэропорт2 также выводятся из модели.
В данном сегменте, как и в п. 9.1.8.2, при выполнении подобных условий, только относительно аэропорта 2, формируются команды на отправку самолётов на погрузку.
Ожидание разгрузки в аэропорту 2
Сегмент Ожидание разгрузки в аэропорту 2 предназначен для имитации ожидания разгрузки самолётов, прибывших из аэропорта 1.
Создайте сегмент.
- Из палитры Презентация перетащите элемент Прямоугольник.
- На странице Местоположение и размер панели Свойства введите в поля X: 30, Y: 1040, Ширина: 310, Высота: 220.
- Перетащите элемент text и в поле Текст: введите Ожидание разгрузки в аэропорту 2.
- Перетащите из Библиотеки моделирования процессов по два объекта enter, queue, hold и один объект exit. Поместите и соедините их так, как на Рис. 9.14.
- Установите свойства объектов согласно Табл. 9.11
Предположим, что поступила заявка-самолёт в объект enter11. В нём проверяется условие: средства разгрузки свободны (разгрузка2Б.size()==0) и на стоянке нет ожидающих разгрузку самолётов? Если да, то разблокировывается объект hold5 и заявка-самолёт типа Б входит в объект наРазгрузку2 и далее в сегмент имитации разгрузки аэропорта 2.
| Свойство | Значения |
|---|---|
| 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);} | |
Разгрузка самолётов в аэропорту 2
Сегмент Разгрузка самолётов в аэропорту 2 предназначен для имитации разгрузки самолётов, прибывающих из аэропорта 1.
Создайте сегмент.
- Из палитры Презентация перетащите элемент Прямоугольник.
- На странице Местоположение и размер панели Свойства введите в поля X: 360, Y: 1040, Ширина: 470, Высота: 220.
- Перетащите элемент text и в поле Текст: введите Разгрузка самолётов в аэропорту 2.
- Перетащите по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на Рис. 9.15.
- Установите свойства объектов согласно Табл. 9.12.
Предположим, что из сегмента ожидания разгрузки (п. 9.1.9.2) через объект enter13 поступила заявка-самолёт типа Б в объект split5. Объектом split5 заявка размножается на число заявок, равное количеству контейнеров, которые должны быть выгружены из самолёта. Заявка-оригинал из модели не выводится. Поэтому количество копий на 1 меньше, чем количество выгружаемых контейнеров (entity.колГрузоМест-1).
Таким образом, также, как и в соответствующем сегменте аэропорта 1, далее каждая заявка интерпретируется как заявка-контейнер. Тем не менее, каждой копии присваиваются значения полей оригинала, так как после выгрузки все заявки-контейнеры, кроме последней, будут выведены из модели. Однако неизвестно какая из заявок будет последней - оригинал или копия. Поэтому также и присваиваются копиям значения полей оригинала.
| Свойство | Значения |
|---|---|
| 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А; |
| Включить сбор статистики | Установить флажок |
| queue1 | |
| Имя: | очРазгр2Б |
| Тип заявки: | ТранспСредство |
| Максимальная вместимость | Установить флажок |
| Действия | entity.разные= |
| При выходе: | срВрВыгрКонтСам2Б; |
| Включить сбор статистики | Установить флажок |
| delay | |
| Имя: | разгрузка2А |
| Тип заявки: | ТранспСредство |
| Задержка задаётся | Определённое время |
| Время задержки | exponential(1/entity.разные) |
| Вместимость | выгрКонтСам2А |
| Действия При подходе к выходу | выгрКонтА2++; |
| Включить сбор статистики | Установить флажок |
| delay1 | |
| Имя: | разгрузка2Б |
| Тип заявки: | ТранспСредство |
| Задержка задаётся | Определённое время |
| Время задержки | exponential(1/entity.разные) |
| Вместимость | выгрКонтСам2Б |
| Действия При подходе к выходу | выгрКонтБ2++; |
| Включить сбор статистики | Установить флажок |
| selectOutput6 | |
| Тип заявки: | ТранспСредство |
| Выход true выбирается | При выполнении условия |
| Условие | entity.колГрузоМест== |
| Действия При выходе (true) | выгрКонтА2 |
| выгрКонтА2=0; | |
| достКА12+=entity.колГрузоМест; | |
| hold4.setBlocked(false); | |
| selectOutput7 | |
| Тип заявки: | ТранспСредство |
| Выход true выбирается | При выполнении условия |
| Условие | entity.колГрузоМест==выгрКонтБ2 |
| Действия При выходе (true) | выгрКонтБ2=0; |
| достКБ12+=entity.колГрузоМест; | |
| hold5.setBlocked(false); | |
| exit | |
| Имя: | наОжПогр2 |
| Тип заявки: | ТранспСредство |
| Действия При выходе: | достК12+=entity.колГрузоМест; |
| if (entity.типТрансп==1) enter14.take(entity); | |
| else enter15.take(entity); | |
| sink4 | |
| Тип заявки: | ТранспСредство |
Ожидание погрузки в аэропорту 2
Сегмент Ожидание погрузки в аэропорту 2 предназначен для имитации ожидания погрузки самолётов, прибывших из аэропорта 1, после разгрузки в аэропорту 2 .
Создайте сегмент.
- Из палитры Презентация перетащите элемент Прямоугольник.
- На странице Местоположение и размер панели Свойства введите в поля X: 340, Y: 830, Ширина: 290, Высота: 190.
- Перетащите элемент text и в поле Текст: введите Ожидание погрузки в аэропорту 2.
- Перетащите из Библиотеки моделирования процессов по два объекта enter, queue, hold и один объект exit. Поместите и соедините их так, как на Рис. 9.16.
- Установите свойства объектов согласно Табл. 9.13.
Данный сегмент отличается от аналогичного сегмента аэропорта 1 тем, что он не предназначен в том числе и для первичного приёма самолётов. Заявки-самолёты поступают на имитируемые объектами queue стоянки стоянкаПогр2А и стоянкаПогр2Б соответственно только после разгрузки.
Элементы hold6 и hold7 также изначально заблокированы, поэтому заявки-самолёты дальше стоянок не проходят. Элементы hold6 и hold7 также управляются сегментом Поступление и учёт контейнеров в аэропорту 2.
| Свойство | Значения |
|---|---|
| enter14 | |
| Тип заявки: | ТранспСредство |
| enter15 | |
| Тип заявки: | ТранспСредство |
| queue | |
| Имя: | стоянкаПогр2А |
| Тип заявки: | ТранспСредство |
| Вместимость | колСамТипА |
| Включить сбор статистики | Установить флажок |
| queue1 | |
| Имя: | стоянкаПогр2Б |
| Тип заявки: | ТранспСредство |
| Вместимость | колСамТипБ |
| Включить сбор статистики | Установить флажок |
| hold6 | |
| Тип заявки: | ТранспСредство |
| Изначально заблокирован | Установить флажок |
| hold7 | |
| Тип заявки: | ТранспСредство |
| Изначально заблокирован | Установить флажок |
| exit | |
| Имя: | наПогрузку2 |
| Действия При выходе: | if (entity.типТрансп==1) {hold6.setBlocked(true); |
| enter16.take(entity);} | |
| else {hold7.setBlocked(true); | |
| enter17.take(entity);} | |




