501. Kore 2022 | kore-2022
首先,我要感谢 Kaggle 团队举办了如此有趣的比赛。鉴于 Kaggle 上大多数有奖金的比赛都集中在监督学习领域,例如计算机视觉、NLP 等,Kore 2022 真的是一个很有趣的比赛,参赛过程就像玩游戏一样,让人很难感到厌倦。
像许多人一样,我最初是从强化学习(RL)开始的,但在发现了 @egrehbbt 的 Beta 版第1名解决方案后,我很快转向了基于规则的智能体。我很快确信,仅靠 RL 是无法赢得这场比赛的。即使有人通过 RL 登顶,它可能也需要结合基于规则的启发式方法建议的行动。
在这一点上,我的智能体是基于 @egrehbbt 的 Kore Beta 第1名解决方案,这并不令人惊讶,所以非常感谢 @egrehbbt。它为我的智能体奠定了非常坚实的基础。尽管我更改/添加了很多逻辑并重写了大部分函数,但那个框架至关重要,我只是站在了巨人的肩膀上。
还要特别感谢 @jmerle 提供的出色可视化工具。我大概用了一千次。它让调试工作变得轻松了许多。
在深入细节之前,我想分享一些战略层面的思考:
我的智能体尝试(几乎)按顺序完成以下任务:
这里没有什么花哨的东西。当船厂受到攻击时,我会评估附近的船厂,看看来自附近船厂的增援是否足以保卫受攻击的船厂。如果是,就动员它们进行防御。
当我想攻击/占领敌方船厂时,我假设其附近的所有船厂都会尽最大能力协助防御,只有在那种情况下我能获胜,我才会攻击。我也会从多个船厂派出舰队来占领单个船厂。我知道这容易受到相邻攻击,但我没时间像 @harmbuisman 在他的 bot 中那样修复这个问题。
有一件事我一直没完全搞清楚,那就是我自己未来的生产计划。当 Kore 有限且船厂争夺资源进行生产时,我可能会误判一个船厂能生产多少飞船,从而搞砸我自己的防御。
基本上需要决定:1) 何时扩张 和 2) 向哪里扩张。
何时扩张:当 Kore 收集速度快于消耗速度时,应该扩张。
何时不扩张:如果飞船/船厂比率明显小于对手的比率。
向哪里扩张:这是基于潜在利润(附近的 Kore)和风险(附近的船厂)的平衡选择。
然后根据附近 Kore 的总和对候选位置进行评分。
如果舰队受到攻击,检查以下是否可能: