问:需要帮助在网络中传播危机

时间:2016-03-05 07:02:03

标签: netlogo

我创建了一个代理商网络,每个代理商都有GDP值和GDP增长率。代理与非直接链接互连。

我做了一个倒计时,每200个刻度随机分配一个“震动状态”'到10个代理商。当代理商受到冲击时,它会在危机中获得价值吗? =真'并因此使其GDP增长率发生变化。

但是,我想添加第二个触发器。我希望代理商处于“危机中”? = false'检查他们的链接邻居,看看他们中是否有人处于危机中? = true'。如果他们与陷入危机的代理人有关,那么他们应该检查自己的国内生产总值是否小于处于危机中的联系国家的国内生产总值的一半? = true'。如果它更小,那么代理商将设置他自己的“危机”?'是的。

to shock 
  if ticks mod 200 = 0 [ ;; This is the countdown 
  spread-crisis
  ask n-of 10 turtles [  
  become-in-crisis]
  ]
end

to spread-crisis  ;;;;;;;;;;;;;;;; This is the second trigger. I need help here!
  ask turtles with [in-crisis? = false]
    [ if any? link-neighbors with [in-crisis? = true] [
        if any? link-neighbors with [gdp > my-gdp] [
         become-in-crisis ] ]]
end

to-report my-gdp
 report (gdp * 2) 
end

to become-in-crisis
  set in-crisis? true
  let random-years-of-shock 20 + random 100
  set shock-tick random-years-of-shock
end

如果你有时间,请帮我调整传播危机程序!

谢谢

1 个答案:

答案 0 :(得分:1)

my-gdp更改为[my-gdp] of myself

to spread-crisis 
  ask turtles with [not in-crisis?]  [
    if any? link-neighbors with [in-crisis? and gdp > [my-gdp] of myself] [
      become-in-crisis
    ] 
  ]
end