I built a model of a tiger eating wolves. When the tiger's energy is greater than half of the sum of wolves' energy, the tiger would find the wolf closest to it, eat it and gain energy. So I wrote:
to tigers-feed
ask tigers [
let WE-sum sum [WEnergy] of wolves
if TEnergy > WE-sum * 0.5 [
move-to min-one-of wolves [distance myself] ;;it reports bugs here.
ask one-of wolves-here [die]
set TEnergy Wt * tiger-gain-from-food
]
]
But when running the to go command, the program warns me:
MOVE-TO expected input to be an agent but got NOBODY instead.
Here is my complete code:
globals[
Ww
Wt
wolf-gain-from-food
tiger-gain-from-food
]
breed [wolves wolf]
breed [tigers tiger]
wolves-own [WEnergy]
tigers-own [TEnergy]
;;probably nothing wrong with here, you can jump them.
to setup
clear-all
parameter-initialization
setup-breed
reset-ticks
end
to parameter-initialization
set Ww random 2
set Wt random 4
set wolf-gain-from-food 100
set tiger-gain-from-food 200
end
to setup-breed
set-default-shape wolves "wolf"
create-wolves 100 [setxy random-xcor random-ycor]
ask wolves [
set WEnergy Ww * wolf-gain-from-food
set size 4
set color grey
]
set-default-shape tigers "x"
create-tigers 1 [setxy random-xcor random-ycor]
ask tigers [
set TEnergy Wt * tiger-gain-from-food
set size 6
set color yellow
]
end
to go
ask tigers [set TEnergy TEnergy + 2]
tigers-feed
tick
end
to tigers-feed
ask tigers [
let WE-sum sum [WEnergy] of wolves
if TEnergy > WE-sum * 0.5 [
move-to min-one-of wolves [distance myself]
ask one-of wolves-here [die]
set TEnergy Wt * tiger-gain-from-food
]
]
end
In fact, when I try to run go only once, the program doesn't report errors. So I guess it's not the command move-to min-one-of wolves [distance myself]
that causes the error. Then what exactly caused the error?