NetLogo问题:使生成于斑块的智能体继承该斑块的den-ID为family参数
解决方案
你之前写的代码set family (family = den-id of patch-here)逻辑错误:这个表达式是相等判断,返回的是true或false布尔值,而非把斑块的den-ID赋值给动物的family变量。
正确实现步骤
确认变量定义
先确保动物智能体已声明family变量,在代码开头添加:turtles-own [family]生成动物时直接绑定巢穴ID
根据你的生成场景选择对应代码:- 场景1:在所有粉色巢穴斑块各生成一只动物
; 先完成巢穴den-ID的赋值(这段必须放在生成动物之前) ask patches with [pcolor = pink] [set den-ID random n-dens] ; 在巢穴斑块生成动物并绑定family ask patches with [pcolor = pink] [ create-turtles 1 [ ; 用myself指代当前执行ask的斑块,获取它的den-ID set family den-ID of myself ; 可添加其他初始化设置,比如颜色、朝向等 set color blue ] ] - 场景2:随机选择一个粉色巢穴生成动物
let target-den one-of patches with [pcolor = pink] create-turtles 1 [ move-to target-den set family den-ID of target-den ]
- 场景1:在所有粉色巢穴斑块各生成一只动物
动物移动到巢穴时更新family(可选)
如果需要动物移动到巢穴斑块时更新所属家族ID,可添加:ask turtles [ if pcolor of patch-here = pink [ set family den-ID of patch-here ] ]
注意事项
- 必须在生成动物之前执行
ask patches with [pcolor = pink] [set den-ID random n-dens],否则斑块的den-ID会是默认初始值(通常为0)。 - 全局滑块
n-dens的最小值设为1,避免random n-dens因参数为0报错。
内容的提问来源于stack exchange,提问作者Kilian Murphy
相关产品推荐
相关产品推荐

