我使用 Alpha-Beta Pruning 创建了一个 Gomoku(连续 5 个)AI。它在一个不那么愚蠢的水平上采取行动。首先,让我模糊地描述一下Alpha-Beta算法的评估函数。
当它接收到一个棋盘作为输入时,它首先找到所有重复的棋子,并根据其作为威胁的有用性,从 4 个可能的值中给它打分,这取决于长度。它将返回所有重复分数的总和。
但是,问题是我明确决定了分数(总共 4 个),它们似乎不是最好的选择。
所以,我决定实现一个遗传算法来生成这些分数。每个基因将是 4 个分数之一。因此,例如,硬编码分数的染色体将是.
但是,因为我使用遗传算法来创建评估函数的分数,所以我不确定应该如何实现遗传适应度函数。所以,相反,我想到了以下几点:
我不会使用适应度函数,而是将选择过程合并在一起:如果我有 2 条染色体,A 和 B,并且需要选择一个,我将在每个 AI 中使用 A 和 B 染色体来模拟游戏,并且选择获胜的染色体。
这是对适应度函数的可行替代吗?
由于 Alpha-Beta 算法的特性,我需要将最大分数赋予获胜条件,在大多数情况下设置为无穷大。但是,因为我不能使用无穷大,所以我只使用了一个荒谬的大数。我还需要将此分数添加到染色体吗?还是因为它无关紧要并且不会改变评分函数的值,所以将其保留为常数?
当最初创建染色体时,随机生成,遵循标准分布被认为是最优化的。然而,就我而言,基因有很大的偏差。随机生成染色体还可以吗?