首页 文章

Tic-Tac-Toe的遗传算法

提问于
浏览
14

所以我被赋予了使用遗传算法编写5x5x5井字游戏的问题 . 我的方法是从3x3开始,使其工作,然后扩展到5x5,然后扩展到5x5x5 .

它的工作方式是这样的:

  • 模拟一大堆游戏,并在每个游戏的每个回合中,在相应的表(X表或O表实现为c stdlib映射)中查找响应 . 如果电路板不在那里,请将电路板添加到表中 . 否则,进行随机响应 .

  • 我有完整的表后,我初始化了一堆玩家(每个玩家都有一个董事会表的副本,用随机响应进行初始化),然后让他们互相对抗 .

  • 使用他们的胜利/损失来评估 Health 状况,我保持一定的最佳百分比,然后他们继续前进 . 冲洗并重复X代,最佳玩家应该出现 .

对于3x3,折扣板是其他板的反射/旋转,以及移动要么“取胜”或“阻止赢”的板,我遇到的板总数是53或38,取决于是否你去第一或第二 . 太棒了!在一小时内生成了最佳玩家 . 很酷!

使用相同的5x5策略,我知道表的大小会增加,但没有意识到它会大幅增加 . 即使折扣旋转/反射和强制移动,我的表格约为360万条,看不到尽头 .

好的,所以's clearly not going to work, I need a new plan. What if I don' t列举了所有的电路板,但只是一些电路板 . 好吧,看起来这也不会起作用,因为如果每个玩家只有一小部分他们可能看到的可能的板,那么他们将会做出很多随机动作,明显转向最优化的相反方向 .

实现这一目标的现实方法是什么?我会不会使用电路板功能?目标是尽可能少地编写游戏功能 .

我一直在做研究,但我读到的所有内容都会导致min / max A-B修剪成为唯一可行的选择 . 我当然可以这样做,但GA真的很酷,我现在的方法只是在这里超过现实 .

编辑问题已经解决了:

使用结合了开放空间的汉明距离,可能的胜利条件以及一些其他措施的相似性函数,使得表格降低到可管理的2500种可能性,这可以在几分之一秒内处理 .

1 回答

  • 3

    我对GA的了解非常有限,但在建模板配置中,你不是在问错了吗?您的任务不是枚举所有可能的获胜配置 - 您要做的是找到导致获胜配置的一系列移动 . 也许您应该关注的人群不是一组板块,而是一组移动序列 .

    Edit: 在3x3电路板上我显然没有明显的移动以(1,1)开始的序列最适合X.重要的是,X先放在中间位置 . 如果还有's one or more best first moves for X, maybe there'也是X的最佳第二,第三或第四招?经过几轮健身测试和重新组合后,我们会发现X的第二步通常是相同的,还是一小部分值?那第三步呢?

    这不是极小极大,因为你不是根据董事会的先前状态一次一个地寻找最佳动作,你同时寻找所有最好的动作,希望能够收敛于一个成功的策略 .

    我知道这并没有解决你的问题,但如果想要发展一个成功的策略,那么你想看看一系列动作而不是董事会状态似乎很自然 .

相关问题