Лабораторная работа № 6 «Моделирование транспортных систем»

Цель работы: Изучение методов дискретно-событийного моделирования, знакомство с библиотекой Enterprise Library (Основная библиотека).

Шаг 1. Создание модели при помощи шаблона

1.1 Создайте новую модель Doroga на основе шаблона Дискретно-событийное моделирование. Поставьте галочки напротив выборов: Добавить гистограмму распределения времени пребывания в системе, Добавить график, а в Анимации укажите 3D. Пункт – Использовать ресурсы выбирать не нужно, пример на рисунке 77.

Рисунок 77 – Параметры создания модели

AnyLogic создаст модель, как показано на рисунке 78. В верхнем левом углу расположена потоковая диаграмма, состоящая из 4-х элементов: source, queue, delay и sink.

Рисунок 78 – Созданный шаблон модели

1.2 Выделите объект Source, и в строке свойств Заявки прибывают согласно выберите Времени между прибытиями. В появившемся поле ввода времени между прибытиями запишите exponential(0.1), как представлено на рисунке 79. Функция exponential генерирует реализацию случайной величины с экспоненциальным законом распределения.

Рисунок 79 – Изменение свойств объекта Source

 

1.3 В свойствах объекта queue следует удалить связь с анимацией: в поле Фигура анимации панели свойств, удалите ссылку на polyline, смотрите пример на рисунке 80. Заявки, находящиеся в очереди, анимироваться не будут. Этот объект будет выполнять буферную функцию для предотвращения ошибки в момент, когда source создал заявку, а delay еще не готов ее принять.

Рисунок 80 – Изменение свойств объекта queue

 

1.4 В свойствах объекта delay следует сделать следующие изменения: Задержка задается – укажите: Как длина пути/скорость; Время задержки – исправьте на triangular(5., 10., 15.); Вместимость – исправьте на 10; Фигура анимации – исправьте на polyline; Тип анимации – исправьте на Путь, как показано на рисунке 81.

Рисунок 80 – Параметры объекта delay

 

1.5 Теперь нужно изменить фигуру анимации, вместо человечка пусть будет автомобиль. Откройте палитру 3D Объекты и перенесите мышью объект Автомобиль на диаграмму класса Main, как представлено на рисунке 81. Этот элемент получит имя по умолчанию car.

Рисунок 81 – Добавление фигуры Автомобиль

 

1.6 В свойствах объекта source измените поле Фигура анимации заявки на car и поставьте галочку в поле Разрешить вращение, это видно на рисунке 82.

Рисунок 82 – Редактирование свойств объекта Source

 

1.7 Запустите модель и проверьте что бы она выглядела так же, как и на рисунке 83.

Рисунок 83 – Работающая модель

 

Шаг 2. Моделирование перекрестка

 

Подъехав к перекрестку, автомобили должны перестроиться в 3 потока для проезда прямо, и поворотов направо и налево.

2.1 Перенесите из палитры Enterprise Library на диаграмму класса Main объект selectOutput5 и поместите его между delay и sink, предварительно удалив связь между ними. В свойствах этого объекта укажите Вероятность 0, Вероятность 1 и Вероятность 2 – равными 1/3., а Вероятность 3 и 4 сделайте равной 0, что видно на рисунке 84.

Рисунок 84 – Свойства объекта selectOutput5

 

2.2 Перенесите из палитры Enterprise Library (Основная библиотека) на диаграмму класса Main три объекта conveyor и поместите их между selectOutput5 и sink. Так как в объекте selectOutput5 заявки не могут оставаться, а конвейер может оказаться не готовым их принять, нужно между ними добавить буферный объект queue. Соедините объекты, как показано на рисунке 85.

Рисунок 85 – Добавление объектов conveyor и queue

 

2.3 Чтобы в дальнейшем не запутаться необходимо переименовать все объекты conveyor и queue, согласно рисунка 86. Так же нужно нарисовать дополнительные ломаные линии для разветвления дороги, что тоже видно на рисунке 86.

Рисунок 86 – Разветвление дороги и переименование объектов

 

2.4 В свойствах всех объектов conveyor следует сделать следующие изменения: Длина задается – укажите: Согласно пути; Расстояние между заявками – укажите: 55; Фигура анимации – укажите на соответствующую ломаную линию, пример приведен на рисунке 87.

Рисунок 86 – Разветвление дороги и переименование объектов

 

2.5 Для моделирования остановки автомобилей поставьте 3 объекта

hold после conveyor,  как показано на рисунке 87.

Рисунок 87 – Добавление объектов hold

 

2.6 Добавьте на диаграмму две кнопки Стоп и Движение, в значении поля Действие свойств кнопок пропишите команды для блокирования всех трех объектов hold кнопка Стоп: hold1L.setBlocked(true); hold1.setBlocked(true); hold1R.setBlocked(true); и команды для разблокирования всех трех объектов hold кнопка Движение: hold1L.setBlocked(false); hold1.setBlocked(false); hold1R.setBlocked(false);

 

2.7 Теперь осталось только добавить элементы для моделирования движения автомобилей после светофора: delay1L1, delay12, delay1R1 и delay13, а также  ломаные линии для анимации движения и визуализации границ перекрестка, как представлено на рисунке 88.

Рисунок 87 – Добавление и переименование объектов delay и ломаных линий

 

2.8 Свойства новых объектов delay1L1 и т.д измените в соответствии с уже имеющимся объектом delay, отличаться они будут только значением поля Фигура анимации, объект delay13 изменять не следует.

2.9 Для отображения сигнала светофора самостоятельно нарисуйте овал рядом с местом остановки автомобилей и динамически изменяемым цветом заливки: красный и зеленый в зависимости от того – разрешено движение данному потоку или нет.

2.10 Запустите модель на выполнение, убедитесь что никаких ошибок не возникает и затем продемонстрируйте преподавателю.