我有许多设置了值的全局变量,还有许多设置了初始值的乌龟自有变量,但是一旦模型运行,它们就会被关联的全局变量改变。
例如:
globals [dis-id]
turtles-own [identity]
to determine-parameters
set dis-id -1
ask turtles [
set identity 0
end
因此,当乌龟行动时,其身份根据动作的成功程度而上升或下降1。
所以说一个动作成功了,标识应该从0移到-1。如果再次成功,则将故障从-1移到-2等,对于故障0到1,将移动到1等,反之亦然。
我的问题是,对于添加到模型中的每只海龟(运行时或设置过程中由观察者创建的海龟),这种变化量都会增加。
1只乌龟0到1、1到2、2到3(正确+1)
2只海龟0到2、2到4、4到6(不正确+ 2)
3只海龟0到3、3到6、6到9(不正确+ 3) 等
如果全局变量是-6而不是1,即
globals [dis-id]
turtle-own [identity]
to determine-parameters
set dis-id -6
ask turtles [
set identity 0
end
发生相同的模式
1只乌龟0至6、6至12、12至18(正确+ 6)
2只海龟0至12、12至24、24至36(不正确+ 12)
3只海龟0到18、18到36、36到54(不正确+ 18) 等
确定身份的过程/计算为
to succeed
ask turtles [
if outcome > expectation [
set identity (identity - dis-id)]
]
end
to fail
if outcome < expectation [
ask turtles [
set identity (identity - dis-id)]
]
end
对于以相同方式计算的每个乌龟自变量,此问题是一致的。
我尝试了许多修复措施都无济于事。 任何帮助,将不胜感激! 如果需要任何进一步的解释或代码来帮助解决问题,请告诉我,因为我不确定应该在此处输入多少代码。仅供参考,实际代码很长。
更新 问题所在的代码是
to dothething
ask turtles [
if X >= Y [
succeed
fail]
]
感谢JenB指出这一点!