Netlogo:如果变量值相同,则让代理链接
我试图让两种代理(xagents和yagents)检查变量在xagents半径内移动时的值是否相同。然后他们应该联系起来 当我尝试下面的代码时,它们是链接的,但当我检查链接代理的值时,变量值不相等;它们不应该相互关联。问题程序位于代码末尾。你知道为什么吗 当我可以通过这个部分时,我希望代理更改另一个变量的值,但前提是它们的值与VAR1相同(因此是链接)Netlogo:如果变量值相同,则让代理链接,netlogo,Netlogo,我试图让两种代理(xagents和yagents)检查变量在xagents半径内移动时的值是否相同。然后他们应该联系起来 当我尝试下面的代码时,它们是链接的,但当我检查链接代理的值时,变量值不相等;它们不应该相互关联。问题程序位于代码末尾。你知道为什么吗 当我可以通过这个部分时,我希望代理更改另一个变量的值,但前提是它们的值与VAR1相同(因此是链接) 这里有一些问题可能会给您带来问题。第一: set var1 random-normal 5 1 如果需要进行匹配,则两个代理共享随机正常中的值
这里有一些问题可能会给您带来问题。第一:
set var1 random-normal 5 1
如果需要进行匹配,则两个代理共享随机正常
中的值的可能性极低-它返回一个浮点值:
observer> show random-normal 5 1
observer: 4.051232264359846
选择另一种方法为var1
选择值(例如random poisson
,或[1 2 3 4 5]中的一种),否则将无法获得匹配项。原始代码提供链接的唯一原因是其他xagents
未包含在您的代码块中,以进行通信
代码块(见下文)
在这里,您应该使用其他xagents
,或者您将包括询问代理,而不仅仅是radius 1中的其他
[create-links-with other yagents-here
...
因此,在这里,您已经使用条件选择了要形成链接的xagents
,但相同的条件不适用于yagents
端。因此,您得到了xagents
与此处的任何yagents
建立链接。要解决这一问题,只需确保yagents
还必须具有您所追求的var1
,例如:
to communicate
ask other xagents in-radius 3 with [var1 = [var1] of myself]
[create-links-with yagents in-radius 3 with [var1 = 2 ]
[
set color white
set thickness 0.1
]
]
end
成功了!谢谢有没有办法限制代理链接的次数?假设我想在xagent达到五个链接后停止它与yagents的链接。这是一个单独的问题-请打开一个新问题来提问。
[create-links-with other yagents-here
...
to communicate
ask other xagents in-radius 3 with [var1 = [var1] of myself]
[create-links-with yagents in-radius 3 with [var1 = 2 ]
[
set color white
set thickness 0.1
]
]
end