+ 预期输入是一个数字,但得到的是 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
的值,该表达式报告 true
或 false
。
我想你可能只想写 set grass-energy 0
。
NetLogo 使用 set variable value
而不是 variable = value
来更改变量的值这一事实有时会让来自其他语言的人感到有点困惑,但人们通常会习惯它够快了。
不断出现此错误,但变量不是 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
的值,该表达式报告 true
或 false
。
我想你可能只想写 set grass-energy 0
。
NetLogo 使用 set variable value
而不是 variable = value
来更改变量的值这一事实有时会让来自其他语言的人感到有点困惑,但人们通常会习惯它够快了。