返回列表

3rd place solution - attack the opponent's second shipyard

501. Kore 2022 | kore-2022

开始: 2022-04-12 结束: 2022-07-26 游戏AI 数据算法赛
第三名方案 - 攻击对手的第二个船坞

第三名方案 - 攻击对手的第二个船坞

作者:bomac1
发布时间:2022-08-06

首先,我想感谢 @bovard 和所有参与者。在比赛期间,我通过反复改进智能体获得了极大的乐趣。

摘要

和许多其他参与者一样,我的智能体基于 @egrehbbt 提供的解决方案,我改进了诸如采矿、建造船坞、防御船坞等操作。

总体而言,许多特征可以通过解析方式计算,因此似乎很少有能从强化学习等统计方法中受益的地方。我花了大约三周时间准备强化学习,但收益似乎不是很大,所以在学习大约一周后,我决定改变方向。

我认为许多操作与金牌和银牌得主的其他智能体几乎相同。另一方面,攻击船坞的操作可能相对独特,这有助于将我的智能体推入获奖范围,因此我将集中解释这一操作,并仅简要描述其他操作。

攻击第二个船坞

以下是在最终评估中获得最高分的智能体。

正如你所看到的,在智能体获胜的大多数比赛中,它都成功攻击了对手的第二个船坞。这种趋势即使在智能体与获奖者中的智能体对战时也成立。另一方面,智能体很少因为攻击第二个船坞失败而输掉比赛。这意味着判断攻击是否会成功非常准确,即使在高分段也非常有效。为了做出这种准确的判断,一些准备工作是必要的。

模拟器

在比赛开始时,我实现了模拟器。它估计了在双方玩家不发出任何指令的情况下,未来25个回合的棋盘状态。比赛的特点之一是,由于已出发舰队的飞行计划已经确定,因此可以较容易地以一定的准确性估计舰队的未来状态。因此,估计结果非常有价值。

估算

在每个回合,智能体估计攻击每个对手船坞需要多少飞船,以及每个友方船坞有多少可用飞船。

估算对手可以用于防御的飞船数量

通过模拟结果,可以估计在每个回合目标船坞及其周围船坞最多可以有多少飞船。因此,智能体根据开始攻击的回合,估算对手智能体可以用于防御的飞船数量。

估算对手可以生成的飞船数量

除了现有的飞船,攻击完成前生成的飞船也可用于防御。因此,智能体根据攻击回合、每回合估计的Kore数量以及每个船坞在每回合生成飞船的能力,计算可以生成多少用于防御的飞船。

估算可用于攻击的友方飞船数量

通过模拟结果,智能体可以估计每回合可用于攻击的飞船数量。如果智能体可以利用下文解释的与友方舰队的碰撞,智能体会将碰撞的友方舰队的飞船数量包括在内。

与友方舰队的碰撞

为了增加用于攻击的飞船数量,智能体在通往要攻击的目标对手船坞的路径中途搜索友方舰队。如果智能体有模拟结果,这种搜索相对容易,因为智能体可以获得友方舰队将在哪一回合出现在哪里的信息。如果路径中途有舰队,智能体会选择与该友方舰队碰撞的路径计划。

攻击判断

基于估计的攻击所需飞船数量和可用攻击飞船数量,智能体决定是否发射舰队进行攻击。此外,如果在8个回合内有机会获得比攻击所需数量更多的飞船,那么智能体会等待该回合而不发射新舰队。

保持船坞的飞船数量

通过上述算法,如果碰巧遇到攻击可行的情况,智能体可以精确地选择攻击操作。为了增加攻击可行情况的机会,采矿计划被决定为在每个船坞至少七个回合后,对手最近船坞将拥有的飞船数量将被确保。这种策略在一定程度上降低了采矿效率,但增加攻击机会有助于提高胜率。

其他操作

除了攻击船坞外,还使用了以下操作:

  • 采矿
  • 防御
  • 移动
    如果有一个船坞在受到攻击时有被占领的风险,智能体会从拥有足够数量飞船的船坞移动一些飞船到该船坞。
  • 转换
  • 攻击舰队
  • 逃跑
    如果判断船坞很可能被占领,船坞会向安全的船坞发射舰队。

再次强调,我非常享受这次比赛,并获得了我的最佳排名!

如果你对我的智能体有任何疑问,请随时在评论中提问。谢谢!

同比赛其他方案