我知道如何使用像minimax这样的算法来玩完美的游戏(在这种情况下,我正在寻找一个类似于抖音的游戏)
然而,我想知道如何创建一个不完美的算法,或者一个不同“技能水平”(简单、中等、困难等)的人工智能,让人类玩家有机会击败它。
切断不同深度的搜索以限制计算机的技能。改变评估功能,使计算机偏爱不同的策略。
非专业人类玩家使用次优策略和有限战术。这些大致对应于对游戏状态的不良评估和提前思考的能力有限。
关于随机性,有一点是需要的,这样计算机就不会总是犯同样的错误,有时会幸运地比平时做得更好或更差。对于这一点,只是不要总是选择最佳路径,而是选择其中按得分加权的路径。你可以让人工智能变得更有趣,让它根据游戏的结果改进它的评估函数,也就是说,更新它的权重。这样它就可以像人类一样,通过玩耍在有限的搜索深度学习更好的评价函数。
我在游戏中使用的一种方法是利用随机值。为了简单的游戏关卡,我让选择随机数的几率对人类玩家有利。例子:
Easy level: only beat the human if you can randomly select a value less than 10 from the range of 1 to 100
Medium level: beat the human if you can select a random value which is less than 50 from a range of 1 to 100
Hard level: beat the human if you can randomly select a value less than 90 from a range of 1 to 100
我相信有更好的方法,但这可能会给你一个主意
“最简单”的方法是在minmax结果的同时使用一个阈值,从超过阈值的结果中创建一个集合,然后随机选择程序要采用的选项/路径。阈值越低,对手可能越容易。
我说可能是因为即使是纯粹的运气,也可以选择最好的举动,因此“初学者的运气”。
本质上,你是在寻求增加可能结果的熵(随机性)。如果你想让电脑对手变笨,你可以限制你的最小最大算法遍历的等级,或者降低算法某部分的分数。