我有一个雄性和雌性动物相互作用的模型,雄性与雌性相互竞争以获得雌性。当一个分散的男性挑战一个常驻男性(即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!"
]
我认为这很容易,但我在这一天的大部分时间里都被困住了。任何帮助都会非常感激。
答案 0 :(得分:1)
您正在对dominant-males
owner-males-of-nearby-fem
而不是挑战者进行测试。尝试将dominant-males
更改为[dominant-males] of myself
。