суббота, 24 апреля 2010 г.

Урок 11. Что после Scratch?


После того как ученики освоили Scratch и столкнулись с его ограничениями, переход к NetLogo может оказаться  очень выигрышным. В среде NetLogo ученики  могут создать гораздо более  сложные программы и модели, чем в среде Scratch.

NetLogo


В начале 90-х годов М.Резник предложил использовать многоагентное сообщество черепашек для освоения учениками экологических стратегий. Со множеством черепашек в языке StarLogo ученики могли наблюдать, изучать и моделировать сложные физические, химические, биологические и социальные феномены. Хотя язык создавался в первую очередь как средство обучения, в этой среде оказалось возможным ставить и серьезные эксперименты по многоагентному моделированию. Исследовательские возможности среды получили дальнейшее развитие в языке NetLogo. Язык был создан Ури Виленским в 1999 году и продолжает активно развиваться и в настоящее время. Среда программирования NetLogo служит для моделирования ситуаций и феноменов, происходящих в природе и обществе. NetLogo удобно использовать для моделирования сложных, развивающихся во времени систем. Создатель модели может давать указания сотням и тысячам независимых "агентов" действующим параллельно. Это открывает возможность для объяснения и понимания связей между поведением отдельных индивидуумов и явлениями, которые происходят на макро уровне.

Язык NetLogo достаточно прост и ученики и учителя  могут создавать в этой среде  свои собственные учебные модели. В то же время NetLogo это достаточно мощный язык для построения исследовательских  моделей и проведения исследований. В среде NetLogo последние годы были построены различные исследовательские модели, которые использовались в научных статьяхи обсуждались в книгах по многоагентному моделированию и социологии. В российском образовании среда NetLogo использовалась для демонстрации сетевых феноменов и для моделирования социальных феноменов в учебных курсах по менеджменту.

Создавая  модель имитирующую построение термитника или образования стаи птиц, ученики  узнают больше о главном правиле  сетевых сообществ – «простые правила – сложное поведение». Одна из наиболее известных и часто демонстрируемых моделей стайного поведения - это модель формирования стаи птиц или рыб. В начале все агенты двигаются в разные стороны, но постепенно под действием окружающих из множества агентов формируется стая, во главе которой находится птица, рыба или черепашка – вожак. Мы приведем здесь маленький фрагмент программы, управляющий формированием стаи.

to flock

find-flockmates ; найти соседей 

if any? flockmates ; если есть соседи 

[[ align cohere ]] ; соответствовать полету группы

fd 1

end

В переводе с языка NetLogo на русский данное выражение означает, что каждый агент поискал соседей и, если нашел, то скорректировал траекторию своего поведения в ту сторону, куда двигаются окружающие. Приведенная программа позволяет увидеть характерные особенности модели стайного поведения:

Каждый  агент выполняет простые действия по простым правилам.

Действия  агентов постоянно повторяются.

На действия отдельного агента влияет поведение  его ближайшего окружения.

Стайное поведение  формируется в результате действий множества агентов. Никакой договоренности о действиях или прямых указаний от вожака группы не существует. В приведенных  игровых и компьютерных примерах легкость образования группы зависит  от того, насколько хорошо участники видят и находят друг друга. В программе этот поиск партнера обозначен процедурой find-flockmates.

to find-flockmates

set flockmates (turtles in-radius vision) with [self != myself] ; все, кто в поле моего зрения

end

Стая складывается не только и не столько за счет обмена прямыми сообщениями между отдельными агентами, сколько в результате наблюдения за поведением других агентов. Агенты, постоянно наблюдающие за поведением друг друга, образуют стаю. Наблюдение за деятельностью других агентов никогда не сводится только к вербальному общению между агентами.

Среда NetLogo благоприятна для существования  сообщества, поскольку всегда позволяет  посмотреть текст программы, написанной другим участником; заимствовать фрагмент программы или отдельную процедуру; видоизменить процедуру по своему усмотрению и использовать ее в рамках другой программы. Язык NetLogo создавался для того, чтобы помогать ученикам размышлять о децентрализованных процессах. Визуальные модели в среде NetLogo позволяют нам исследовать сетевые феномены в экологических системах. При этом оказалось, что эти системы можно обнаружить не только в живой природе. Многие феномены в социальной жизни подчиняются тем же закономерностям. Наиболее известны следующие компьютерные модели NetLogo.

Термины собирают разбросанные по экрану палочки в  одну большую и круглую кучу1. Удивительно, но при этом каждый агент следует только двум простым правилам: 1) если идешь и видишь палочку, возьми ее; 2) если идешь с палочкой и видишь еще одну, положи свою палочку и иди дальше.

Образование стаи. Модель помогает понять, как птицы, рыбы и другие животные, обладающие стайным поведением, образуют стаю2. Вначале все агенты на экране двигаются в разные стороны, но постепенно, под действием окружающих, из множества агентов формируется стая, во главе которой находится птица или рыба, которая воспринимается наблюдателями как вожак. Каждый агент выполняет простые действия по простым правилам; действия агентов постоянно повторяются; на действия отдельного агента влияет поведение его ближайшего окружения.

Если мы посмотрим на то, как  собирается муравейник или стая птиц, то увидим очевидную разницу между  моделями — стая собирается значительно быстрее. Эта разница в скорости объясняется достаточно просто: в модели образования птичьей стаи каждый из агентов отслеживает поведение ближайшего окружения и согласовывает с ним свои движения — посмотри, как ведут себя птицы из ближайшего окружения, и измени своего поведение в сторону общего. Чем дальше видит каждый агент, тем быстрее происходит образование общего поведения. Множество агентов не имеет между собой прямых связей. Они никогда не видят друг друга, и их общение носит опосредованный характер. Агент А видит ближайшее окружение и действует под его влиянием. Но и его собственное поведение влияет на ближайшее окружение. В частности он влияет на агента B, который находится в зоне видимости. Агент B в свою очередь оказывает влияние на агента C и т. д. В малой группе, которую и называют сообществом, все агенты видят друг друга, между ними существуют непосредственные связи. В сети агенты или узлы сети связаны через множество промежуточных узлов.

Создавая модель стаи птиц, ученики узнают больше о главном правиле сетевых сообществ — «простые правила — сложное поведение».

Библиотека моделей, созданных  в среде NetLogo, обширна и пополняется  не только разработчиками, но и членами  сообщества — http://ccl.northwestern.edu/netlogo/models/community.

В этом сообществе можно:

    • прочитать описание модели, ее назначение, принципы, которые лежат в основании;
    • посмотреть выполнение программы в сети. Для этого достаточно просто запустить программу в браузере. Java-applet отработает и покажет в отдельном окне как работает модель;
    • скачать модель и запустить на своем компьютере;
    • внести в модель изменения и использовать готовые процедуры, взятые из чужой модели внутри своих собственных программ;
    • загрузить свою модель на общедоступный сервер и предложить ее к обсуждению и совместному использованию.

К настоящему времени на сайте проекта http://ccl.northwestern.edu/netlogo/ доступна четвертая  версия NetLogo, распространяемая свободно и действующая на различных платформах. Важной особенностью четвертой версии языка NetLogo является появление нового типа агентов. К черепашкам (turtles) и пятнышкам (patches) добавились связи (links). Агенты нового типа открывают новые возможности для моделирования сетевых отношений. Связь в NetLogo это - агент связывающий 2 черепашки или 2 узла. Связь создается командой обращенной к черепашке.

Например:

ask turtle 1 [create-link-with turtle 0]

 

Связи в NetLogo бывают двух типов - направленные и ненаправленные. Ненаправленные связи  создаются командой create-link-with

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

create-link-from

create-link-to

 

Например, следующий рисунок создан строкой команд

ca cro 10

[set size 3 set shape "circle" fd 8]

ask turtles [create-links-to other turtles]

image

Рисунок 5 Связи между узлами

 

Появление нового типа агентов расширяет  возможности визуализации созданных  ранее моделей. Например, мы можем  добавить связи к модели образования  стаи и более зримо наблюдать  постепенную организацию птиц. Мы добавили только одну строку, чтобы образовывались связи с ближайшим окружением и рвались бы связи, с теми, кто покинул ближайшее окружение.

 

to find-flockmates

set flockmates other turtles in-radius vision

create-links-with flockmates

ask my-links [ if link-length > vision [die]]

end

 

image

Рисунок 6 Формирование стаи со связями

 

Использование многоагентной среды открывает  перед преподавателями и студентами новые возможности для коммуникации. В этой среде участники учебного процесса не просто описывают события, но стремятся понять и смоделировать закономерности, лежащие в основе этих событий. Меняется язык, на котором происходит взаимодействие группы. От терминов описания событий преподаватель переходит к моделированию событий. Учащиеся от запоминания и повторения фактов переходят к самостоятельным экспериментам с многоагентными моделями. Возникают новые формы публикации учебных материалов. Современная сетевая литература позволяет ученику не только прочитать материал, но и играть и экспериментировать с различными параметрами модели.


Дополнительная информация:



1 http://ccl.northwestern.edu/netlogo/models/Termites.

2 Wilensky, U. (1998). NetLogo Flocking model (http://ccl.northwestern.edu/netlogo/models/Flocking).


пятница, 23 апреля 2010 г.

Урок № 8Спрайт как порода

Открытая российская  коллекция спрайтов Scratch  на  Летописи -  http://letopisi.ru/index.php/Коллекция_спрайтов_Scratch . Важное направление этой коллекции – сбор спрайтов, которые могут быть в дальнейшем использованы для создания мультиагентных моделей. Одиночный спрайт содержит всю необходимую информацию, и при размножении такого спрайта мы получаем готовую модель, в которой спрайты ведут себя как агенты представители одной породы. Например, спрайт отдельной бабочки содержит всю информацию о том, как бабочка перемещается по экрану, и о том, как она реагирует на поведение других бабочек.

 

image

 Команда занять исходную позицию

 

image

 Команда сбора данных. Теперь все готово и у нас есть отдельный спрайт, который живет сам по себе. Бабочка летает по экрану.

 

image

Единичный спрайт, содержащий всю информацию


Мы можем многократно копировать спрайт этой бабочки и получить модель, в которой отдельные бабочки, изначально летящие в разные стороны, постепенно собираются в стаю и летят  в общем направлении.

image


Модель стаи, в которой 15 бабочек.

Модель битвы драконов и демонов. Здесь тоже 1 спрайт, в котором спрятана вся модель.


Задание

  1. Предложите в группе свои спрайты, которые могут быть использованы в проектах.
  2. Предложите спрайты, в которых хранится поведение породы.