如何在AnyLogic的Source模块中选择多个GIS区域?
解决Source模块选择多个GIS邮政编码区域作为到达位置的方法
步骤1:创建GIS区域集合
在模型的Main代理的on startup事件中,定义一个存储4个邮政编码区域的集合。假设你的4个GIS区域对象名称分别为postalArea1、postalArea2、postalArea3、postalArea4,添加以下代码:List<GISRegion> targetRegions = Arrays.asList(postalArea1, postalArea2, postalArea3, postalArea4);(注意:这里的区域名称要和你GIS工作区中实际的区域对象名完全一致)
步骤2:配置Source模块的自定义到达位置
打开Source模块的属性面板:- 将「到达位置」选项切换为
Custom location(自定义位置) - 在下方的代码输入框中,写入随机选择区域并生成位置的逻辑:
// 随机选取一个目标邮政编码区域 GISRegion selectedRegion = pick(targetRegions); // 在选中区域内生成随机GIS节点作为到达位置 return gis.getRandomNodeInRegion(selectedRegion);如果需要给不同区域设置生成概率权重(比如某个区域人员到达率更高),可以替换为带权重的选择逻辑:
// 权重列表对应4个区域的分配比例,示例为平均分配 List<Double> weights = Arrays.asList(0.25, 0.25, 0.25, 0.25); GISRegion selectedRegion = pickWithWeights(targetRegions, weights); return gis.getRandomNodeInRegion(selectedRegion);- 将「到达位置」选项切换为
步骤3:验证配置效果
运行模型,通过可视化查看人员的初始生成位置,确认人员会随机分布在你设置的4个邮政编码区域内,同时可以结合你需要测量的队列规模、利用率、系统停留时间等指标进行测试。
内容的提问来源于stack exchange,提问作者Morshed Dolon
相关产品推荐
相关产品推荐

