创建额外的乌龟时,乌龟自身的变量值不应增加

时间:2018-12-13 09:56:12

标签: netlogo

我有许多设置了值的全局变量,还有许多设置了初始值的乌龟自有变量,但是一旦模型运行,它们就会被关联的全局变量改变。

例如:

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指出这一点!

0 个答案:

没有答案