战舰AI没有被通知沉没的船

时间:2013-09-30 15:11:24

标签: artificial-intelligence

所以基本上,我必须编写符合所有传统规则的战舰AI,除了你没有通知你的射击是否已经沉没了船只 - 不管它是否是一个打击或小姐
目前我有一个工作人工智能,但它遇到的问题是它必须在每艘敌舰周围开枪,因为它不知道船是否沉没 - 这段视频可能更好地解释它(对于那些谁想知道,有一些定制的船形,而且板是L形的):https://www.youtube.com/watch?v=SzLspp4JzNE
关于如何减少所需射击次数的任何建议?

非常感谢:)

2 个答案:

答案 0 :(得分:1)

计算机可以提供哪些信息?船舶数量,每艘船的街区数量,每艘船的形状。该算法必须检查所有剩余船舶的形状并选择下一个场,以便击中的机会最大。也许有一个更好的长期策略而不是"最大的机会",但在深入研究策略之前解决形状识别部分。

如果事先不知道船只的形状,那么算法可以做的不多。它只能检查被击中的块是否是最大剩余船的一部分。这里的先进策略是确定最大的船舶是否不能在其他任何地方。如果剩下其他船只,那么使用轮流搜索它们,但是在这种搜索模式中,你也可以消除最大船只在其他地方的可能性。

但是,如果每回合的攻击次数与剩余船只的数量成比例,那么你必须尽快消灭每艘船,所以"高级"不应使用上述策略。

答案 1 :(得分:0)

最基本的想法是保留有关沉船和剩余船只的信息(我假设您知道,a_i船只有i件,而且你沉没了所有船只4件,然后击中一些连接的三件式船你会知道,不再需要在它周围射击了。因此,一般来说,你可以在击中的船上射击,因为击中的碎片数量比最大的非空级船只的数量要小。一旦你沉没了一些 - 你减少了相应的船级计数器。

一些有趣的选择是根据玩过的游戏学习船舶位置和形状的一些统计数据 - 如果你与人类玩家对战最有可能,他不会把任何船只放在任何地方 - 有一些心理方面那"偏见"您对于您认为难以找到的展示位置的决定" - 你的程序可以学习这样的条件概率,并用它来承担沉没一些船只而不用围绕它射击的信任。不幸的是,这不适用于精心设计的 - 统一放置船只 - 算法。