NetLogo-从代理集选择代理

NetLogo-从代理集选择代理,netlogo,Netlogo,我有一个雄性和雌性动物互动的模型,雄性动物为了接近雌性动物而相互竞争。当分散的雄性挑战常驻雄性(即,雄性挑战)并失败时,我希望分散的雄性“记住”他输给谁。在程序结束时,我通过设置优势雄性(海龟设置优势雄性进行挑战)来实现这一点。然后在下一个时间步骤的程序开始时,分散的雄性不会再次挑战相同的显性雄性。我认为这很容易: ; identify those males owning nearby females: let owner-males-of-nearby-fem tur

我有一个雄性和雌性动物互动的模型,雄性动物为了接近雌性动物而相互竞争。当分散的雄性挑战常驻雄性(即,
雄性挑战
)并失败时,我希望分散的雄性“记住”他输给谁。在程序结束时,我通过
设置优势雄性(海龟设置优势雄性进行挑战)
来实现这一点。然后在下一个时间步骤的程序开始时,分散的雄性不会再次挑战相同的
显性雄性。我认为这很容易:

      ; 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
然而,我经常发现,
未受挑战的男性
与之前受到挑战并获胜的男性是相同的(即,
占优势的男性
),即使这些男性本来就不应该被选中。我使用print语句来验证这一点,并使用以下内容包含一条简单的错误消息:

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

我原以为这很容易,但一天中的大部分时间我都被难倒了。非常感谢您的帮助。

您正在测试附近fem的
所有者雄性的
优势雄性
,而不是挑战者。试着把自己的
优势男性
变成
[优势男性]