根据 if 语句复制 turtle 变量

Copy turtle variable depending on if statement

我正在为捕食者猎物系统构​​建一个模型,并且我正在将一个小型基本机器学习内部模型整合到捕食者中。

捕食者有 4 种策略(strat 是变量),在一天开始时他们 select 一个 strat 并且在每天结束时他们检查他们是否使用该 strat 成功狩猎。

我有另一个名为 best-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

我希望捕食者评估他们是否使用给定的策略进行了良好的狩猎,然后 select 之前最适合他们的策略,如果没有最好的策略,那么只需随机选择一个。

strat 是来自策略列表的 select 个变量 ("strat1" "strat2" "strat3" "strat4")

除了我的代码外,如果狩猎成功,我的代码会在一天结束时将当前策略复制到最佳策略,其他一切正常。目前它设置为 "false" 所以我猜有些东西坏了。

问题出在这里:

[set best-strat best-strat = strat]

该行应该是

[set best-strat strat]

为了解释您遇到的错误,best-strat = strat 是一个产生 truefalse 的逻辑表达式。因此 set best-strat (best-strat = strat)(添加的括号)会将 best-strat 设置为 truefalse,具体取决于 best-strat 是否等于 strat.