如何影响minimax算法以获得即时奖励?

时间:2017-01-19 22:30:12

标签: java algorithm artificial-intelligence

我正在为Stratego游戏实现minimax(计算机对所有部分都有完美的了解)。但是,我发现计算机通常不会攻击它可以轻易破坏的部分。根据我的理解,minimax得分来自移动树的叶节点(其中每个级别是一个转弯,并且叶子节点的每个得分是使用该位置中的板的评估函数计算的)。因此,如果我有3个级别的深度,计算机可以选择攻击移动1或攻击移动3.根据minimax算法,它具有与之相关的相同分数(得到的棋盘位置具有相同的分数)。那么,我如何影响minimax算法,而不是直接奖励最终的奖励呢?即我希望得分随着时间的推移而衰减,但随着minimax的运作方式,我不知道这是怎么回事。 Minimax始终使用叶节点来确定中间节点。

1 个答案:

答案 0 :(得分:2)

正如其他人在评论中所提到的那样,minimax应该能够注意到是否存在延迟自动捕捉作品的危险,并且更改评估功能以迫使其更喜欢早期捕捉可能对演奏效果不利。

但是,如果你真的想这样做,我认为唯一的办法就是开始在你的游戏状态(不仅仅是棋盘)中存储额外的信息。您需要在每个游戏状态的内存中存储时间戳,这样您就可以在后见之明确切地告诉您之前捕获的一个片段的时间(在哪个回合中)。使用该信息,您可以在搜索树的叶节点中使用的评估函数中实现衰减因子。

另一种解决方案可能是简单地确保您搜索到一个均匀的深度级别; 2或4而不是3.这样,您的算法将始终评估对手最后一次移动的游戏状态,而不是您的计算机玩家。所有评估都会变得更加悲观,这可能会鼓励您的代理人在某些情况下更喜欢早期的奖励。

奇数搜索深度通常导致甚至搜索深度的不同评估的这种效应被称为odd-even effect。您可能有兴趣进一步研究(尽管通常讨论的原因与您的问题不同)。