【问题标题】:NetLogo - calculate the difference of a variable of neighbouring agentsNetLogo - 计算相邻代理变量的差异
【发布时间】:2019-02-11 18:50:07
【问题描述】:

我想让每个代理向他们的邻居询问他们的乌龟拥有变量的值,并根据他们的差异设置它们。

我知道如何为距离做到这一点:

if (any? other turtles-here)
  [
    ask neighbors [ ;; ask 8 neighbors / neighbors4 for 4
      ;if (max-one-of turtles [distance myself]) <= 3
      ;[set opinion opinion - .1] ; no change in opinion
      ;if (distancexy point1-pxcor point1-pycor) > 20 and (distancexy point1-pxcor point1-pycor) <= 50
      ;[set point1-location "middle"]
      ;if (distancexy point1-pxcor point1-pycor) > 50
      ;[set point1-location "far"]
    ]

但是,我很难实现它以交换价值。我如何做到这一点?

这是我的 MWE。

请注意,有问题的代码部分是伪代码。

breed [ turtles ]
turtles-own [ variable ]

to setup
  clear-all
  create-turtles 100
  [
    set variable random-float 10
  ]
  reset-ticks
end

to communicate
  if (any? other turtles-here)
  [
    ask neighbors [
      pseudo-code: if difference of your variable and my variable is bigger then 3, than do nothing
      if differences less then 3, calculate the higher variable minus 0.1 and the lower variable plus 0.1
      if difference less then 2, calculate the higher variable minus 0.3 and the lower plus 0.3
      if difference less then 1, calculate the arithmetical mean
    ]
  ]

end

to go
  ask turtles [
    rt random 360
    fd 1
    communicate
  ]
  tick
end

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    您的伪代码留有很大的解释空间,所以这可能不是您想要的,但我认为它可以帮助您入门:

    to communicate
      ask turtles-on neighbors [
        let both-turtles (turtle-set self myself)
        let difference abs (variable - [ variable ] of myself)
        if difference < 1 [ ask both-turtles [ set variable mean [ variable ] of both-turtles ] ]
        if difference < 2 [ bring-closer both-turtles 0.3 ]
        if difference < 3 [ bring-closer both-turtles 0.1 ]
      ]
    end
    
    to bring-closer [ both-turtles delta ]
      ask min-one-of both-turtles [ variable ] [ set variable variable + delta ]
      ask max-one-of both-turtles [ variable ] [ set variable variable - delta ]
    end
    

    这里发生了很多事情,但没有什么过于复杂。我认为您必须在这里理解的主要概念是:selfmyself,将代理集存储在局部变量中的想法,以及编写带参数的过程的想法。您可以在 programming guide 中阅读所有这些内容,并在 dictionnary 中查找相关原语。

    【讨论】:

    • 谢谢你,Nicolas,你做对了!惊人的。我会查看指南以获取更多知识,但我想我可能需要在此过程中提出更多问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2013-06-24
    相关资源
    最近更新 更多