我的模型中的代理(称为农场)具有对等点(它们有链接的农场的代理集)。每个农场都有一个称为旋转的属性,它是 0 到 1 之间的值列表(所有农场的长度相同)。我想为每个农场创建一个属性,其中包含给定农场与其所有同行之间的相似性分数列表(基于欧几里得距离),基于它们的轮换。
因此,
farms-own [
peers
rotation
similarity
]
旋转由外部数据集填充。现在,我当前必须定义相似性的代码如下:
ask farms [
let x []
ask [peers] of myself [
let y (map * [rotation] of self [rotation] of myself)
set x lput ((reduce + y) ^ 0.5) x
]
set similarity x
]
注意:x 变量是规避节点无法为农场设置属性这一事实的一种方法。
此代码目前还不起作用。对于每个场,相似性应该具有与对等点数量相同的长度,但事实并非如此(事实上,其长度在滴答之间变化,即使对等点是在设置阶段定义的并且之后不会更改)。知道这里出了什么问题吗?
此外,如果有人提示如何解决所提出的问题是随机的,因此相似性分数不能根据其顺序分配给具体的对等点(用于以后的操作),欢迎他们。但我对此有一些想法,所以上面的问题优先。
如果您的程序被观察者调用,则
ask [peers] of myself
会导致问题。如果您想询问当前树的对等点,您可以简单地询问:
ask turtles [
let x []
; ask [peers] of myself [
ask peers [
let y (map * [rotation] of self [rotation] of myself)
set x lput ((reduce + y) ^ 0.5) x
]
set similarity x
]