Лабораторная работа № 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 Запустите модель на выполнение,
убедитесь что никаких ошибок не возникает и затем продемонстрируйте
преподавателю.