我正在为捕食者-猎物系统构建一个模型,并在捕食者中引入一个小型的基本机器学习内部模型。
捕食者有4种策略(strat是变量(,在一天开始时,他们选择一个strat,在每天结束时,他们检查自己是否与该strat成功狩猎。
我有另一个捕食者拥有的变量,称为最佳战略,我想从上一个成功的战略中复制它
我的代码是以下
to recall-hunts
if ticks = 98 [ifelse hunt-today = 1 [set last-hunt "success"] [set last-hunt "failure"]]
end
to evaluate-hunt
if ticks = 99 [if last-hunt = "success" [set best-strat best-strat = strat]
if last-hunt != "success" [set strat one-of strategies]
stop]
end
to strategy
if ticks = 1 [ifelse best-strat = "NA" [set strat one-of strategies] [set strat strat = best-strat]]
stop
end
我想让捕食者评估他们是否在给定的strat下进行了良好的狩猎,然后选择之前最适合他们的strat,如果没有最好的strat则简单地随机选择一个。
strat是从策略列表中选择的变量("strat1"strat2"strat3"strat4"(
除了我的代码,如果狩猎成功,我会在一天结束时将当前strat复制到最佳strat之外,其他一切都在工作。目前它设置为"假",所以我想是有什么东西坏了。
问题就在这里:
[set best-strat best-strat = strat]
线路应为
[set best-strat strat]
为了解释您得到的错误,best-strat = strat
是一个产生true
或false
的逻辑表达式。因此,根据best-strat
是否等于strat
,set best-strat (best-strat = strat)
(添加括号(将把最佳strat设置为true
或false
。