Связи NetLogo

Материал из Letopisi.Ru — «Время вернуться домой»
Перейти к: навигация, поиск

Связи в 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 turtles radius - все черепашки выстраиваются по кругу заданного радиуса:
    • layout-circle turtles with [color = red] 5 - все красные черепашки в круг с радиусом 5
  • layout-radial
    • layout-radial turtles links (turtle 0) - черепашки выстраиваются относительно корневого агента - если есть родительская черепаха
  • layout-tutte turtle-set link-set radius
    • layout-tutte (turtles with [count link-neighbors = 1]) links 12
  • layout-spring turtle-set link-set spring-constant spring-length repulsion-constant
    • repeat 30 [ layout-spring turtles links 0.2 5 1 ] - черепахи, связи, жесткость связи (натяжение), естественная длина связи (которой стремиться достигнуть), сила отталкивания между узлами

layout-spring

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
Персональные инструменты
Инструменты