【问题标题】:Copy turtle variable depending on if statement根据 if 语句复制海龟变量
【发布时间】:2020-07-22 05:53:51
【问题描述】:

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

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

我有另一个掠夺者拥有的变量,称为最佳策略,我想从上一个成功的策略中复制它

我的代码如下

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 是一个从策略列表中选择的变量 ("strat1" "strat2" "strat3" "strat4")

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

【问题讨论】:

    标签: simulation netlogo agent-based-modeling


    【解决方案1】:

    问题出在这里:

    [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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2019-09-02
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      相关资源
      最近更新 更多