我需要些帮助。我的问题如下
我想要解决下面的公式
sum (Zi - Zj)^2其中Zi是个体i的常量,Zj是在个体i的半径=1的邻域内的通用个体j的值。因此,我想要该半径内每个个体的常量值与Z值之间距离的平方和。
很抱歉没有我的代码,但是我不知道如何处理这个问题
我将写一个例子
个体i的邻域由2个智能体组成,设a和b,其中Za =3,Zb =5
我想要以下结果
(1-3)^2 + (1-5)^2 = 20
谢谢
发布于 2019-02-08 19:25:07
我认为你想做一个常量和一个数字列表之间的平方差之和,其中数字列表是几个海龟的Z值。如果这是正确的,那么下面是一个完整的模型,它可以执行您想要的操作。
turtles-own [ varZ ]
to setup
clear-all
create-turtles 40
[ setxy random-xcor random-ycor
set varZ random 10
set color blue
]
testme
end
to testme
ask one-of turtles
[ set color red
let friends other turtles in-radius 4
ask friends [ set color yellow ]
type "my varZ is: " print varZ
type "sum of squared differences is: " print sum-sq-diff varZ [varZ] of friends
]
end
to-report sum-sq-diff [#constant #listvals]
report reduce + (map [ thisval -> (thisval - #constant) ^ 2 ] #listvals)
endsum-sq-diff过程接受两个输入:一个常量和一个值列表。它计算常量和列表中每个值之间差值的平方和。map计算差值的平方并创建这些值的列表,然后reduce对该列表求和。您可以通过在命令中心输入sum-sq-diff 1 [ 2 3 4 ]来测试is,您将返回14 (即(2-1)^2 + (3-1)^2 + (4-1)^2)。
代码的其余部分是如何在我认为您想要的上下文中使用此过程的示例,将某个半径内的海龟拉出并使用它们的变量值作为列表。
https://stackoverflow.com/questions/54557681
复制相似问题