Семинары по агентному моделированию – Занятие 2


Автор:

picture-1В прошлую субботу мы провели 2е занятие из цикла семинаров по агентному моделированию. Участников было мало, я забыл напомнить всем по почте о семинаре. Тем не менее, человек 5 нас было и мы занимались моделированием роста социальных сетей.

Итак, как мы подошли к решению задачи и какие функции StarLogo нам понадобились?

1. Каждый агент беспорядочно двигается по полю – для этого нам понадобилась функция Random. Хаотичное поведение можно смоделировать, повернув агента на случайно выбранный градус из 360 и сделав шаг (forward).

picture-2

2. Агент может быть в двух состояниях: заражен или не заражен. Для этого мы ввели переменную infected (переменные задаются в области Turtles) и пользовались соответствующими кубиками set infected для задания значения переменной и infected для возврата значения переменной. infected переменную мы сделали булевой, т.е. она может принимать значения true и false. Чтобы просмотреть значение переменной для конкретного агента вы просто кликаете на него и появляется окошко “Monitor Turtles”, в нижней части которого вы найдете переменные, которые вы определили.

picture-5picture-6picture-3

3. При столкновении агентов если один из агентов infected, то и другой агент становится infected. Чтобы получить доступ к свойствам агента, с которым столнулся текущий агент, вы используете переменную collidee. Кстати в StarLogo есть возможность поиска кубика (блока) по имени: при вводе букв из названия блока, программа ищет блоки, в которых присутствуют эти буквы и подсвечивает разделы, в которых есть такие блоки.

picture-81

4. Ну и мы вывели график, используя блок line graph зараженных и незараженных агентов.

Что мы выяснили?

А) первоначальное количество зараженных агентов влияет на скорость распространения вируса

Б) то, сколько шагов делает каждый агент, также влияет на распространение вируса.

Но такая модель не очень интересно. Гораздо интереснее (и это я дал в качестве домашнего задания) расширить модель, сделав следующее правило: если агент заражен более N периодов, то он перестает заражать других агентов –> то есть по прошествии некоторого периода агент больше не распространяет вирус. Смоделируйте это и попробуйте проанализировать как на распространение эпидемии влияет размер периода, в течение которого агент может заразить другого. Ну и присылайте на проверку! :)

Важные моменты, которые выяснились в ходе моделирования этой задачи:

1) визуально окрашиваются в другой цвет только агенты, представленные в виде одной из фигур Basic Shapes. Если же вы выберете Симпсона для своих агентов, то его цвет поменяется, но визуально вы этого не увидете (только в свойствах агента)

2) не забывайте в setup инициализировать переменные, в противном случае модель будет работать непредсказуемо. Оооох уж сколько мы бились с этим на занятии: Лиза, Олеся, Юля и Леша не дадут соврать :)

Ну а на следующем занятии мы поговорим о:

1) Net Logo – альтернативной программе моделирования

2) Генетических алгоритмах

3) и о других функциях, которые востребованы судя по вашим описаниям игр.

До встречи в ближайшую субботу 30 мая!


2 отзывов

  • By nektolukas, May 28, 2009 @ 5:28 pm

    Спасибо

    Ответить

    Bayram Annakov Ответ:

    Не за что. Надеюсь из транскрипта понятно что и как мы делали. Будут вопросы – отвечу по почте с удовольствием!

    Ответить

Ссылки на эту статью

Оставить отзыв

WordPress Themes