+ 预期输入是一个数字,但得到的是 TRUE/FALSE true

+ expected input to be a number but got the TRUE/FALSE true instead

不断出现此错误,但变量不是 true/false...它们是数字。附上以下模型的完整代码。先附上有错误的部分,然后附上整个代码(包括错误部分)

模型将海龟显示为牛,将斑块显示为草。该错误源于 grow-grass 函数,其中每个滴答声,补丁都会增长指定的数量。这以前有效,但现在返回错误...

"+ 预期输入是一个数字,但得到的是 TRUE/FALSE true。"

to grow-grass
      ask patches [
        set grass-energy grass-energy + regrow-energy
      ]
    end


turtles-own [energy]
patches-own [grass-energy]


to setup
  clear-all
  setup-patches
  setup-turtles
  reset-ticks
end

to scatter
  clear-turtles
  setup-turtles
end


to go
  if ticks >= time-limit [ stop ]
  move-turtles
  check-patches
  eat-grass
  grow-grass
  reproduce
  check-death
  tick
end

to move-turtles
  ask turtles [
  ifelse move-left?
  [ left random 45
    forward 1
    set energy energy - move-energy ]
  [ right random 360
    forward 1
    set energy energy - move-energy ]
  ]
end

to eat-grass
  ask turtles [
    if pcolor = green [
      set energy energy + energy-from-grass
      set grass-energy grass-energy - energy-from-grass
    ]
    ifelse show-energy?
    [ set label energy ]
    [set label "" ]
  ]
end

to reproduce
  ask turtles [
    if energy >= reproduce-energy [
      set energy energy - birth-energy
      hatch 1 [ set energy birth-energy ]]
  ]
end

to check-death
  ask turtles [
    if energy <= 0 [ die ]
  ]
end

to check-patches
  ask patches with [count turtles-here >= 2] 
  [ ask one-of turtles-here [ ask other turtles-here[set energy     energy - (energy / 2)]]]
end

to grow-grass
  ask patches [
    set grass-energy grass-energy + regrow-energy
  ]
end

to setup-patches
  ask n-of green-patches patches [ set pcolor green set grass-energy     grass-energy + grass-alive ]
  ask patches [ 
    if pcolor = black [ set pcolor brown set grass-energy grass-    energy = 0 ]
  ]
end

to setup-turtles
  create-turtles number [ setxy random-xcor random-ycor ]
  ask turtles [ set energy energy + birth-energy set shape "cow" set     size 1.5 ]
end

我认为问题出在您的 setup-patches 过程中,您说:

set grass-energy grass-energy = 0

这会将 grass-energy 变量的值设置为表达式 grass-energy = 0 的值,该表达式报告 truefalse

我想你可能只想写 set grass-energy 0

NetLogo 使用 set variable value 而不是 variable = value 来更改变量的值这一事实有时会让来自其他语言的人感到有点困惑,但人们通常会习惯它够快了。