Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Модель функционирования системы воздушных перевозок
Погрузка контейнеров в аэропорту 2
Сегмент Погрузка контейнеров в аэропорту 2 предназначен для имитации погрузки в самолёты и отправки загруженных самолётов в полёт в аэропорт назначения.
Создайте сегмент Погрузка контейнеров в аэропорту 2.
- Из палитры Презентация перетащите элемент Прямоугольник.
- На странице Местоположение и размер панели Свойства введите в поля X: 350, Y: 50, Ширина: 460, Высота: 200.
- Перетащите элемент text и в поле Текст: введите Погрузка контейнеров в аэропорту 1.
- Перетащите по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на Рис. 9.17.
- Установите свойства объектов согласно Табл. 9.14.
Свойство | Значения |
---|---|
enter16 | |
Тип заявки: | ТранспСредство |
enter17 | |
Тип заявки: | ТранспСредство |
split6 | |
Типы заявок: | |
Оригинал, Копия | ТранспСредство, ТранспСредство |
Количество копий | entity.колГрузоМест-1 |
Новая заявка (копия) | ТранспСредство |
Действия При выходе копии | entity.типТрансп=original.типТрансп; |
entity.колГрузоМест=original.колГрузоМест; | |
entity.tPolet=original.tPolet; | |
entity.разные= original.разные; | |
split7 | |
Типы заявок: | |
Оригинал, Копия | ТранспСредство, ТранспСредство |
Количество копий | entity.колГрузоМест-1 |
Новая заявка (копия) | ТранспСредство |
Действия При выходе копии | entity.типТрансп=original.типТрансп; |
entity.колГрузоМест=original.колГрузоМест; | |
entity.врПолёта=original.врПолёта; | |
entity.разные= original.разные; | |
queue6 | |
Имя: | очПогр2А |
Тип заявки: | ТранспСредство |
Максимальная вместимость | Установить флажок |
Действия При выходе | entity.разные=срВрПогрКонтСам2А; |
Включить сбор статистики | Установить флажок |
queue7 | |
Имя: | очПогр2Б |
Тип заявки: | ТранспСредство |
Максимальная вместимость | Установить флажок |
Действия При выходе | entity.разные=срВрПогрКонтСам2Б; |
Включить сбор статистики | Установить флажок |
delay | |
Имя: | Погрузка2А |
Тип заявки: | ТранспСредство |
Задержка задаётся | Определённое время |
Время задержки | exponential(1/entity.разные) |
Вместимость | погрКонтСам2А |
Действия При подходе к выходу | погрКонтА2++; |
Включить сбор статистики | Установить флажок |
delay1 | |
Имя: | Погрузка2Б |
Тип заявки: | ТранспСредство |
Задержка задаётся | Определённое время |
Время задержки | exponential(1/entity.разные) |
Вместимость | погрКонтСам2Б |
Действия При подходе к выходу | погрКонтБ2++; |
Включить сбор статистики | Установить флажок |
selectOutput8 | |
Тип заявки: | ТранспСредство |
Выход true выбирается | При выполнении условия |
Условие | entity.колГрузоМест==погрКонтА2 |
Действия При выходе (true) | entity.врПолёта=normal(отклВрПолётаА21,срВрПолётаА21); |
погрКонтА2=0; | |
selectOutput9 | |
Тип заявки: | ТранспСредство |
Выход true выбирается | При выполнении условия |
Условие | entity.колГрузоМест==погрКонтБ2 |
Действия При выходе (true) | entity.врПолёта=normal(отклВрПолётаБ21,срВрПолётаБ21); |
погрКонтБ2=0; | |
exit | |
Имя: | наВзлёт21 |
Тип заявки: | ТранспСредство |
Действия При выходе | if (entity.типТрансп==1) enter18.take(entity); |
else enter19.take(entity); | |
sink | |
Тип заявки: | ТранспСредство |
Полёт из аэропорта 2 в аэропорт 1
Сегмент Полёт из аэропорта 2 в аэропорт 1 предназначен для имитации полёта самолётов с грузом из аэропорта 2 в аэропорт 1.
- Из палитры Презентация перетащите элемент Прямоугольник.
- На странице Местоположение и размер панели Свойства введите в поля X: 850, Y: 1040, Ширина: 250, Высота: 220.
- Перетащите элемент text и в поле Текст: введите Полёт из аэропорта 2 в аэропорт 1.
- Перетащите из Библиотеки моделирования процессов по два объекта enter, delay и один объект exit. Поместите и соедините их так, как на Рис. 9.18.
- Установите свойства объектов согласно Табл. 9.15.
Свойство | Значения |
---|---|
enter18 | |
Тип заявки: | ТранспСредство |
enter19 | |
Тип заявки: | ТранспСредство |
delay | |
Имя: | полётА21 |
Тип заявки: | ТранспСредство |
Задержка задаётся | Определённое время |
Время задержки | entity.врПолёта |
Вместимость | колСамТипА |
Включить сбор статистики | Установить флажок |
delay1 | |
Имя: | ПолётБ21 |
Тип заявки: | ТранспСредство |
Задержка задаётся | Определённое время |
Время задержки | entity.врПолёта |
Вместимость | колСамТипБ |
Включить сбор статистики | Установить флажок |
exit | |
Имя: | наОжРазгр1 |
Действия При выходе | if (entity.типТрансп==1) enter6.take(entity); |
else enter7.take(entity); |
Вывод результатов моделирования с использованием способа Событие
Для вывода результатов моделирования воспользуйтесь событием, происходящим по истечении таймаута.
- Перетащите элемент Событие из палитры Модель на область просмотра Результаты как на рис. 9.3. Измените его имя на ОбрабРезультМодел. Нажмите Enter.
- Установите флажок Отображать имя.
- С помощью выпадающего списка Tип события: выберите По таймауту.
- Установите Режим: Срабатывает один раз.
- Время срабатывания (абсолютное) 720000.
- В поле Действие введите Java код, который будет выполняться при появлении этого события.
коэфДост21=достК21/всегоПостК2; коэфДост12=достК12/всегоПостК1; коэфПогр1А=погрузка1А.statsUtilization.mean(); коэфПогр1Б=погрузка1Б.statsUtilization.mean(); коэфПогр2А=погрузка2А.statsUtilization.mean(); коэфПогр2Б=погрузка2Б.statsUtilization.mean(); коэфРазгр1А=разгрузка1А.statsUtilization.mean(); коэфРазгр1Б=разгрузка1Б.statsUtilization.mean(); коэфРазгр2А=разгрузка2А.statsUtilization.mean(); коэфРазгр2Б=разгрузка2Б.statsUtilization.mean(); коэфПолётА12=полётА12.statsUtilization.mean(); коэфПолётБ12=полётБ12.statsUtilization.mean(); коэфИспСам1А=коэфПогр1А+коэфРазгр1А+коэфПолётА12; коэфИспСам1Б=коэфПогр1Б+коэфРазгр1Б+коэфПолётБ12; коэфПолётА21=полётА21.statsUtilization.mean(); коэфПолётБ21=полётБ21.statsUtilization.mean(); коэфИспСам2А=коэфПогр2А+коэфРазгр2А+коэфПолётА21; коэфИспСам2Б=коэфПогр2Б+коэфРазгр2Б+коэфПолётБ21; коэфИспСамА=(коэфИспСам1А+коэфИспСам2А)/2; коэфИспСамБ=(коэфИспСам1Б+коэфИспСам2Б)/2; коэфДост=(достК12+достК21)/(всегоПостК1+всегоПостК2); коэфИспСам=(коэфИспСамА+коэфИспСамБ)/2;
Запуск и отладка модели
Прежде чем запустить модель:
- В окне Проекты выделите ВоздушныеПеревозки.
- На странице Основные в поле Единицы модельного времени: установите часы.
- В окне Проекты выделите Simulation: Main.
- На странице Случайность установите Фиксированное начальное число (воспроизводимые "прогоны").
- В поле Начальное число: введите 15657.
- Перейдите на страницу Модельное время. В поле Остановить: выберите В заданное время.
- В поле Конечное время: введите 720000. Время моделирования увеличено в 1000 раз по числу прогонов модели в GPSS World. Таким образом, моделируется функционирование системы воздушных перевозок в течение 720 часов (30-ти суток).
- Запустите модель. Если появятся ошибки, исправьте их. При правильном построении модели вы получите результаты, показанные на Рис. 9.19.
Во время выполнения модели не все результаты моделирования видны, так как они рассчитываются и выводятся после окончания заданного времени моделирования.
Видно, что коэффициент доставки системы воздушных перевозок при принятых её характеристиках и потоках грузов составляет коэфДост = 0,31 при среднем коэффициенте использования самолётов обоих типов коэфИспСам = 0,638. Коэффициент использования самолёта типа Б (0,481) ниже коэфИспСамА = 0,795.
Машинное время выполнения модели 467,2 сек.