【发布时间】:2014-09-16 19:21:06
【问题描述】:
我有一个雄性动物和雌性动物互动的模型,雄性动物为了接近雌性动物而相互竞争。当一个分散的男性挑战一个常驻男性(即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!"
]
我认为这很容易,但我在这一天的大部分时间里都被难住了。任何帮助将不胜感激。
【问题讨论】:
标签: netlogo