先从2 蚁群路线(Ant lines)入手,我们假定无人机集群也有一个“领头蚂蚁”,“食物源”可视为水面目标。
这里面需要修改的内容应该是:“领头蚂蚁”以随机路径前进->“领头无人机”以预设路径前进;
界面
全局变量
界面中可以控制的“滑块”都是可以编辑的“全局变量”,
Ant lines模型中包括num-ants;leader-wiggle-angle;start-delay;
分别表示蚁群总数/蚁头摇头角度/蚁群出动间隔,全局变量都可以用右键进行编辑;
比如:对于集群的数量,可以使用全局变量来控制,直接在界面中nums滑块右键->Edit就可以编辑,这里我们改成num-uavs表示无人机集群总数。
监视器
监视器可以监视变量变化,右键进行编辑。
按钮
按钮可以配置执行主体和命令,右键进行编辑。
代码
模型代码中包括5个部分(都在一页中),利用文心一言可以很轻松读懂代码。(这里我用到哪里就分析哪里)
setup
字面意义上推测setup应该是初始化内容,因此可以先对setup进行分析和修改。setup部分主要是设定 起点、终点、集群(turtles)的位置形状,正常理解即可。
set nest-x 10 + min-pxcor
这一句就是表示nest(起点)的坐标的x轴位 10+min-pxcor(最小界),而pxcor的设置是在 界面-设置中进行设置的,进入界面之后设置一下就能理解。
setup部分目前还不需要改太多内容,无非换换图标,图标也可以自己画(工具-海龟形状编辑器)。
go
下面修改go部分,做一个简单尝试,让Uavs直接面向目标飞去(下一步要让目标有防空能力);
to go
if all? turtles [xcor >= food-x]
[ stop ]
ask leaders
[ if xcor < food-x
[ facexy food-x food-y ;; 面向食物
let distance-to-food sqrt((food-x - xcor) * (food-x - xcor) + (food-y - ycor) * (food-y - ycor))
fd 0.5 ;; 直接前进到食物
]
]
ask followers
[ face turtle (who - 1)
if time-to-start? and (xcor < food-x)
[ fd 0.5 ]
]
tick
end
修改之后,可以看到无人机路线为直线。