NetLogo
Для какого возраста предназначен язык | 12, 13, 14 |
---|---|
Компетенции в каких сферах формирует | Empowered Learner, Innovative Designer, Computational Thinker, Creative Communicator, Global Collaborator |
Purpose | Язык общего назначения |
Visual_Text_Blocks | Текст |
Dimension | 2D |
Openness | Открытый |
Address | https://netlogoweb.org/ |
Ancestors | StarLogo |
Descendants | StarLogo Nova |
ActiveNow | Project is active |
Remixing? | Yes |
Год создания | 1999 |
Inventor | Виленский |
Содержание
- 1 Введение
- 2 Интерфейс Netlogo
- 3 Интерфейс Netlogo
- 4 Связи NetLogo
- 5 Кнопки NetLogo
Введение[править]
NetLogo является продолжением языка Лого - первого языка, созданного еще в 1968 году объединенными усилиями Массачусетского Технологического Института и корпорации BBN (Bolt Beranek & Newman) с целью обучать детей при помощи компьютера. Создан Ури Виленским в 1999 году и развивается в Center for Connected Learning and Computer-Based Modeling.
- Домашняя страничка проекта http://ccl.northwestern.edu/netlogo/ . Здесь же можно скачать последнюю версию языка. (2021 - 6.2.0)
- Обсуждения происходят в конференции пользователей - http://groups.yahoo.com/group/netlogo-users
В отличие от конференции StarLogo, ориентированной на учителей, конференция и сам продукт NetLogo более тяготеет к исследовательской аудитории и преподавателям ВУЗов.
Среда программирования NetLogo служит для моделирования ситуаций и феноменов, происходящих в природе и обществе. NetLogo удобно использовать для моделирования сложных, развивающихся во времени систем. Создатель модели может давать указания сотням и тысячам независимых "агентов" действующим параллельно. Это открывает возможность для объяснения и понимания связей между поведением отдельных индивидуумов и явлениями, которые происходят на макро уровне.
Язык NetLogo достаточно прост и ученики и учителя могут создавать в этой среде свои собственные авторские модели. В то же время это достаточно мощный язык и среда для проведения исследовательских работ. Библиотека NetLogo содержит множество готовых моделей по биологии, математике, химии, социология. С этими моделями могут ознакомиться и поиграть ученики.
Возможности языка достаточно подробно документированы и по NetLogo существует подробное руководство. К сожалению пока только на английском языке. Язык распространяется вместе с большой библиотекой моделей, которые можно использовать и модифицировать. Для НетЛого повторное использование и дальнейшее развитие моделей даже более естественно, чем для среды Scratch, поскольку все модели хранятся в текстовых файлах. Модели NetLogo: естественные и общественные науки, физика, химия, математика, информатика, экономика, социальная психология.
- Руководство по среде НетЛого на сайте создателей языка
- http://ccl.northwestern.edu/netlogo/faq.html
Интерфейс Netlogo[править]
Интерфейс Netlogo
- Interface - область, где мы исследуем свойства модели. В центре черное по умолчанию поле, на котором взаимодействую черепашки - turtles, пятна - patches и связи черепашек - links. На рабочее поле мы можем добавлять различные кнопки, переключатели. Кнопки привязываются к именам процедур.
- Information - описание модели. Здесь авторы модели рассказывают - о чем модель, как она устроена, какие особенности, как можно использовать и развивать модель.
- Procedures - область, где записываются процедуры NetLogo, управляющие поведением агентов - см. агенты NetLogo.
Как правило, в моделях НетЛого присутствуют 2 главные кнопки:
- setup - и с ней связана процедура setup - очистить экран, удалить всех агентов, создать агенты, необходимые для работы модели.
- go - запуск модели.
В нижней части экрана расположена строка observer - наблюдатель, который может давать команды NetLogo всем существующим в системе объектам.
Черепашки 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
Пятна 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 такие же агенты как черепахи 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-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-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-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 соотношение для разделения узлов
Команды связям[править]
- 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
Процедуры NetLogo[править]
В НетЛого есть команды, которые указывают агентам, что делать - переместиться, создать черепашку, установит связь и т.д. Обычно эти команды начинаются с глагола - 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[править]
Кнопки NetLogo
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[править]
NetLogo/GIS[править]
За последние годы географические информационные системы (ГИС) изменили нашу жизнь. Google Maps, Earth и десятки других веб-служб сделали прорыв в сервисах-локаторах. Наши мобильные телефоны позволяют через GPRS определять местонахождение их владельцев.
Последние версии NetLogo включили расширения ГИС-расширение. Несмотря на свою простоту, это расширение создает одну из самых доступной ГИС-систем, которые мы знаем.
Программное обеспечение для обработки данных для NetLogo[править]
Литература[править]
- http://pan1950.wordpress.com/2010/10/05/netlogo-gis/
- Агент-ориентированное моделирование природных пожаров. Динамика эвакуаций
- Разработчики данной модели считают что лучшее, что можно сделать в борьбе с пожарами это планирование, выполнение различных сценариев и поиск общих закономерностей заторов на дорогах. Визуализация возможных сценариев пожаров были очень эффективны для повышения информированности общественности и служат фоном для дискуссий с участием трудных решений, стоящих перед сообществом.
- http://www.turtlezero.com/wiki/doku.php?id=guide:gis#how_is_gis_data_represented_in_netlogo
- 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 в сети[править]
Критика NetLogo[править]
- there are more limitations than advantages with NetLogo in comparison to AnyLogic http://justinlyonandsimulation.blogspot.com/2006/08/netlogo-vs-anylogic.html
Литература[править]
- 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
- http://files.bookboon.com/ai/ - примеры NetLogo
- Изучение сетевых и общественных феноменов с помощью черепашек
- Патаракин, Ярмахов
- 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