为何服务站Agent未按Attractor排列?模型设置问题咨询
问题描述
我搭建了一个用于部署多个服务站(serviceStations)处理入境飞机的模型,Main模块界面如下:
我已将serviceStations群体的属性中“initial location”设置为“in the node”(包围Attractor的节点),并通过参数numberOfServiceStations设置初始Agent数量为6。但运行模型时,Agent随机分散,效果如下:
请问是否有方法让服务站Agent按Attractor排列?
解决方法
自定义初始化位置逻辑
在serviceStations群体的On startup代码块里,手动分配位置。先获取Attractor的节点列表,再遍历serviceStations Agent,依次将每个Agent绑定到对应节点的坐标。示例代码:List<Node> attractorNodes = attractor.getNodes(); for(int i=0; i<serviceStations.size(); i++){ if(i < attractorNodes.size()){ serviceStations.get(i).setLocation(attractorNodes.get(i)); } }注意要保证
numberOfServiceStations不超过Attractor的节点数量,或者额外添加超出数量时的处理逻辑。调整群体初始位置设置
若“in the node”选项是随机分配节点,可切换为“at points”选项,直接指定Attractor的节点集合作为位置点集,Agent会依次排列在这些节点上,而非随机分配。使用布局函数
利用布局工具以Attractor为中心对serviceStations进行规整布局,比如环形布局示例:circleLayout(serviceStations, attractor.getX(), attractor.getY(), 50.0, 0, 360);参数依次为Agent集合、中心X/Y坐标、布局半径、起始角度、结束角度,可根据需求调整数值。
内容的提问来源于stack exchange,提问作者Telso
相关产品推荐
相关产品推荐

