Это легче увидеть с другим отступом.Ниже приведен ваш код (завернутый в название процедуры).
to find-mate
ask turtles with [sex = "female"]
[ if any? turtles with [sex = "male"] in-radius 10
[ set potentialMates turtles with [sex = "male"] in-radius 10
]
ifelse any? potentialMates with [anadromousM = 1]
[ set FR count potentialMates with [anadromousM = 1] / count potentialMates ]
[ set FR 0]
]
end
Как видите, ifelse
проверяется (для каждой женской черепахи) независимо от результата if any? turtles with [sex = "male"] in-radius 10
.Представьте, что сначала if
- это false
, а затем потенциальные помощники agentset
никогда не создаются с мужскими черепахами.Отсюда и ошибка.Вы не показали нам код, в котором сначала создается экземпляр pontentialMates - при условии, что это глобальная переменная, тогда она будет иметь значение 0.
Я думаю, вы хотите, чтобы FR был 0 в случае, когда нетсамцы в радиусе вообще.В этом случае попробуйте следующее.
to find-mate
ask turtles with [sex = "female"]
[ ifelse any? turtles with [sex = "male"] in-radius 10
[ set potentialMates turtles with [sex = "male"] in-radius 10
set FR count potentialMates with [anadromousM = 1] / count potentialMates
]
[ set FR 0]
]
end
Если нет потенциальныхMate с anadromousM = 1, тогда числитель в любом случае равен 0, а 0 / N равен 0.