Locked. This question and its answers are locked,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。








战舰!

早在2003年(那时我才17岁),我参加了Battleship AI编码比赛。即使我输掉了比赛,我仍然从中获得很多乐趣并从中学到了很多。

现在,我想复活这场比赛,以寻找最好的战舰AI。

这是the framework, now hosted on Bitbucket

获胜者将获得+450荣誉! 比赛将于于2009年11月17日举行。 17日晚零时之前不接受任何输入或编辑。 (中部标准时间)
尽早提交参赛作品,这样您就不会错过任何机会!

要保留此目标,请遵循比赛的精神。

游戏规则:
  • 在10x10的网格上进行游戏。
  • 每个参赛者将把5艘船(长度分别为2、3、3、4、5)布置在各自的网格上。
  • 没有船可以重叠,但它们可以相邻。
  • 然后,竞争对手轮流向对手射击。
  • 游戏的一种变体允许每排射击多发一枪,每艘幸存飞船射击一发。
  • 如果击球落下,命中或未击中,对手将通知竞争对手。
  • 当任何一位玩家的所有飞船沉没时,游戏结束。

  • 比赛规则:
  • 竞争的精神是找到最佳的战舰算法。
  • 任何违反比赛精神的赛事将被取消参赛资格。
  • 干扰对手违反了比赛的精神。
  • 在以下限制下可以使用多线程:
  • 轮到您时,最多可以运行一个线程。 (但是,任何数量的线程都可以处于“挂起”状态)。
  • 除了“正常”之外,没有其他线程可以运行。
  • 鉴于以上两个限制,在轮到您时,将确保至少有3个专用CPU内核。
  • 每个游戏在主线程上分配给每个竞争对手1秒的CPU时间限制。
  • 用完时间将导致当前游戏失败。
  • 任何未处理的异常都将导致当前游戏的失败。
  • 允许网络访问和磁盘访问,但是您可能会发现时间限制过高。但是,添加了一些设置和拆卸方法以减轻时间负担。
  • 代码应作为答案发布在堆栈溢出中,或者如果链接太大,则链接。
  • 条目的最大总大小(未压缩)为1 MB。
  • 正式地,.Net 2.0/3.5是唯一的框架要求。
  • 您的条目必须实现IBattleshipOpponent接口(interface)。

  • 评分:
  • 101场比赛中最好的51场比赛是比赛的获胜者。
  • 所有竞争对手将以循环赛的方式进行比赛。
  • 然后,最好的一半竞争者将参加双重淘汰赛以确定获胜者。 (实际上,两个的最小乘方大于或等于一半。)
  • 我将在比赛中使用TournamentApi框架。
  • 结果将发布在这里。
  • 如果您提交多个条目,则只有得分最高的条目才有资格获得双盲。

  • 祝好运!玩得开心!

    编辑1:
    感谢Freed,他在Ship.IsValid函数中发现错误。已修复。请下载该框架的更新版本。

    编辑2:
    由于将统计信息持久保存到磁盘等方面引起了极大的兴趣,因此,我添加了一些非定时的设置和拆卸事件,这些事件应该提供所需的功能。这是的最新更改。这就是说:接口(interface)已被修改以添加功能,但是它们不需要任何主体。请下载该框架的更新版本。

    编辑3:
    错误修复1:仅在超时的情况下才调用GameWonGameLost
    错误修正2:如果引擎在每场比赛中都超时,那么比赛将永远不会结束。
    请下载该框架的更新版本。

    编辑4:
    比赛结果:

    最佳答案

    我赞成每场比赛做更多比赛的议案。做50场比赛只是掷硬币。我需要做1000场比赛才能在测试算法之间取得合理的区分。

    下载Dreadnought 1.2

    策略:

  • 跟踪命中率大于0的飞船的所有可能位置。该列表永远不会超过〜30K,因此可以完全保留,这与所有船只的所有可能位置列表(很大)不同。
  • GetShot算法分为两部分,一部分生成随机镜头,另一部分生成随机镜头。
    试图击沉已经被击中的飞船。如果有可能击沉所有命中船只的位置(从上面的列表中),我们将进行随机射击。否则,我们尝试通过选择一个可以消除大部分可能位置(加权)的射击位置来完成下沉船只的任务。
  • 对于随机射击,根据未沉没的飞船之一重叠位置的可能性,计算最佳射击位置。
  • 自适应算法,将船只放置在对手在统计上不太可能射击的位置。
  • 自适应算法,该算法更喜欢在对手在统计上更有可能放置其船只的位置射击。
  • place船大多不互相接触。
  • 关于c# - 最好的战舰AI是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1631414/

    10-12 03:21