首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网络标识模型的扩散与社会效用函数

网络标识模型的扩散与社会效用函数
EN

Stack Overflow用户
提问于 2022-06-09 13:18:03
回答 1查看 86关注 0票数 0

我正在写一个关于思想在加权有向图上传播的网络标志模型。主要的概念是传播红色的想法:代理的重量超过0.5将变成红色。我还需要绘制一个实用程序函数,我正在考虑这样做:

plot sum [p] of turtles with [color = red] * sum [weight] of links with [color = red and weight > 0.5] / (sum [p] of turtles * sum [weight] of links with [weight > 0.5])

例如,每个代理的所有实用价值之和(p * w)。然而,我认为这是相当静态的,我需要一些建议。我想用一种更好的方法来增加p的值,增加每只海龟从一只红海龟那里得到的加权值,或者通过减去每只海龟从一只灰海龟那里得到的加权值来降低p的值。

有人能帮我实现这一点吗?

代码语言:javascript
复制
extensions [nw] ;network extention
breed [group g] ;turtles are called group
directed-link-breed [influences inf] ;directed link are called influences
links-own [weight] ;weight of directed link, related to links only
group-own [p] ;probability to take or not red idea, related to turtles only

SETUP

;generation of the "real world" networks

to setup-pa ;generate preferential-attachment network
  ca
  nw:generate-preferential-attachment group influences members 1 [
    set color grey
    setxy random-xcor random-ycor
    set shape "person"
    set size 2]
  assign-weight
  assign-p
  reset-ticks
end

to setup-small-world ;generate small-world network
  ca
  nw:generate-watts-strogatz group influences members 1 1 [
    set color grey
    setxy random-xcor random-ycor
    set shape "person"
    set size 2]
  assign-weight
  assign-p
  reset-ticks
end

to setup-random ;generate random network
  ca
  nw:generate-random group influences members 1 [
    set color grey
    setxy random-xcor random-ycor
    set shape "person"
    set size 2]
  assign-weight
  assign-p
  reset-ticks
end

to assign-weight ;assign random-float weight to links in a range from 0 to 1
  ask influences [set weight random-float 1 ]
end

to assign-p ;assign probability to agents (0 or 1)
  ask group [set p random 2]
end


EXPERIMENT

to behavior
  ask turtles with [p = 0] [ ;asking members with p = 0 and with out-links' weight > 0.5 to spread grey colour
    set color grey
    ask my-out-links with [weight > 0.5] [set color grey ask end2 [set color grey]]]
    ask turtles with [p = 1] [ ;asking members with p=1 and with out-links' weight > 0.5 to spread red idea
    set color red
    ask my-out-links with [weight > 0.5] [set color red ask end2 [set color red]]]
  tick
end

enter code here
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-10 18:39:59

代码语言:javascript
复制
Excuse the sloppy code, I'm sick. I changed the behavior block

对符号输入之和,ala神经网络。对于100个成员和随机种子12345,稳定需要5个步骤。许多调试行,很抱歉它是如此草率,但它运行。

韦德

代码语言:javascript
复制
extensions [nw] ;network extention
breed [group g] ;turtles are called group
directed-link-breed [influences inf] ;directed link are called influences
links-own [weight] ;weight of directed link, related to links only
group-own [p oldsum] ;probability to take or not red idea, related to turtles only

;;SETUP
globals [ changing   ]

;; stopping conditons
to setcounts
  set changing true
  set members 100  ;; if not in a slider
end


to setseed
  ;; for members = 100 and seed = 12345 we get diffusion for 5 ticks
  random-seed 12345
end

to setup-pa ;generate preferential-attachment network
  ca
  setseed
  setcounts
  nw:generate-preferential-attachment group influences members 1 [
    set color grey
    setxy random-xcor random-ycor
    set shape "person"
    set size 2]
  assign-weight
  assign-p
  reset-ticks
end

to setup-small-world ;generate small-world network
  ca
  setseed
  setcounts
  nw:generate-watts-strogatz group influences members 1 1 [
    set color grey
    setxy random-xcor random-ycor
    set shape "person"
    set size 2]
  assign-weight
  assign-p
  reset-ticks
end

to setup-random ;generate random network
  ca
  setseed
  setcounts
  nw:generate-random group influences members 1 [
    set color grey
    setxy random-xcor random-ycor
    set shape "person"
    set size 2]
  assign-weight
  assign-p
  reset-ticks
end

to assign-weight ;assign random-float weight to links in a range from 0 to 1
  ask influences [set weight ( round (1000 * random-float 1) / 1000) ]   ;; avoid tiny variations
end

to assign-p ;assign probability to agents (0 or 1)
  ;;;;;;;; default color grey
  ask group [set p random 2  ]

  ;;;;;;; added next lines.  Change p to +1 or -1
  ask group [ if (p = 1) [ set color red ]  ]
  ask group [ if (p = 0) [ set p -1 set color grey]]
end


;;EXPERIMENT
;; change influence going OUTWARD to influence coming INWARD
;; change single link weights as determinants to SUM of link weights as determinants, as in a neural net

to go
  if (changing = false) [ print "no longer changing, so stopping." stop]
  if (ticks > 20) [stop]

  set changing  false
  print (word "=================== tick # " ticks " =====================================")
  ask links [ set label round (100 * weight) set thickness (weight) ]
  ask links [ if [color = red ] of end1 [set color red ]]
  ask turtles   [
     ;;print (word "\n ------ " who "-----")
     let summer 0
     ask my-in-links [


         ;;;;; let netweight ( weight * [ p value of end1 ]
         let netweight ( weight * ( [ p ] of end1 )  )
         set summer ( summer + netweight)
         ;;show summer
    ]
     set oldsum precision oldsum 3
     set summer precision summer 3

    if  (oldsum != summer) [   set changing true ]
       if  (oldsum != summer) and (ticks > 2)  [ print (word who "..CHANGED SUM, was " oldsum ", now " summer )
        set changing true ]
    set oldsum summer
    let oldcolor color
    (ifelse
         (summer > 0.3)  [ set p  1  set color red
                            if ( color != oldcolor) [ print (word who " turned red") ]
                         ]
         (summer < -0.3) [ set p -1  set color grey
                            if ( color != oldcolor) [ print (word who " turned grey") ]
                          ]
         ;; otherwise, do nothing
    )

  ]



  tick
end

;;enter code here
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72560996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档