Netlogo Turtles - 分享两只乌龟之间的差异

时间:2014-03-14 12:10:19

标签: netlogo turtle-graphics

我对Netlogo很新,并且一直在使用Railsback&在边尝试我自己的东西时,格里姆斯出色的书

目前,我正在尝试编写一种汇款,两只乌龟相遇(例如Turtle 1和Turtle 2),然后两只乌龟分享钱(例如T1有4美元,T2有6美元,他们都带5美元) 我尝试使用的代码如下所示

 to currency-share
   let neighbor one-of bystanders-here                    ; identify neighbor around
   if neighbor != nobody                             ;; is there a neighbor?  if there is
    [ set currency round ((currency + neighbor currency) / 2)] ; share money
 end

不幸的是,代码不起作用,我无法通过使用类似想法的论坛找到任何示例。也许我没有错误地搜索(使用像龟交换,共享等关键词通常会提供补丁共享)。如果有人有任何型号,他们可以推荐这种交换发生的地方,或者如果有人知道如何改进我的代码,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:3)

乍一看,这似乎是一个简单的语法问题。要获得邻居的currency,您应该使用of

set currency round ((currency + [ currency ] of neighbor) / 2)

但是既然你也说过想要两个海龟获得新的金额,你还需要添加:

ask neighbor [ set currency [ currency ] of myself ]

或者,也许不那么容易混淆,你可以做一些像:

set new-amount round ((currency + [ currency ] of neighbor) / 2)
set currency new-amount
ask neighbor [ set currency new-amount ]

最后一个变体,在我看来略好一些,因为更通用(甚至更清晰)是:

let sharers (turtle-set self one-of bystanders-here)
let new-amount mean [ currency ] of sharers
ask sharers [ set currency new-amount ]

在最后一个中,您甚至不需要if neighbor != nobody检查,因为如果没有旁观者,turtle-set将构建仅包含self的代理集以及该平均货币set将只是当前的货币价值。