我有一个雄性和雌性动物互动的模型,雄性动物为了接近雌性动物而相互竞争。当一只分散的雄性挑战一只常驻雄性(即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!"
]
我原以为这会很容易,但我一天中大部分时间都被这件事难住了。如有任何帮助,我们将不胜感激。
您测试的是owner-males-of-nearby-fem
的dominant-males
,而不是挑战者。尝试将dominant-males
更改为[dominant-males] of myself
。