【问题标题】:NetLogo - selecting agent from agentsetNetLogo - 从代理集中选择代理
【发布时间】:2014-09-16 19:21:06
【问题描述】:

我有一个雄性动物和雌性动物互动的模型,雄性动物为了接近雌性动物而相互竞争。当一个分散的男性挑战一个常驻男性(即male-to-challenge)并输了,我想让分散的男性“记住”他输给了谁。我在程序结束时使用set dominant-males (turtle-set dominant-males male-to-challenge) 完成此操作。然后在下一个时间步的程序开始时,分散的雄性不会再次挑战相同的dominant-male。我认为这很容易:

      ; identify those males owning nearby females:
      let owner-males-of-nearby-fem turtle-set [males-in-my-territory] of breeding-females with [member? self (owned-nearby-females)] 
      ; identify those males who have not been challenged before:
     let unchallenged-males owner-males-of-nearby-fem with [not member? self dominant-males]
      ; select one of the unchallenged males to challenge:
      let male-to-challenge one-of unchallenged-males

但是,我经常发现unchallenged-males 与之前曾被挑战并获胜的相同(即dominant-males),即使这些男性一开始就不应该被选中。我使用打印语句来验证这一点,并使用以下内容包含一个简单的错误消息:

      if [self] of unchallenged-males = [self] of dominant-males
      [
       user-message "this is wrong!" 
      ]

我认为这很容易,但我在这一天的大部分时间里都被难住了。任何帮助将不胜感激。

【问题讨论】:

    标签: netlogo


    【解决方案1】:

    您正在测试 dominant-malesowner-males-of-nearby-fem,而不是挑战者。尝试将dominant-males 更改为[dominant-males] of myself

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      相关资源
      最近更新 更多