NetLogo - 从agentset中选择代理

时间:2014-09-16 19:21:06

标签: netlogo

我有一个雄性和雌性动物相互作用的模型,雄性与雌性相互竞争以获得雌性。当一个分散的男性挑战一个常驻男性(即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),即使这些男性不应该首先被选中。我使用print语句来验证这一点,并使用以下内容包含一条简单的错误消息:

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

我认为这很容易,但我在这一天的大部分时间里都被困住了。任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:1)

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