NetLogo中hatch操作未修改新生turtle breed的问题咨询
问题原因
- 你在
go过程中已经通过ask hembras调用reproduccion_hembra,但该函数内部又嵌套了一层ask hembras,双重遍历导致繁殖逻辑异常。 - 你仅修改了新生幼崽的
breed属性,没有同步修改对应外观标识,雄性幼崽继承了母体的黑色,和雌性外观一致,导致你误以为所有后代都是雌性。 - 可选优化:直接用
list machos hembras作为breed可选值时,若某一breed的个体全部死亡,对应值会变成空agentset,可能引发赋值异常。
修复方案
直接替换你代码中的reproduccion_hembra过程即可:
to reproduccion_hembra ; 移除多余的外层ask hembras,避免重复遍历 if energia >= 50 [ if any? machos in-radius 4 [ set energia energia - 60 hatch 2 [ set breed one-of (list machos hembras) ; 新增对应breed的颜色设置,方便区分雌雄 if breed = machos [set color gray] if breed = hembras [set color black] rt random-float 360 fd 15 set energia (100 + random 400) set vejez 0 ] ] ] end
修改后运行即可看到随机出生的灰色雄性幼崽和黑色雌性幼崽,符合你的业务逻辑要求。
内容的提问来源于stack exchange,提问作者bksnlow
相关产品推荐
相关产品推荐

