Семинары по АМ – Занятие 4: Моделируем муравьев
Автор: Bayram Annakov
На первом занятии мы рассматривали поведение муравьев при поиске еды, вот на 4м занятии мы решили это поведение смоделировать. Внимание: заключительный семинар состоится не 13 июня, а 20 июня из-за праздников.
В процессе обсуждения мы вывели следующие правила поведения для каждого типа агентов:
Муравьи
1. Если муравей нашел еду, то он возвращается в муравейник, оставляя за собой след ферромонов.
2. Если муравей не нашел еды, но учуял ферромон, то он идет по направлению к нему.
3. Если муравей не нашел ни еды, ни следа, то он просто бродит по площадке, пока не найден одно из вышеперечисленных.
Следы
1. Следы появляются, когда муравей нашел еду и возвращается в муравейник
2. С каждым шагом модели следы уменьшаются в размере; когда размер будет близок к 0, то след исчезает.
Еда
1. При старте модели еда случайным образом разбросана по территории
2. Когда муравей находит еду, он отрывает небольшой кусок еды – еда уменьшается в размере.
Муравейник
1. При старте модели муравейник создается в центре территории.
2. Каждый раз когда в муравейник возвращается муравей с едой, муравейник увеличивается на объем принесенной еды.
Какие нам понадобились новые функции?
а) функция set heading, которая устанавливает направление движения агента. Эта функция используется вкупе с функцией towards, которой можно задать x и y координаты, а она возвращает угол, на который нужно развернуться агенту, чтобы в итоге попасть на координату (x,y)
б) для того, чтобы “учуять” какого-либо агента (например, след) необходимо использовать функцию smell. Желательно использовать ту разновидность этой функции, которая представляет возможность задать условия поиска.
в) для изменения размеров используется set size функция.
г) небольшой трюк: чтобы муравей при нахождении следа знал в каком направлении ему идти, необходимо сначала его повернуть в сторону муравейника, а потом развернуть на 180 градусов в противположную сторону. Именно таким образом, он повернется именно в сторону еды. (если придумаете более элегантный способ добиться этого, то дайте знать)
Денис (NektoLukas) и Валерий справились с моделью и уже прислали решение. В ближайшее время я создам публичный реестр моделей на sourceforge.net и любой желающий сможет размещать там модели starlogo.



By simulyant, June 29, 2009 @ 8:49 am
Подобная задача решалась на ICFPC-2004 http://habrahabr.ru/blogs/sport_programming/62750/
Reply
Bayram Annakov Reply:
June 29th, 2009 at 9:09 am
Ух ты! Действительно! Валерий, спасибо за ссылку!
Reply