欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2020联合作战智能博弈挑战赛之(六)过拟合

程序员文章站 2022-03-13 14:49:11
2020年8月20日笔记加深理解默认代码中智能体状态的作用。以红方为例,对于每一个继承了agent类的RedRuleAgent而言,self中的agent_state衡量的是红方阵营的总体运行阶段,而不是特指其中独立的武器平台。仔细阅读了白皮书中有关轰炸机区域突击的内容。没有干扰机配合时,将轰炸机的投弹距离参数从80修改为70以后阵亡率大幅上升,会受到地防的严重威胁,设为80的时候也不太安全。......

2020年8月20日笔记

加深理解默认代码中智能体状态的作用。以红方为例,对于每一个继承了agent类的RedRuleAgent而言,self中的agent_state衡量的是红方阵营的总体运行阶段,而不是特指其中独立的武器平台。

仔细阅读了白皮书中有关轰炸机区域突击的内容。没有干扰机配合时,将轰炸机的投弹距离参数从80修改为70以后阵亡率大幅上升,会受到地防的严重威胁,设为80的时候也不太安全。

发现区域突击的框是悬在空中的,怪不得之前一直觉得比例尺缩放的时候这个框的位置变来变去的。

调整红军北部护卫舰的初始位置,使之能够防御到更多的战场空间。收缩红军中部护卫舰以及预警机的初始位置使其开局时能更好地得到己方歼击机的支援。将预警机和干扰机的初始位置向更安全的位置进行调整。

修改原代码中不符合逻辑的地方。

发现了新的问题:北面进行目标突击任务的两架轰炸机在投完弹后原地打转,不会回机场补充弹药。南面进行区域突击任务的轰炸机将导弹用完后会自动返回机场,但是不会自动从机场出来进行二次轰炸。

终于理清了源代码中红方20种状态的流向图。知道了如何获取本方机场中各种待命武器平台的数量,如何通过情报获取敌方某个单位的精确坐标。继续完善算法说明文档。

到了深夜由于代码改动位置较多,运行的过程开始不停地崩溃,每次重启还挺耗时的。使用Debug调试时,如果在某一个地方停留久了,还会导致额外的超时错误,只好又用原始的手工加print的方法来调试。屋漏偏逢连夜雨,一个问题还没解决电脑又罢工了,C盘不知咋回事就被塞得满满的,时间不够充裕,随便先删些cache文件应应急。

2020年8月21日笔记

群里对初赛是否推迟产生了激烈的争吵。

继续理解代码、修饰代码注释。进一步品味原代码中红军X负轴阻援歼击机的任务意义。

2020年8月22日笔记

发现可以动态锁定轰炸机需要进攻的目标,而不是靠提前人工锁定目标位置再来给轰炸机的攻击目标进行赋值。

通过观察发现护卫舰弹多防低,因此不需要节约弹药,自定义实现了敌机进入更大攻击范围即开火的指令(默认60公里以内才开火),这个命令需要遍历所有发现目标并选择最近目标进行攻击。

继续给主办方提出优化态势端和后台的意见。

根据其它赛友的提示,得到了新的思路:如果己方单位在发现有导弹对自己发射时,立即原地折返,使得该导弹的射程变长,这会影响这枚已经发射的导弹的命中率。不过感觉这已经处于雕琢的阶段了,暂时没有精力来实现这个。

开始增加自定义的运行状态编码,以免原代码发布新版本和我的状态码相冲突。将轰炸机编为三个分队,为各编队赋予明确的进攻任务。继续微调各武器平台的部署位置和任务,这样针对一个蓝军想定反复调优红军作战方案的方法一定会出现过拟合的成分,不过为了参加热身赛和有资格进入预赛,这一步暂时难以避免。

编了几天,才终于悟到以前打魔兽争霸、星际争霸、红色警戒、帝国时代等游戏的时候,同一局里到了后期电脑会越来越笨,看来就是他们自定义规则里面的前N次进攻都执行完了,所以后面电脑没什么想法了。

本文地址:https://blog.csdn.net/dragon_T1985/article/details/108115327