WikiAnalytics
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
Это средство для представления историй создания и редактирования вики страниц в форме действий, которые совершают агенты NetLogo. Для представления центральности узлов используется метод layout-spring (a general understanding of what the model is trying to show or explain)
HOW IT WORKS
(what rules the agents use to create the overall behavior of the model) В системе определены следующие породы: авторы, страницы, связи. Свойства авторов - Имяавтора. Свойство страницы - ИмяСтраницы На входе модель получает историю редактирований вики в форме строк: "ИмяАвтора" "ИмяСтраницы" и обрабатывает значение этой пары. Правила обработки просты. Проверятся существование автора с указанным именени и страницы с указанным именем. 1) Если автора (user) и страницы (page) с такими именами еще не существуют, то создается автор (со свойством "ИмяАвтора") и этот автор создает страницу (со свойством "ИмяСтраницы"), и автор создает направленную связь (bond) к странице. Значение edits для данной связи устанавливается 1. 2) Если автор с таким именем уже был, а страницы еще не было, то этот автор создает страницу (со свойством "Имя_Страницы"), и автор создает направленную связь (bond) к странице. Значение edits для данной связи устанавливается 1. 3) Автора еще не было, а страница уже была. В этом случе страница создает автора и направленную связь от автора к странице. Значение edits для данной связи устанавливается 1. 4) В системе есть и автор и страница с указанным именем. 4.1. Если связи между автором и страницей еще не было то связь создается. Значение edits для данной связи устанавливается 1. 4.2. Если связь уже существовала, то значение edits для данной связи увеличивается на единицу. После каждой обработки строки делается новое визуальное представление отношений между узлами в системе.
HOW TO USE IT
(how to use the model, including a description of each of the items in the Interface tab) startup - сбрасывает все данные и очищает экран loaddata - загружает и данные из файла - в дальнейшем будет развиваться именно этот вариант. uselist- в демоверсии можно использовать заранее подготовленный список авторов и страниц. generate_list - список авторов и страниц генерируется программой - тут просто случайные значения присваиваются участникам и страницам, но можно выбирать значение авторов и страниц, которые будут действовать в системе.
THINGS TO NOTICE
Это продолжение обсуждения темы центральности - чем больше связанность объекта, тем более центральное положение он занимает.
THINGS TO TRY
Можно посмотреть зависимость связанности системы от числа авторов. Но, в целом система предназначена для представления данных из реально действующей вики.
EXTENDING THE MODEL
Доработать предварительную обработку данных на входе в модель. Дополнить модель новыми параметрами. Например, выделить автора страницы - не просто того, кто принял участие в редактировании, но был первым создателем этой страницы.
NETLOGO FEATURES
В модели практически не используются списки и не хранятся данные. Каждый раз проверяется группа агентов, обладающих сходными свойствами.
RELATED MODELS
http://modelingcommons.org/browse/one_model/3401
CREDITS AND REFERENCES
(a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links)
Comments and Questions
extensions [nw] breed [users user] ; breed [pages page] ; undirected-link-breed [bonds bond] ; users-own [agentname] ; pages-own [pagename] ; bonds-own [edits] ; to startup clear-all ; set-default-shape users "person" ; set-default-shape pages "box" ; end ;; to load_data ifelse ( file-exists? "user_page_u.txt" ) [ file-open "user_page_u.txt" while [ not file-at-end? ] [ visual list file-read file-read ] file-close user-message "Готово!" ] [ user-message "user_page_u.txt нет такого файла!" ] end to use_list let wikihistory [ ["Ученик_1" "Страница_1"] ["Ученик_1" "Страница_2"] ["Ученик_1" "Страница_3"] ["Ученик_1" "Страница_2"] ["Ученик_1" "Страница_3"] ["Ученик_2" "Страница_3"] ["Ученик_3" "Страница_3"] ["Ученик_4" "Страница_4"] ["Ученик_5" "Страница_5"] ["Ученик_6" "Страница_6"] ["Ученик_2" "Страница_6"] ["Ученик_2" "Страница_7"] ["Ученик_2" "Страница_1"] ["Ученик_1" "Страница_1"] ["Ученик_1" "Страница_1"] ["Ученик_4" "Страница_4"] ["Ученик_4" "Страница_4"] ["Ученик_7" "Страница_8"] ["Ученик_7" "Страница_9"] ["Ученик_7" "Страница_9"] ["Ученик_7" "Страница_8"] ["Ученик_8" "Страница_9"] ["Ученик_8" "Страница_8"] ] foreach wikihistory [visual ?] ; end to generate_list let wikihistory generate "User" "Page" ; foreach wikihistory [visual ?] ; end to-report generate [a b] let glist [] ; repeat g_agents + g_pages [ set glist lput list word a (1 + random g_agents) word b (1 + random g_pages ) glist ; ] report glist end to visual [flist] let agent_name first flist ;; это мы просто считали имена агентов и страниц let page_name last flist ;; если у нас нет страницы и нет юзера ; ifelse (not any? users with [agentname = agent_name]) and (not any? pages with [pagename = page_name]) [ create-ordered-users 1 [ set size 1.4 set color red set agentname agent_name ; ; set label agentname ; hatch-pages 1 [ set pagename page_name set color green create-bond-with myself ; ask bond [who] of myself [who] of self [set edits 1 ] ] ; ] ] ;; Не было юзера, а страница уже была - т.е. появляется автор и его действие - редактирование существующего [ ifelse (not any? users with [agentname = agent_name]) and (any? pages with [pagename = page_name]) [ let myfirstpage [who] of one-of pages with [pagename = page_name] ; ask page myfirstpage [hatch-users 1 [ set color red set agentname agent_name ; set label agentname create-bond-with myself ; ask bond [who] of self myfirstpage [set edits 1 ] ] ] ] ;; у нас есть юзер, но нет страницы [ ifelse (any? users with [agentname = agent_name]) and (not any? pages with [pagename = page_name]) [ let author [who] of one-of users with [agentname = agent_name] ; ask user author [hatch-pages 1 [ set color green set pagename page_name ; set label pagename create-bond-with myself ask bond author [who] of self [set edits 1] ] ; ] ] ;; Ситуация, когда есть и пользователь и страница - и там варианты с тем, что есть связь или нет связи [ let author [who] of one-of users with [agentname = agent_name] ; let mypage [who] of one-of pages with [pagename = page_name] ; ifelse is-link? bond author mypage [ask bond author mypage [set edits edits + 1 ] ] [ask user author [create-bond-with page mypage] ask bond author mypage [set edits 1] ] ] ]] layout end to analytics nw:set-context turtles bonds ; show map sort nw:get-context ;; ask turtles [set label round nw:betweenness-centrality ] ask turtles [set label nw:eigenvector-centrality ] ;; - только для связанной сети ;; ask turtles [set label nw:closeness-centrality ] ;; ask turtles [set label nw:clustering-coefficient ] ask turtles [set label nw:bicomponent-clusters ] ;;show global-clustering-coefficient ;; show nw:weak-component-clusters ;;show nw:maximal-cliques ;; - не работает ;; show nw:biggest-maximal-cliques end to layout repeat 3 [ ;; layout-spring turtles links 0.18 0.01 1.2 layout-spring turtles links 0.2 0.01 1.4 display ] end to show_names ask users [ set label agentname] ask pages [set label pagename] ask bonds [set label edits] ask turtles [set label-color orange] end to-report global-clustering-coefficient let closed-triplets sum [ nw:clustering-coefficient * count my-links * (count my-links - 1) ] of turtles let triplets sum [ count my-links * (count my-links - 1) ] of turtles report closed-triplets / triplets end
There are 2 versions of this model.
Attached files
File | Type | Description | Last updated | |
---|---|---|---|---|
WikiAnalytics.png | preview | Preview for 'WikiAnalytics' | over 11 years ago, by Evgeny Patarakin | Download |