artificial-intelligence - 如何为 TIC-TAC-TOE 变体游戏创建评估函数

标签 artificial-intelligence minmax evaluation-function

<分区>

我实际上正在开发棋盘游戏,它是 TIC-TAC-TOE 的变体游戏。游戏的具体内容如下:

1. 游戏在 n 上进行x n板,带n变量。

2. 如果玩家成功放置 k 则他获胜。对齐第一个,k是可变的。

3.一个比对由l构成水平、垂直或对角线标记(XO)。 l是固定的。

4. 如果 n x n网格已满(没有玩家可以添加标记 XO)并且没有玩家成功放置 k对齐,以便绘制游戏。

我正在使用 minmaxalpha-beta prunning算法。这是我的第一个人工智能程序,我不知道如何创建算法要使用的评估函数。我在网上看到了一些使用 Material 权重来评估位置的示例,但我不能在我的案例中应用它。实际上,我使用的是一个随机评估函数,它返回一个介于 -100 之间的值。和 100 .

    float Conf_eval(Configuration c)
       {
         return (rand()%201)-100;
       }

关于如何评估给定电路板配置的任何想法?

最佳答案

本书 Artificial Intelligence - A Modern Approach 对此进行了深入讨论

还有优秀的implementations可用(这是java,还有python,你可以谷歌更多)基于系列丛书。包括井字游戏(和 alpha-beta 修剪剂)。

如果您使用的是 min-max algorithmalpha-beta prunning ,除了您的启发式函数之外,您还可以使用排序的“ Action ”列表来更好地执行(一个简单的效用-函数将分配 1 表示胜利,0 表示平局,-1 表示失败- 这些都是最小-最大扩展树的叶节点)。

例如,要对操作进行排序,您可以选择将您的符号(XO)添加到明确的胜利路径的操作。这最终会导致更好的修剪。

关于artificial-intelligence - 如何为 TIC-TAC-TOE 变体游戏创建评估函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20872330/

相关文章:

artificial-intelligence - 如何为国际象棋编写神经网络?

artificial-intelligence - 遗传算法的选择算子

css - CSS中的minmax()和clamp()有什么区别?

mysql - 在 SQL 中请求带日期的多列最小值/最大值

python - 在XGB中使用F分数

java - Alpha-beta 移动顺序

Javascript 在具有纬度和经度的最小值和最大值的表中查找并返回网格值

machine-learning - 如何为游戏创建良好的评估功能?

machine-learning - 如何为棋盘游戏(wizwoz)结果创建评估函数

artificial-intelligence - 我是否应该向由遗传算法训练的人工神经网络添加偏差