Введем вместо автоматического переключения светофора пешеходов кнопку, при нажатии которой пешеходами им разрешается переход после того, как светофор траффика остановит движение автомашин. Для этого активизируйте
окно редактора анимации и щелкните на кнопке панели инструментов.
Поместите этот графический объект куда-нибудь перед пешеходным переходом. Назовите кнопку ЖДУ и определите ее действия так, что при каждом ее нажатии будет устанавливаться в истину булева переменная waiting (т. е. установим в поле Реакция на событие окна свойств этой кнопки команду waiting=true,-). Логическую переменную waiting нужно определить в поле редактора активного объекта Model с начальным значением false. Эта переменная должна фиксировать, ждет ли пешеход возможности перейти дорогу. Значение переменной будем сбрасывать в false каждый раз, как только светофор пешеходов переходит в состояние "мигающий зеленый", т. е. команда waiting=false; должна быть добавлена в поле Действие окна свойств перехода t1 стейтчарта pedestrian_light. Таким образом, наличие ожидающих
на переходе пешеходов (что обнаружится по нажатии кнопки ЖДУ) является условием переключения светофора traffic_light из состояния до в состоя-ние attention и далее в состояние запрещения движения транспорта.
При построении системы управления движением важно, чтобы постоянное нажимание кнопки ЖДУ пешеходами (или неким злоумышленником) не парализовало движение транспорта. Для этого в стейтчарте traffic_light измените состояние до, сделав его иерархическим с двумя простыми состояниями go1 и до2 так, как показано на рис. 6.20.
3 состоянии goi осуществляется непрерываемое движение транспорта, вы-ход из этого состояния происходит точно тогда, когда исчерпается выделен-ный таймаут (здесь 25 с), после чего светофор переходит в состояние прерываемого движения до2, переход т из которого срабатывает, когда будет выполнено условие наличия пешеходов, ожидающих переход. Если кнопка ЖДУ не была нажата до этого времени с момента последнего разрешения перехода (т. е. переменная waiting все еще имеет значение false), то транспорту будет разрешено продолжать двигаться до нажатия этой кнопки. Если кнопка уже была нажата (произвольное число раз), то переменная waiting уже имеет значение true и светофор traffic_light из состояния go2 мгновенно перейдет в состояние attention и затем остановит движение.
Окно наблюдения событий
Для отладки модели и понимания процессов, происходящих в системе, вы можете использовать окно наблюдения событий. Для открытия окна событий щелкните кнопку панели инструментов.
На рис. 6.21 представлен момент после окончания интервала разрешения перехода пешеходов. Сравните вашу модель с моделью PedestrianCross4.
6.4. Системы массового обслуживания: использование библиотеки стандартных объектов
Рассмотренные ранее базовые средства AnyLogic для построения моделей дискретно-событийных систем могут быть использованы в широком диапазоне совершенно различных приложений имитационного моделирования. Существует, однако, область приложений дискретно-событийного моделирования, в которой единая элегантная парадигма позволяет применить, фактически, одну и ту же методологию к решению множества важных практических проблем. Эта область — массовое обслуживание. Традиционным подходом к моделированию задач массового обслуживания является разработка библиотеки многократно используемых объектов, из которых как дома при крупнопанельном строительстве могут быть собраны совершенно различные модели, решающие разнообразные задачи этой области. В AnyLogic такой традиционный путь решения класса задач реализуется очень просто: создается библиотека типовых блоков, собирая которые в связанные структуры и настраивая их параметры можно значительно ускорить разработку моделей этого класса. Нужно помнить при этом, что все базовые средства AnyLogic могут быть использованы в случае, если функциональности библиотечных объектов недостаточно для решения специфических проблем.
В данном разделе мы рассмотрим типичную проблему массового обслуживания и то, как эта проблема может быть легко решена с использованием одной из библиотек, разработанных в AnyLogic. Среда AnyLogic открыта для разработки библиотек совершенно различного назначения.