NetLogo技术咨询:如何用全局变量设置双种群初始感染海龟
解决方案
一、给两个种群设置初始感染个体
首先需要定义必要的变量:
- 全局变量:
initially_infected、magenta_population、brown_population - 海龟变量:
infected?(布尔值,标记感染状态)、population-group(标记海龟所属种群,避免后续因移动丢失种群标识)
修改你的initialise_agents过程,添加种群标记和初始感染设置:
to initialise_agents ; 创建洋红色种群海龟并标记属性 create-turtles magenta_population [ set color yellow ; 健康状态颜色 set size 1 set population-group "magenta" move-to one-of patches with [pcolor = magenta] set infected? false ; 默认初始健康 ] ; 创建棕色种群海龟并标记属性 create-turtles brown_population [ set color yellow set size 1 set population-group "brown" move-to one-of patches with [pcolor = brown] set infected? false ] ; 给洋红色种群设置指定数量的初始感染个体 ask n-of initially_infected turtles with [population-group = "magenta"] [ set infected? true set color red ; 感染状态颜色 ] ; 给棕色种群设置指定数量的初始感染个体 ask n-of initially_infected turtles with [population-group = "brown"] [ set infected? true set color red ] end
关键说明:
population-group变量确保海龟即使离开初始斑块,依然能被准确识别所属种群n-of X agentset语法可从指定海龟集合中随机选取X个个体,精准满足两种群各initially_infected只感染的需求infected?变量用于后续传播、死亡逻辑的判断
二、用全局变量在已创建的种群内新增海龟
假设你有全局变量add-magenta-turtles(需新增到洋红色种群的数量)、add-brown-turtles(需新增到棕色种群的数量),可编写如下过程实现:
to add-turtles-to-existing-population ; 向洋红色种群新增海龟 create-turtles add-magenta-turtles [ set color yellow set size 1 set population-group "magenta" move-to one-of patches with [pcolor = magenta] set infected? false ] ; 向棕色种群新增海龟 create-turtles add-brown-turtles [ set color yellow set size 1 set population-group "brown" move-to one-of patches with [pcolor = brown] set infected? false ] end
关键说明:
- 核心逻辑是创建新海龟时直接标记
population-group为目标种群,并移动到对应种群的栖息地斑块 - 若需要新增海龟带有初始感染概率,可在创建时加入判断(需新增全局变量
initial-infection-probability控制概率):set infected? (random-float 1 < initial-infection-probability) if infected? [set color red]
内容的提问来源于stack exchange,提问作者Muhammed Basil
相关产品推荐
相关产品推荐

