Шаг 5. Создание системы сбора статистических данных.




Шаг 4. Устанавливаем два турникета на входе.

Теперь мы установим на входе два турникета. Проход через турникет будет занимать некоторое время: примерно от 0,5 до 1 секунды. А также дополним поведение пешеходов случаем, когда карта не подошла к турникету (несанкционированный доступ) или была забыта дома – в этом случае пешеход будет отправляться обратно.

4.1. Для начала нарисуем ещё две Целевые линии, которые будут обозначать турникеты. Назовём их, соответственно, gate1 и gate2.

4.2. Возле турникетов добавим две Прямоугольные области из палитры Пешеходная библиотека – это будут зоны ожидания для учеников для симуляции обработки проходной карточки. Назовём их area1 и area2.

4.3. И предусмотрим линию, куда будут уходить те пешеходы, которые не смогли пройти идентификацию или забыли карточку. Расположим её за стенами школы и назовём denied.


 

4.4. Теперь переделаем схему поведения пешеходов: после появления они должны с равной вероятностью направиться к одному из турникетов gate1 или gate2, далее перейти в зону ожидания, соответственно, area1 или area2, после чего они либо проходят в школу и направляются к одной из линий exit1 или exit2, либо уходят к линии denied. Тогда получим следующую схему:

ü Мы отсоединили два объекта pedGoTo1 и pedGoTo2 вместе с pedSink1 и pedSink2 и передвинули их правее, чтобы не переделывать их характеристики.

ü Для объектов pedGoTo3 и pedGoTo4 в Свойствах в качестве целевых линий выбрали, соответственно, gate1 и gate2.

ü Добавили два объекта pedWait1 и pedWait2, которые задерживают пешеходов в прямоугольных областях. В качестве таких областей в Свойствах мы выбрали, соответственно, area1 и area2. Время задержки по умолчанию регулируется функцией uniform(0.5, 1.0) – она выдаёт случайно значение от 0,5 до 1 секунды.

ü Добавили ещё два объекта pedSelectOutput1 и pedSelectOutput2, которые теперь регламентируют в 95% случаев верную идентификацию карты учащегося, а в 5% –запрещают проход. Таким образом, выходы к pedGoTo1 и pedGoTo2 имеют коэффициент предпочтения 0.95, а выходы к pedGoTo0.05.

ü Следовательно, появился ещё один объект pedGoTo, для которого целевой линией является denied. Для него, естественно, добавлен ещё один pedSink3.


 

4.5. Теперь запустим имитацию и пронаблюдаем, что изменилось. Действительно, директор школы был прав, решив для начала построить модель, прежде чем устанавливать турникеты.

 

Через 30,5 минут (звонок уже прозвенел!) из 600 учеников не прошли идентификацию 25 человек, 488 прошли в школу, а значит, осталось ещё 87 человек, которые не успели попасть в школу вовремя.

 


 

Шаг 5. Создание системы сбора статистических данных.

Согласитесь, определять время прохода в школу «на глаз» не совсем удобно. Тогда усовершенствуем нашу модель, воспользовавшись средствами сбора статистических данных и возможностями модифицировать класс[1] пешехода.

Прежде всего нас интересует время, которое потребуется пешеходу (ученику), чтобы пройти через весь этаж и попасть на занятия. Изначально время входа пешехода в систему и выхода из неё не фиксируется, поэтому создадим нового пешехода, отмечающего это время.

5.1. В палитре Пешеходная библиотека перетащим в область создания модели объект Тип пешехода.

5.2. В открывшемся окне укажем имя нового типа пешехода schoolPed (школьный пешеход) и нажмём кнопку Далее.


 

5.3. В следующем окне выберем фигурку анимации пешехода – любую из понравившихся.

5.4. В следующем окне добавим параметр startMove – в нём будет храниться время входа. Тип этого параметра – double (вещественный), поскольку именно так обрабатывается модельное время; значение по умолчанию задавать не будем, поскольку заранее это время не известно. Нажмём кнопку Готово.

После этого откроется рабочее поле созданного класса, в нём мы менять ничего не будем. Поэтому возвращаемся к Main.


 

 

5.5. Теперь нам надо в объектах управления изменить некоторые Свойства.

В pedSource:

ü Пешеход → Новый пешеход – schoolPed;

ü Специфические → Тип пешехода – schoolPed. Без этого мы не сумеем обратиться к новому параметру startMove (в базовом классе его нет);

ü Действия → Действие при выходе – запишем добавленным нами параметр времени: ((schoolPed)ped).startMove = time().

5.6. Теперь добавим объект сбора статистических данных. Для этого из палитры Статистика перетащим объект Статистика.

5.7. Дадим ему имя moveTime.

5.8. На всех объектах pedSink укажем Действие при входе, добавляющее данные к статистике: moveTime.add(time()-((schoolPed)ped).startMove).

 

Теперь при выполнении прогонов имитации можно не наблюдать за счётчиком модельного времени, а просто отслеживать накопленные данные: минимальное, максимальное и среднее время прохода школьников, кликая на объект Статистика.

 

В этом прогоне максимальное время, которое потратил ученик, чтобы пройти в школу – 743 секунды, то есть примерно 13 минут (!!!), а среднее время прохода – 3 минуты!

В целом, трудно признать, что турникет работает удовлетворительно.

 

Задания.

1. Как изменится время, если карта будет обрабатываться турникетом от 1 до 2 секунд?

2. Сколько потребуется времени на проход, если добавить больше реальности и создать гардероб на первом этаже, где дети нужно переодеваться (задержка в нём может быть от 2 до 5 минут)?

3. Модель предполагает, что люди приходят в течение всех 30 минут равномерно. Однако, в реальной жизни, на последние 10 минут перед звонком приходится значительно более высокая интенсивность. Исследуйте модель с повышенной частотой появления людей.


[1] Классом в объектно-ориентированном программировании (используемый в AnyLogic язык Java является таковым) называется абстрактный тип данных, обладающий персональными свойствами и характеристиками.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: