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的所有者雄性的优势雄性
,而不是挑战者。试着把自己的优势男性
变成[优势男性]