NetLogo中补丁孵化海龟及特定区域生成海龟的技术咨询
NetLogo公共交通模型问题解答
1. 补丁“孵化”海龟的实现方式
你当前的代码其实已经是补丁生成海龟的标准写法——在ask patches with house的上下文里,调用create-traveler创建的海龟会直接出现在当前补丁的位置(你写的setxy pxcor pycor其实可以省略,因为create-traveler在补丁上下文执行时,海龟默认就会生成在该补丁上)。
如果需要让海龟和生成它的补丁建立关联(比如后续需要回溯来源),可以给turtles添加一个变量记录母补丁:
turtles-own [origin-patch] ; 在补丁上下文里创建海龟时赋值 ask patches with house [ create-traveler household-size [ set color black set shape "people" set origin-patch myself ; myself在这里指代当前执行的补丁 ] ]
2. 特定范围补丁生成海龟的实现
针对你需求的范围(y坐标满足 -3 ≤ pycor ≤ -2 或 2 ≤ pycor ≤ 3,x坐标随机),可以直接通过补丁的坐标筛选条件来实现,不需要用到海龟的上下文方法,代码示例如下:
方法1:筛选符合条件的补丁后批量生成
; 先筛选出所有符合坐标条件的补丁,再从中随机选择或全部使用 ask patches with [ (pycor >= -3 and pycor <= -2) or (pycor >= 2 and pycor <= 3) ] [ ; 这里可以根据需求设置生成数量,比如每个符合条件的补丁生成1个旅行者 create-traveler 1 [ set color black set shape "people" ] ]
方法2:随机选择指定数量的符合条件补丁生成
如果需要随机在符合条件的补丁上生成固定数量的海龟,可以用n-of:
let target-patches patches with [ (pycor >= -3 and pycor <= -2) or (pycor >= 2 and pycor <= 3) ] ask n-of 10 target-patches [ ; 随机选10个符合条件的补丁 create-traveler 1 [ set color black set shape "people" ] ]
补丁本身自带pxcor和pycor属性,所以在ask patches的上下文里,直接用这些属性写筛选条件即可,完全不需要依赖海龟的方法。
内容的提问来源于stack exchange,提问作者AngronDidNothingWrong
相关产品推荐
相关产品推荐

