返回列表

Post-mortem for HuiUnited's Halite IV bot (26th rank)

400. Halite by Two Sigma | halite

开始: 2020-06-15 结束: 2020-09-22 游戏AI 数据算法赛
HuiUnited 的 Halite IV 机器人赛后总结(第26名)

HuiUnited 的 Halite IV 机器人赛后总结(第26名)

作者: HuiUnited | 排名: 第26名 | 发布日期: 2020-09-23

我得分最高的机器人代码在这里

首先,我要感谢 Two Sigma 和 Kaggle 组织了这么有趣的比赛。我也非常感激 Yegor BiryukovAlexis Cook 的 Notebook,他们帮我入门。

起初,我做这个只是为了学习 Python 并开始参与 Kaggle 竞赛。我的背景是网络设备的 C 语言编程,没有任何机器学习经验。

我采用了一种直接(你可能会说是天真)的方法:挖掘、转向、 deposit(存放),完全没有试图去“狩猎”。每艘船扫描其周围最多四步的范围,以找到最高 halite 的格子(通过权重偏好较近的格子)并前往那里。邻近的船只不会去已经被选择的格子。这看起来效果不错,所以我一直坚持到最后。我在比赛的最后一周对此进行了增强,通过选择我方象限中 halite 含量最高的 9 个格子(船厂周围两步除外)作为前 9 艘船的目标,以改善开局阶段(直到大约第 20 步)。我通过一个基于游戏步数和其他玩家狩猎激进程度变化的最大常数来控制每艘船挖掘多少。

在拥挤的空间中导航似乎非常具有挑战性。我试图通过在每个步骤开始时评估每艘船周围两步的风险来解决这个问题。我为我方或敌方船只、其距离和携带的 halite 分配不同的风险值。我让可能被攻击的船只优先选择其移动,随后是风险值较低的船只(试图为处于风险位置的船只腾出空间)。

尽管做了以上所有工作,我的提交分数就是无法超过 1100。在第 70-200 步左右,由于没有足够的船只能在狩猎猛攻中幸存下来,表现会开始下滑。那时我意识到我也需要狩猎,所以我尝试了最简单的方法。我在第 70 步左右停止收集,每艘 halite 为零的船会寻找附近(周围三步内)携带最多 halite 的敌方船只,并向该船移动。船只之间完全没有协调。这似乎将我的分数提高到了 1200 左右的水平。我认为并不是真的因为狩猎本身有帮助,主要是因为我保存了足够的船只,以便在第 300 步之后有机会再次收集。后来我对此进行了增强,如果没有敌方船只就在周围进行一些挖掘,这有一点帮助。

我还改进了船厂的创建和放置,看到了一点小进步。那里需要更高的精度。

其他值得注意的改进来自于对其他玩家行为的反应。rica_chan 的机器人教会了我很多。:) 例如,它在接近尾声时的船厂破坏促使我收紧了船只和船厂的创建逻辑。我还复制了 mzotkiew 的终局全力存放策略。

总而言之,这是一次非常有趣和很棒的体验。期待下一次比赛。我感谢所有分享代码的人。这是很好的学习资源。非常感谢!

同比赛其他方案