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