Author:盒子先生
2020.10.26
知乎主页:https://www.zhihu.com/people/he-zi-xian-sheng-30
First Step:
对于rcrs来说,其实一共有六种智能体:AT、FB、PF、AmbulanceCentre、FireStation、PoliceOffice。对于无中心策略来说,一般只考虑前三种智能体的策略,对于有中心策略,需要考虑到六种智能体(救援智能体+中心智能体)。我们校队目前采用的是无中心策略。
为了对平台有个整体认识,首先需要读读下面代码:
其中,think函数中表示了每类智能体的思考过程,即代码调用过程。
然后,需要弄明白几乎每个类的入口参数含义,包含了什么数据,以及如何加入自己的数据、如何对其中预计算
然后需要学学怎么重写自己的文件,这里可以参考平台手册,以及自己读读config文件:
明白文件的调用流程。
最后翻翻其它文件夹下的代码,比如log日志存在哪了之类的,不要只看src里的代码。
Second Step:
知道了平台的大致运行流程,我们就可以仔细看看核心代码部分。
三个文件夹分别表示:算法部分、中心智能体决策部分、救援智能体决策部分。
其中,算法部分只提供了简单的A*路径规划,可以在此基础上改进路径规划算法。也需要增加其它算法,比如分区算法Kmeans(将整个地图划分成不同区块,将智能体分配到不同区域)、找到获取的外边缘凸包算法(找到外边缘从外到内灭火可以很大程度抑制火势的扩张)。
中心智能体决策部分暂时不管,校赛跑的命令其实是没有开的。(-1表示挂在挂载所有智能体,0表示不挂载)
救援智能体决策部分 FB > PF > AT:
如何最高效的灭火是整个比赛的关键,需要综合考虑到火势的扩张、距离加油站(避难所等)的距离、火区中心或是周边,当然,还要考虑到FB去往火区是需要消耗时间的,如何预估火区的走向从而抑制扩散也是需要考虑的问题。重点修改SearchForFire、Buildingdetector.
PF部分需要查看一些论文,可以尝试给不同街道分等级,主干道优先清障(清一条路还是全清完等需要考虑),次干道怎么分配人手。
AT如何分配人手,何时以世界为单位救援,何时以分区为单位。