我已经创建了一个Gomoku(连续5) AI使用阿尔法-贝塔剪枝。它在一个不那么愚蠢的水平上移动。首先,让我描述α-Beta算法的分级函数.当它收到一个板作为输入,它首先发现所有重复的石头,并给它一个分数取决于它的有用性作为一个威胁。它将返回所有重复分数的总和。
但是,问题是我明确地决定了分数(总共4分),而且他们似乎不是最好的选择。所以我决定用遗传算法来生成这些分数。每一个基因都将是4个分数中的一个。例如,硬编码分数的染色体应该是:5,400,000,000,50000。
然而,由于我使用遗传算法来创建评分函数的分数,我不知道该如何实现遗传适应度函数。因此,我想到了以下几点:
而不是使用适应度函数,我只是将选择过程合并在一起,如果我有2条染色体,A和B,并且需要选择一条,我将模拟一个游戏,在每个AI中同时使用A和B染色体,然后选择获胜的染色体。
1.这是否是替代健身功能的可行办法?
2.由于Alpha-Beta算法的特点,我需要给出获胜条件的最大得分,在大多数情况下,该条件被设置为无穷大。然而,由于我不能使用无限,我只是使用了一个荒谬的大数字。我还需要把这个分数加到染色体上吗?或者因为它是微不足道的,不改变评分函数的值,把它作为一个常量?
发布于 2017-11-28 16:42:07
免责声明:我对遗传算法没有实际经验,只是有点兴趣.
所以你的策略是让个人配对,让他们互相竞争。消灭失败者,培育剩下的?从理论上讲,这是一种合理的方法。我只是有一些保留/建议:
2^number
。在种群规模、基因复杂性和分数分辨率之间可能存在一个甜蜜的点。关于瑞士锦标赛系统的更多信息
这样,如果你得到一些平局,就不会有多大影响了。如果你得到的只是平局,你就有麻烦了.
https://softwareengineering.stackexchange.com/questions/361430
复制相似问题