NetLogo按半径为patches上色仅单个像素生效问题排查求助
问题原因
你的go阶段代码逻辑里,满足收入条件后没有主动遍历目标范围内的符合要求的斑块,而是直接执行set pcolor 62,这行代码默认修改的是农户海龟自身的颜色,而不是范围内的斑块颜色,所以只会出现单个像素变色的效果,另外原有逻辑里的if any?判断属于冗余判断,NetLogo对空agentset执行ask操作不会产生异常,无需提前判断是否存在符合条件的斑块。
修正后的go过程代码
to go ask cercas [ ifelse ingresos > 2000000 [ if ticks mod 3 = 0 [ ; 选中半径4范围内所有pcolor为35的斑块后批量修改颜色 ask patches in-radius 4 with [pcolor = 35] [ set pcolor 62 ] ] ] [] ] end
可选性能优化
可以把ticks mod 3 = 0的判断放到ask cercas的外层,避免每只农户都重复判断时间条件,提升模型运行效率:
to go if ticks mod 3 = 0 [ ask cercas with [ingresos > 2000000] [ ask patches in-radius 4 with [pcolor = 35] [ set pcolor 62 ] ] ] ; 其余go阶段逻辑可写在此处 end
内容的提问来源于stack exchange,提问作者bksnlow
相关产品推荐
相关产品推荐

