NetLogo

Материал из Letopisi.Ru — «Время вернуться домой»
Версия от 15:19, 26 февраля 2019; Евгений Патаракин (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Ages 12, 13, 14
FieldActivity Empowered Learner, Innovative Designer, Computational Thinker, Creative Communicator, Global Collaborator
Purpose Язык общего назначения
Visual_Text_Blocks Текст
Dimension 2D
Openness Открытый
Address https://netlogoweb.org/
Ancestors StarLogo
Descendants
ActiveNow Project is active
Remixing? Yes

Содержание

Введение

NetLogo является продолжением языка Лого - первого языка, созданного еще в 1968 году объединенными усилиями Массачусетского Технологического Института и корпорации BBN (Bolt Beranek & Newman) с целью обучать детей при помощи компьютера. Создан Ури Виленским в 1999 году и развивается в Center for Connected Learning and Computer-Based Modeling.

В отличие от конференции StarLogo, ориентированной на учителей, конференция и сам продукт NetLogo более тяготеет к исследовательской аудитории и преподавателям ВУЗов.

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

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

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

Руководство по среде НетЛого на сайте создателей языка
http://ccl.northwestern.edu/netlogo/faq.html

Netlogo-intface.png

  • Interface - область, где мы исследуем свойства модели. В центре черное по умолчанию поле, на котором взаимодействую черепашки - turtles, пятна - patches и связи черепашек - links. На рабочее поле мы можем добавлять различные кнопки, переключатели. Кнопки привязываются к именам процедур.
  • Information - описание модели. Здесь авторы модели рассказывают - о чем модель, как она устроена, какие особенности, как можно использовать и развивать модель.
  • Procedures - область, где записываются процедуры NetLogo, управляющие поведением агентов - см. агенты NetLogo.

Как правило, в моделях НетЛого присутствуют 2 главные кнопки:

  1. setup - и с ней связана процедура setup - очистить экран, удалить всех агентов, создать агенты, необходимые для работы модели.
  2. go - запуск модели.

В нижней части экрана расположена строка observer - наблюдатель, который может давать команды NetLogo всем существующим в системе объектам.


Урок 1. Создаем и группируем черепах

Научимся создавать, расставлять и группировать черепах. Листинг программы - Черепашки NetLogo/Test-turtle.nlogo

Создадим новый проект. У черепашек Netlogo есть свойства - номер, цвет, координаты и т.д. Кроме того, мы можем задавать черепашкам новые свойства - turtles-own. Свойства всегда задаются в начале программы. Например, зададим для черепашек свойство group. Свойство будет иметь 2 значения - ложь или истина. Принадлежит черепашка к группе или не принадлежит.

turtles-own [group]

Вообще внутри turtles-own [] можно перечислить множество свойств

Теперь создадим первую процедуру, которая будет очищать все имеющиеся объекты и значения. Далее следует программа с комментариями. Комментарии задаются двумя символами ;;

Создаем новых черепах

to setup

  • ca - очищаем значения
  • каждая черепашка располагается в случайной точке экрана
  • crt 50 [  ;; создаем 50 черепах и разбрасываем их по экрану
  • setxy random-xcor random-ycor
  • set group false
  • ]
  • черепахи рождаются по порядку и поворачиватся последовательно. Когда мы им потом даем команду разойтись, они образуют круг
  • cro number_of_turtles [fd max-pxcor - 2]
  • Этого же результата можно достичь, если мы используем команду layout-circle
  • end

to circle

  • layout-circle turtles max-pxcor - 2

end

Мы умеем создавать черепашек и расставлять их по экрану. Теперь попробуем собрать черепашек одинакового цвета

Группируем черепах по цветам

to collect_color

  • Первая версия - черепашки объединяются, но делают много лишних движений
  ask other turtles with [color = [color] of myself] [face myself jump (distance myself) - 1] 

во второй версии задаем черепашкам свойство принадлежности к группе и в начале устанавливаем значение этого свойства в false

  • if group = false [ask other turtles with [(color = [color] of myself) and (group = false)]
 [  
 черепашка прыгает в сторону вызывающего агента
  • face myself jump (distance myself) - 1
 черепашка устанавливает свою принадлежность к группе в true - и теперь ее не будут вызывать
  • set group true create-link-to myself]]

end


На странице использованы Команды к черепахам NetLogo

Пятна - точки - patches

Агенты НетЛого, которые связаны с конкретными координатами на экране. К точке всегда можно обратится. Например:

  • ask patch 0 0 [set pcolor yellow]

Ограничения для пятен

  • Пятно не может умереть - невозможно велеть пятну умереть.
  • Невозможно создать новое пятно. Пятно не может hatch. Однако, пятно может родить новую черепашку sprout или черепашку какой-то специальной породы sprout-breed - По команде sprout в данной точке появляется черепашка

Команды для пятен

clear-patches (cp)
Очистить, стереть все пятна и вернуть их в исходное значение - черный цвет
diffuse patch-variable number
значение переменной раздается на ближайших соседей - диффузия цвета, запаха на поверхности
diffuse4 patch-variable number
значение переменной раздается на 4-х соседей - ближайшие соседние точки по прямой
import-pcolors
считать цвета из файла - картинки
patch-at dx dy
пятно с координатами относительно данного агента
Например, ask patch 2 5 [set pcolor yellow ask patch-at 2 2 [set pcolor red]]
patch-left-and-ahead angle distance
пятно слева и сверху
patch-at-heading-and-distance
пятно по направлению и на расстоянии
ask patch-at-heading-and-distance -90 1 [ set pcolor green ]

Примеры команд и процедур с пятнами

Окрасить все пятна в зависимости от расстояния до центра
ask patches [set pcolor distancexy 0 0]
Покрасить точки вокруг центральной точки в зеленый цвет
ask patch 0 0 [set pcolor yellow ]
ask patch 0 0 [set pcolor yellow ask neighbors4 [ set pcolor green ]]
ask patch 0 0 [set pcolor yellow ask neighbors4 [ set pcolor green ask neighbors [set pcolor red] ]]
и так далее, если хотим перекрашивать соседей

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

Ненаправленные связи

Ненаправленные связи создаются командами к черепахам - create-link-with или create-links-with. Например,

  • ask turtle 0 [create-link-with turtle 1] - команда черепахе 0 создать связь с черепахой 1
  • ask turtle 0 [create-links-with other turtles] команда черепахе 0 создать связи со всеми другими черепахами
  • ask turtles [create-links-with other turtles] команда всем черепахам создать связи со всеми другими черепахами

Направленные связи:

  • create-links-from или create-link-from направленная связь других агентов к данному агенту
    • Например, ask turtle 0 [create-link-from other turtles]
  • create-link-to или create-links-to направленная связь от данного агента к другому или другим
    • ask turtle 0 [create-link-to other turtles]

Связи между породами

Породы NetLogo связываются такими же командами как и черепахи: create-<breed>-from, create-<breeds>-from, create-<breed>-to, create-<breeds>-to, create-<breed>-with, create-<breeds>-with

layout

Специально для того, чтобы улучшить видимость сети из узлов и связей в NetLogo появились процедуры layout:

layout-circle

  • layout-circle turtles radius - все черепашки выстраиваются по кругу заданного радиуса:
    • layout-circle turtles with [color = red] 5 - все красные черепашки в круг с радиусом 5

Layout-circle.png

layout-radial

  • layout-radial
    • layout-radial turtles links (turtle 0) - черепашки выстраиваются относительно корневого агента - указанного в скобках.

Пример процедуры:

 to clustC
let Centr max-one-of users [nw:betweenness-centrality]
layout-radial turtles links Centr
export-view (word "../sber_results/u325/clusters/" [who] of Centr ".png" )
ask Centr [die]
ask users with [count my-links = 0] [die]
end


Layout-radial.png

layout-tutte

to make-a-tree
 set-default-shape turtles "circle"
 crt 6
 ask turtle 0 [
   create-link-with turtle 1
   create-link-with turtle 2
   create-link-with turtle 3
 ]
 ask turtle 1 [
   create-link-with turtle 4
   create-link-with turtle 5
 ]
 ; place all the turtles with just one
 ; neighbor on the perimeter of a circle
 ; and then place the remaining turtles inside
 ; this circle, spread between their neighbors.
 repeat 10 [ layout-tutte (turtles with [link-neighbors = 1]) links 12 ]
end


repeat 10 [layout-tutte max-n-of 15 turtles [nw:betweenness-centrality] links 22]

Layout-tutte01.png

layout-spring

layout-spring - силовой алгоритм размещения

  • layout-spring turtle-set link-set spring-constant spring-length repulsion-constant
    • repeat 30 [ layout-spring turtles links 0.2 5 1 ] - черепахи, связи, жесткость связи (натяжение), естественная длина связи (которой стремиться достигнуть), сила отталкивания между узлами


layout-spring turtle-set link-set spring-constant spring-length repulsion-constant
layout-spring Группа_Черепах Группа_связей Сопротивление Естественная_длина_связи Сила_отталкивания_между узлами

Располагает черепах в черепаха-набор, как если бы ссылки в связи-наборе пружины и черепахи отталкиваются друг от друга. Черепахи, которые соединены ссылкам в связи-набор, но не включенные в набор черепахи рассматриваются как якоря и не переехал.

spring-constant
spring-constant - "натянутости" пружины. Это "сопротивление", к тому, чтобы изменить длину связи. Чем выше, тем большее усилие надо прикладывать
spring-length
естественная длина связи, которой стремятся достигнуть все связи
repulsion-constant
постоянная отталкивание - мерой отталкивания между узлами. Это сила, которую 2 узлов на расстоянии 1 будут оказывать друг на друга. Чем выше repulsion-constant тем сильнее узлы отталкиваются.

Например,

layout-spring turtle links 2 1 0.1
layout-spring turtle links 2 0.1 0.1 -
нужно прикладывать большое усилие, расстояние не велико и они слабо отталкиваются
layout-spring (turtles with [any? link-neighbors]) links 0.4 6 1
из одной библиотечной модели NetLogo - растаскивать на большую величину
layout-spring turtles links (1 / factor) (7 / factor) (1 / factor)
тот же примерно принцип - 1:7:1 соотношение для разделения узлов

Layout-spring.png

Команды связям

  • clear-links - уничтожить все связи
  • both-ends
    • ask link 0 1 [print both-ends]
  • die - умереть
  • hide-link - спрятать связь
  • in-<breed>-neighbor?
  • in-<breed>-neighbors
  • in-<breed>-from
  • in-link-neighbor? связан ли данный узел с данным узлом?
    • ask turtle 1 [show in-link-neighbor? turtle 2]
  • in-link-neighbors - все, кто связан с данным агентом направленными связями (к данному агенту)
    • ask in-link-neighbors [set heading [heading] of myself] Всем моим связанным соседям повернуться в ту же сторону, что и я
  • out-link-neighbors - все, кто связан с данным агентом направленными связями (от данного агента)
  • in-link-from
    • Возвращает связь, которая связывает агента с данной черепахой. Например,
      • ask turtle 0 [ create-link-to turtle 1 ] ask turtle 1 [ show in-link-from turtle 0 ]
  • is-directed-link? если связь направленная, возвращает true (иначе возвращает false)
  • is-link? если это связь, возвращает true
  • is-link-set?
  • is-undirected-link?
  • <breed>-neighbor?
  • <breed>-neighbors
  • <breed>-with
  • link-heading - направление связи
    • ask link 0 1 [ print link-heading ]
  • link-length
    • ask link 2 1 [ print link-length ]
  • link-neighbor?
  • link - связь. Обращение к связи.
    • Например - Ask link 0 1 [set color 15]
  • links обращение ко всем связям
    • ask links [set color 25]
    • Если мы хотим выделить группу связей - ask links with [link-length > 3] [set color 45]
    • ask links [ask both-ends [ask neighbors [set pcolor 5] ] ]
    • ask links with [link-length > 3 ] [ask both-ends [ask neighbors [set pcolor 15] ] ]
    • ask links with [link-length < 2 ] [ask both-ends [ask neighbors [set pcolor 25] ] ] - Здесь мы говорим связям, длина которых меньше или больше выбранного значения обратиться к черепашках на обоих концах и передать пятнам команду изменить цвет.
  • links-own
  • <link-breeds>-own
  • link-neighbors
  • link-with
  • my-<breeds>
  • my-in-<breeds>
  • my-in-links Возвращает все направленные ко мне связи
    • Например, я хочу всех черепах, которые связаны с данной направленными к ней связями что-то сделать
      • ask my-in-links [ask other-end [be_free]
  • my-links Возвращает все связи данного агента
    • Например, ask my-link [die] - а что еще можно сказать связям?
  • my-out-<breeds>
  • my-out-links мои направленные исходящие связи
  • no-links
  • other-end команда от черепашки к связи или связям. Связь передает другому узлу команду к исполнение
    • ask my-in-links [ask other-end [die]] или ask my-in-links [ask other-end [hatch]]
  • out-<breed>-neighbor?


Вопросы про связи

Как я могу узнать номер связи, чтобы к ней обратиться?
  • У связи нет номера. Связь характеризуется номерами узлов, которые она связывает. Мы можем попросить все связи подписать номера своих узлов
    • ask links [set label [who] of both-ends]
    • и теперь ask link 59 11 [show link-heading show link-length ]


Связать черепах с теми, кого она и произвела. Задача из проекта по по построению модели вики:
pages-own [history] ;
Свойство каждой страницы - список "история"
to write_page
rt random 10 lt random 10 fd 1
hatch 1
[ set breed pages set history lput [who] of myself [] ;
end


ask pages [create-link-to writer first history]

WkipageCreate051.png

В НетЛого есть команды, которые указывают агентам, что делать - переместиться, создать черепашку, установит связь и т.д. Обычно эти команды начинаются с глагола - die, jump, inspect


Процедуры можно создавать - в этом случае процедура начинается со слова To Имя_Процедуры и заканчивается словом End

Report

Кроме того, есть процедуры, которые получают на входе данные, обрабатывают эти данные и выдают результат. Эти процедуры обязательно начинаются со слова to-report и содержат команду вывода значения - report. Например:

to-report absolute-value [number]
 ifelse number >= 0
   [ report number ]
   [ report (- number) ]
end

Процедура получает число и возвращает его абсолютное значение.

Анонимные процедуры

С версии 6.0 в NetLogo появились анонимные процедуры


to logs_to_sociogram
ask patches [set pcolor 0]

 foreach edits [ [?1] ->  ;; это вызов  анонимной процедуры
   let friend1 item 0 ?1
   let p1 item 1 ?1
   let friend2 first first filter [ [??1] -> (p1 = item 1 ??1) and ("create" = item 2 ??1) ] wikilog
   if friend1 != friend2 [
   ask turtle friend1 [ create-friendbond-to turtle friend2 ]
   ]
   ]
 repeat 2 [layout-spring  turtles links 1 10 12 ]
end

См. Кнопки NetLogo/test_buttons.nlogo

Button

Кнопка - button - связана с процедурой на странице Procedures. Когда создается кнопка, мы можем указать какому из агентов она отдает указание:

  • Обозреватель
  • Черепахи
  • Пятна
  • Связи

Имя команды и имя кнопки на экране могут не совпадать. Например, мы можем создать процедуру setup и на экране задать имя кнопки - "Начнем"

Если кнопка создана и для нее еще нет процедуры, то кнопка окрашена в красный цвет.

to setup
ca
cro 50 [fd 5]
end

Создадим себе первую процедуру. В этой процедуре у нас создаются 50 черепашек.

Slider

Следующая кнопка - рычажок - slider - меняя положение рычажка можно изменять параметры модели. Например, мы хотим, чтобы число можно было при помощи этой кнопки менять число черепах. Рычажок задает имя глобальной переменной и может содержать только латинские буквы. Здесь же указывается интервал, в котором изменяются значения. Например, от 1 до 500


to setup
ca
cro num_turtles [fd 5]
end


Switch

Переключает положение для глобальной переменной. Это значение пользователь на экране может поставить в положение ON/OFF

to setup
ca
cro num_turtles [fd 5]
ifelse green? [ask patches [set pcolor green]]
[ask patches [set pcolor pxcor]]
end

Здесь показано использование кнопки для организации ветвления. Если переменная green? включена, то пятна экрана окрашиваются в зеленый цвет. Если значение переменной отключено, то пятна окрашиваются в другие цвета. В примере показано, как мы можем окрасить пятно в цвет, выбрав значение цвета из координат этого пятна.


 to setup
ca
cro num_turtles [fd 5]
ifelse green? [ask patches [set pcolor green]]
[ask patches [
if pycor != 0
[set pcolor pxcor / pycor] ]]
end

Chooser

Выбор значения глобальной переменной. Переключатель задает имя глобальной переменной и может содержать только латинские буквы. В этом примере мы создаем tcolor и указываем значения, которые может принимать tcolor - 5, 15, 25, 35, 45. Создадим еще одну кнопку, которая будет проверять цвет черепашки. Теперь жизни черепашек в наших руках. Все, чей цвет меньше выбранного, при нажатии кнопки go будут погибать.

to go
ask turtles with [color < tcolor] 
[die]
end

Input

Кнопка позволяет пользователю вводить или выбирать значение. Например, создадим кнопку incolor, в которой можно изменять или выбирать значение цвета. Создадим еще и кнопку "Новые черепахи" и свяжем ее с процедурой hatch_new

to hatch_new
ask turtles with [color = incolor]
[hatch 2 [rt random 90 fd 2]]
end

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

Monitor

Окно, в котором показывается выбранное значение. Например, мы создаем monitor, который показывает общую численность всех черепах - count turtles.

Plot

Окно, в котором в виде графика отражаются численные значения.

to hatch_new
ask turtles with [color = incolor]
[hatch 2 [rt random 90 fd 2]]
set-current-plot "Trt"
plot count turtles with [color = incolor]
end

NetLogo/Files

File-Open

file-open - открыть файл
file-open "task_7.txt"
while [ not file-at-end? ] [ set wikihistory lput read-from-string (word "[" file-read-line "]") wikihistory]
file-close

Открыли файл и считали все его содержимое построчно в список с именем wikihistory

Read-from-string

Пример - file-exists? file-open file-at-end? file-read-line
   ifelse ( file-exists? "profile.txt" )
  [     file-open "profile.txt"
       while [ not file-at-end? ]     [ 
         let author read-from-string (word "[" file-read-line "]")  
         ask one-of users with [agentname = item 0 author]
         [
           set FullName item 1 author
           set TB item 2 author
           set OSB item 3 author
           set Block item 4 author
         ] 
         ]
   file-close
   user-message "Готово!"
    ]
    [ user-message "profile.txt нет такого файла!" ]


File-Print

 file-open "losted_sch.txt"
 foreach reverse sort-on [norm-betweenness] users [file-print (se ? [norm-betweenness] of ? [agentname] of ?)]
file-close

user-new-file

file-open user-new-file

= Export-view

to clustC
let Centr max-one-of users [nw:betweenness-centrality]
layout-radial turtles links Centr
export-view (word "../sber_results/u325/clusters/" [who] of Centr ".png" )
ask Centr [die]
ask users with [count my-links = 0] [die] 
end



NetLogo/GIS

За последние годы географические информационные системы (ГИС) изменили нашу жизнь. Google Maps, Earth и десятки других веб-служб сделали прорыв в сервисах-локаторах. Наши мобильные телефоны позволяют через GPRS определять местонахождение их владельцев.

Последние версии NetLogo включили расширения ГИС-расширение. Несмотря на свою простоту, это расширение создает одну из самых доступной ГИС-систем, которые мы знаем.


ARGIS
http://ru.wikipedia.org/wiki/ArcGIS
http://www.dataplus.ru/Soft/ESRI/ArcGIS/ArcGIS.htm

Литература

  1. http://pan1950.wordpress.com/2010/10/05/netlogo-gis/
  2. Агент-ориентированное моделирование природных пожаров. Динамика эвакуаций
    • Разработчики данной модели считают что лучшее, что можно сделать в борьбе с пожарами это планирование, выполнение различных сценариев и поиск общих закономерностей заторов на дорогах. Визуализация возможных сценариев пожаров были очень эффективны для повышения информированности общественности и служат фоном для дискуссий с участием трудных решений, стоящих перед сообществом.
  3. http://www.turtlezero.com/wiki/doku.php?id=guide:gis#how_is_gis_data_represented_in_netlogo
  4. http://www.geosimulation.org/papers/2010-Torrens-Geography-Compass-agent-based-models-and-the-spatial-sciences.pdf

NetLogo/NW

Сетевое расширение NetLogo - The NetLogo NW Extension for Network Analysis

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

  • breed [ bankers banker ]
  • breed [ clients client ]
  • directed-link-breed [ accounts account ] - Клиенты могут иметь счета у банкиров. Банкиры, вероятно, могут иметь счет у других банкиров.
  • undirected-link-breed [ friendships friendship ]


Если мы хотим рассматривать ситуацию как одну большую сеть, то никаких специальных действий совершать не нужно - по умолчанию расширение рассматривает всех черепах и все ссылки между черепахами как одну общую сеть. Но нас могут интересовать подмножества сети. Может быть, нас интересуют только дружеские отношения. Кроме того, может быть, мы хотим изучить только дружеские отношения между банкирами, поскольку тот, у кого высокая степень центральности в дружеской сети банкиров, будет заметно отличаться от человека с высокой степенью центральности в дружеской сети клиентов. В конце концов, имеющий высокую центральную дружбу в сети банкиров, будет очень отличаться от имеющего высокую центральную дружбу в клиентской сети. И для работы с такими подмножествами агентов и связей как раз и разработано "сетевое расширение NetLogo".

А если мы хотим исследовать ситуацию совместной деятельности, то у нас будут отношения между людьми, опосредованные объектами, к которым люди обращаются. И это дает нам возможность рассматривать одну и ту же систему и получать данные для этой системы не изменяя ее внешний вид. Т.е. мы можем не удалять каких-то участников, а просчитывать разные показатели центральности и коэффициенты кластеризации для разных условий. Т.е. мы просто разные агенты и разные связи принимаем во внимание. И тут открывается простор для экспериментов - в рассматривании сети в разных контекстах.


Примеры с совместной деятельностью

  • breed [users user] ; - у нас есть участники
  • breed [pages page] ; - у нас есть объекты, которые создают, редактируют, комментируют, оценивают ... в зависимости от контекста
  • undirected-link-breed [bonds bond] ; - связи создания
  • undirected-link-breed [votebonds votebond] ; - голосование
  • undirected-link-breed [comments comment] ; - комментирования
  • undirected-link-breed [uulinks uulink] ; это в том случае, если нам нужны прямые связи "участник - участник" (можно указать от кого к кому?)
  • undirected-link-breed [pplinks pplink] ; связи между страницами


Установление контента

У нас есть сеть, состоящая из множества агентов и связей и мы можем не нарушая этих связей вытащить только те отношения, которые нам интересны

  • nw:set-context turtle-set users with  ;; только те, кто входит в список
  • nw:set-context (turtle-set users with [member? agentname map [first ?] user_list ] pages ) (link-set bonds editbonds)

Вытаскивание групп участников для установления контента

  • ask users with [hidden? = false] [show who] - вся спрятавшиеся юзеры
  • ask users with [member? agentname map [first ?] user_list ] [set size 3]

Примеры

Сообщество NetLogo в сети

В сети существует сообщество пользователей, которые обмениваются моделями, написанными на языке NetLogo. Адрес сообщества - http://ccl.northwestern.edu/netlogo/models/community/

Что можно делать в этом сообществе:

  • Прочитать описание модели, ее назначение, принципы, которые лежат в основании
  • Посмотреть выполнение программы в сети. Для этого достаточно просто запустить программу в своем браузере. Java-applet отработает и покажет в отдельном окне как работает модель
  • Скачать модель и запустить на своем компьютере.
  • Внести в модель изменения и использовать готовые процедуры, взятые из чужой модели внутри своих собственных программ.
  • Загрузить свою собственную модель на общедоступный сервер http://ccl.northwestern.edu/netlogo/upload.shtml и предложить ее к обсуждению и совместному использованию.

Достаточно часто встречается формулировка - данная модель является продолжением или развитием модели - далее следует ссылка на предшествующую модель и имя её автора.

Некоторые модели NetLogo позволяют изучать процессы, кооперации, формирования сообществ и процессы совместного обучения:

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

Близкие по стилю организации сообщества:

Литература

Artificial Intelligence—Agents and Environments http://bookboon.com/us/textbooks/it/artificial-intelligence-agents-and-environments
Artificial Intelligence: Exercises I - Agents and Environments http://bookboon.com/us/textbooks/it/artificial-intelligence-exercises-i
Artificial Intelligence: Exercises II - Agent Behaviour I http://bookboon.com/us/textbooks/it/artificial-intelligence-exercises-ii
Изучение сетевых и общественных феноменов с помощью черепашек
Патаракин, Ярмахов
SIMULATION FOR THE SOCIAL SCIENTIST - http://cress.soc.surrey.ac.uk/s4ss/ - книга с многочисленными примерами социальных систем, написанными и на NetLogo
Abrahamson, D., Blikstein, P., & Wilensky, U. (2007). Classroom Model, Model Classroom
Computer-Supported Methodology for Investigating Collaborative-Learning Pedagogy. Proceedings of the Computer-Supported Collaborative Learning conference, New Brunswick, NJ. http://ccl.northwestern.edu/papers/2007/abr-cscl.pdf
Blikstein, P., Abrahamson, D., & Wilensky, U. (2007). Multi-agent simulation as a tool for investigating cognitive-developmental theory. Paper presented at the 2007 annual meeting of the American Educational Research Association, Chicago, IL, April 9-13. http://ccl.northwestern.edu/papers/2007/NU%20CCL%20AERA%202007%20Piaget%20Conservation%20Paper%20v8.pdf
Blikstein, P., & Wilensky, U. (2008). Implementing multi-agent modeling in the classroom
Lessons from empirical studies in undergraduate engineering education. In G. Kanselaar, J. van Merriënboer, P. Kirschner & T. de Jong (Eds.), Proceedings of the International Conference for the Learning Sciences, ICLS2008 (Vol. 3, pp. 266-273). Utrecht, The Netherlands: ISLS. http://ccl.northwestern.edu/papers/2008/Blikstein&Wilensky_MultiAgent.pdf
Класс рассматривается как мультиагентная система, в которой множество учеников в процессе решения общей задачи.
Blikstein, P., Abrahamson, D., & Wilensky, U. (2008, March). Groupwork as a complex adaptive system
A methodology to model, understand, and design classroom strategies for collaborative learning. Paper presented at the annual conference of the American Education Research Association, New York, NY.
Blikstein, P., Abrahamson, D., & Wilensky, U. (2008). The classroom as a complex adaptive system
An agent-based framework to investigate students' emergent collective behaviors. In G. Kanselaar, J. van Merriënboer, P. Kirschner & T. de Jong (Eds.), Proceedings of the International Conference for the Learning Sciences, ICLS2008 (Vol. 3, pp. 312-313). Utrecht, The Netherlands: ISLS. http://ccl.northwestern.edu/papers/2008/Blikstein,etAl_ClassroomComplex.pdf
Kornhauser, D., Rand, W., & Wilensky, U. (2007). Visualization Tools for Agent-Based Modeling in NetLogo. Paper presented at Agent2007, Chicago, November 15-17. http://ccl.northwestern.edu/papers/2009/Kornhauser,Wilensky&Rand_DesignGuidelinesABMViz.pdf
С отличными примерами визуализаций моделей Netlogo и ссылками на Маэда. Классификация визуализаций: клеточные автоматы, Физические процессы, фракталы, геометрические фигуры.
Stonedahl, F., Rand, W., & Wilensky, U. (2008, May). Multi-agent learning with a distributed genetic algorithm
Exploring innovation diffusion on networks. Paper presented at the Seventh International Conference on Autonomous Agents and Multi-agent Systems (AAMAS), Estoril, Portugal. http://ccl.northwestern.edu/papers/2008/Stonedahl,Rand&Wilensky_MultiAgentLearning.pdf
Wilensky, U., & Rand, W. (2007). Making models match
Replicating agent-based models. Journal of Artificial Societies and Social Simulation (JASSS), 10(4). http://jasss.soc.surrey.ac.uk/10/4/2.html

Персональные инструменты
Инструменты