Опубликован: 07.11.2014 | Доступ: свободный | Студентов: 442 / 37 | Длительность: 15:17:00
ISBN: 978-5-9556-0161-8
Тема: САПР
Лекция 9:

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

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Погрузка контейнеров в аэропорту 2

Сегмент Погрузка контейнеров в аэропорту 2 предназначен для имитации погрузки в самолёты и отправки загруженных самолётов в полёт в аэропорт назначения.

Создайте сегмент Погрузка контейнеров в аэропорту 2.

  1. Из палитры Презентация перетащите элемент Прямоугольник.
  2. На странице Местоположение и размер панели Свойства введите в поля X: 350, Y: 50, Ширина: 460, Высота: 200.
  3. Перетащите элемент text и в поле Текст: введите Погрузка контейнеров в аэропорту 1.
  4. Перетащите по два объекта enter, split, queue, delay, selectOutput и по одному объекту exit и sink. Поместите и соедините их так, как на Рис. 9.17.
  5. Установите свойства объектов согласно Табл. 9.14.
Сегмент Погрузка контейнеров в аэропорту 2

увеличить изображение
Рис. 9.17. Сегмент Погрузка контейнеров в аэропорту 2
Таблица 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.

  1. Из палитры Презентация перетащите элемент Прямоугольник.
  2. На странице Местоположение и размер панели Свойства введите в поля X: 850, Y: 1040, Ширина: 250, Высота: 220.
  3. Перетащите элемент text и в поле Текст: введите Полёт из аэропорта 2 в аэропорт 1.
    Сегмент Полёт из аэропорта 2 в аэропорт 1

    увеличить изображение
    Рис. 9.18. Сегмент Полёт из аэропорта 2 в аэропорт 1
  4. Перетащите из Библиотеки моделирования процессов по два объекта enter, delay и один объект exit. Поместите и соедините их так, как на Рис. 9.18.
  5. Установите свойства объектов согласно Табл. 9.15.
Таблица 9.15.
Свойство Значения
enter18
Тип заявки: ТранспСредство
enter19
Тип заявки: ТранспСредство
delay
Имя: полётА21
Тип заявки: ТранспСредство
Задержка задаётся Определённое время
Время задержки entity.врПолёта
Вместимость колСамТипА
Включить сбор статистики Установить флажок
delay1
Имя: ПолётБ21
Тип заявки: ТранспСредство
Задержка задаётся Определённое время
Время задержки entity.врПолёта
Вместимость колСамТипБ
Включить сбор статистики Установить флажок
exit
Имя: наОжРазгр1
Действия При выходе if (entity.типТрансп==1) enter6.take(entity);
else enter7.take(entity);
Вывод результатов моделирования с использованием способа Событие

Для вывода результатов моделирования воспользуйтесь событием, происходящим по истечении таймаута.

  1. Перетащите элемент Событие из палитры Модель на область просмотра Результаты как на рис. 9.3. Измените его имя на ОбрабРезультМодел. Нажмите Enter.
  2. Установите флажок Отображать имя.
  3. С помощью выпадающего списка Tип события: выберите По таймауту.
  4. Установите Режим: Срабатывает один раз.
  5. Время срабатывания (абсолютное) 720000.
  6. В поле Действие введите 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;

Запуск и отладка модели

Прежде чем запустить модель:

  1. В окне Проекты выделите ВоздушныеПеревозки.
  2. На странице Основные в поле Единицы модельного времени: установите часы.
  3. В окне Проекты выделите Simulation: Main.
  4. На странице Случайность установите Фиксированное начальное число (воспроизводимые "прогоны").
  5. В поле Начальное число: введите 15657.
  6. Перейдите на страницу Модельное время. В поле Остановить: выберите В заданное время.
  7. В поле Конечное время: введите 720000. Время моделирования увеличено в 1000 раз по числу прогонов модели в GPSS World. Таким образом, моделируется функционирование системы воздушных перевозок в течение 720 часов (30-ти суток).
    Результаты моделирования

    увеличить изображение
    Рис. 9.19. Результаты моделирования
  8. Запустите модель. Если появятся ошибки, исправьте их. При правильном построении модели вы получите результаты, показанные на Рис. 9.19.

Во время выполнения модели не все результаты моделирования видны, так как они рассчитываются и выводятся после окончания заданного времени моделирования.

Видно, что коэффициент доставки системы воздушных перевозок при принятых её характеристиках и потоках грузов составляет коэфДост = 0,31 при среднем коэффициенте использования самолётов обоих типов коэфИспСам = 0,638. Коэффициент использования самолёта типа Б (0,481) ниже коэфИспСамА = 0,795.

Машинное время выполнения модели 467,2 сек.

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Игорь Маникин
Игорь Маникин

Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю?

Еще раз спасибо за прекрасный курс!

Артём Нагайцев
Артём Нагайцев

Выдает ошибку "entity cannot be resolved to a variable" при попытке запуска. В чем может быть причина? Ошибка в строках

entity.time_vxod=time(); 

time_obrabotki.add(time()-entity.time_vxod);