Страница 1 из 1

Информация: действие "изменить поведение" в Pathfinder

Добавлено: 04 май 2018, 05:53
FireCat
В последней версии Pathfinder среди действий поведения появилось новое - «изменить поведение». В данной статье мы рассмотрим, для чего может быть использовано это действие и как с ним работать.
Смоделируем следующую ситуацию при эвакуации: с этажа есть 4 выхода, но 3 из них закрыты. Агенты не знают, какой выход закрыт, поэтому направляются к случайному выходу. Если выход открыт, они эвакуируются, если закрыт - возвращаются в холл, «обмениваются информацией», и затем идут к открытому выходу.
1.png
1.png (94.87 КБ) 7647 просмотров
Как это смоделировать?
Проблема в том, что агенты во время моделирования всегда «знают», какие выходы открыты, а какие закрыты. Поэтому нельзя направить агентов к закрытым выходам – агенты просто останутся стоять на месте. Если закрыть выход в процессе моделирования, то агенты сразу «узнают» об этом и изменят свой маршрут.
Поэтому задавать движение к закрытому выходу мы будем с помощью действия «идти к путевой точке». Нам потребуется 4 поведения, по одному на каждый выход.
Далее, в модели используется три времени начала эвакуации: 7 секунд для помещения пожара, 60 секунд для магазина и 90 секунд для офисов.
Таким образом, для того, чтобы смоделировать описанную несложную ситуацию, нам потребуется создать 12 поведений. Слишком много, очень легко запутаться - и это для простейшего случая.
Чтобы упростить себе задачу, можно использовать действие «изменить поведение».
Создадим три «начальных» частей поведения, по временам эвакуации:
2.png
2.png (13.9 КБ) 7647 просмотров
В действии «изменить поведение» задается распределение, на какие поведения может измениться поведение агентов. «Без изменений» означает, что агенты продолжат выполнять действия текущего поведения. Если выбрать в распределении текущее поведение, то агенты начнут выполнять его действия с самого начала.
Теперь создадим четыре «средних» частей поведения, в которых укажем движение к путевым точкам возле выходов. Для всех поведений, кроме задающего движение к открытому выходу, затем следует еще одно изменение поведения.
3.png
3.png (8.52 КБ) 7647 просмотров
И наконец «конечная» часть поведения:
4.png
4.png (2.75 КБ) 7647 просмотров
Поскольку в конечной части только одно поведение, то можно было бы просто дописать его действия к средним частям поведения. Однако в этом случае нам пришлось бы прописывать одни и те же действия три раза - а так только один, меньше вероятность ошибки и меньше редактировать, если захотим что-то изменить.
Теперь агенты начинают движение в заданное поведением время, изменяют свое поведение на одно из поведений средней части – двигаться к одному из выходов, затем снова изменяют поведение, направляются к точке встречи и затем к выходу.

Расчетные файлы примера:
var_beh.rar
(4.35 МБ) 627 скачиваний
Таким образом, действие «изменить поведение» будет полезно в следующих случаях:
  • необходимость циклических действий в поведениях;
  • большое количество вариантов поведений, которые можно разделить на отдельные блоки;
  • сложная последовательность действий, повторяющаяся в нескольких поведениях, которую можно выделить в отдельное поведение для упрощения редактирования.