gpt4 book ai didi

artificial-intelligence - 井字游戏的遗传算法

转载 作者:行者123 更新时间:2023-12-03 15:03:02 25 4
gpt4 key购买 nike

所以我被分配了使用遗传算法编写一个 5x5x5 井字游戏的问题。我的方法是从 3x3 开始,让它工作,然后扩展到 5x5,然后扩展到 5x5x5。

它的工作方式是这样的:

  • 模拟一大堆游戏,在每个游戏的每一轮中,在相应的表(X 表或 O 表实现为 c++ stdlib 映射)中查找响应。如果板子不在那里,把板子加到 table 上。否则,进行随机响应。
  • 在我有完整的 table 后,我初始化了一群玩家(每个人都有一个棋盘表的副本,用随机响应初始化),让他们互相比赛。
  • 使用他们的输赢来评估健康,我保留了一定比例的最好的,然后他们继续前进。冲洗并重复 X 代,应该会出现最佳播放器。

  • 对于 3x3,打折板是其他板的反射/旋转,以及移动是“取胜”或“阻止胜利”的板,我遇到的板总数是 53 或 38,具体取决于你先去还是第二。极好的!一个小时内产生了一个最佳球员。很酷!

    对 5x5 使用相同的策略,我知道表的大小会增加,但没有意识到它会增加得如此剧烈。即使不考虑轮换/反射和强制移动,我的表也有大约 360 万个条目,而且看不到尽头。

    好吧,这显然行不通,我需要一个新计划。如果我不列举所有的板,而只列举一些板怎么办。好吧,这似乎也行不通,因为如果每个玩家只有他们可能看到的一小部分可能的棋盘,那么他们将进行大量随机移动,显然会朝着相反的最佳方向发展。

    什么是解决这个问题的现实方法?我会被卡在使用电路板功能上吗?目标是对尽可能少的游戏功能进行硬编码。

    我一直在做研究,但我读到的所有内容都会导致最小/最大,而 A-B 修剪是唯一可行的选择。我当然可以那样做,但是 GA 真的很酷,我目前的方法在这里稍微超出了现实。

    编辑问题已基本解决:

    使用结合了开放空间的汉明距离、可能的获胜条件和其他一些措施的相似性函数,将表格减少到非常易于管理的 2500 种可能性,即 std::map在几分之一秒内处理。

    最佳答案

    我对 GA 的了解非常有限,但是在建模板配置方面,您是不是问错了问题?您的任务不是枚举所有可能的获胜配置——您要做的是找到导致获胜配置的一系列移动。也许您应该查看的人口不是一组棋盘,而是一组移动序列。

    编辑:我没有想太多从一个特定的板开始,而是从一个空板开始。很明显,在 3x3 棋盘上,从 (1,1) 开始的移动序列最适合 X。重要的不是最终棋盘的中间有一个 X,而是 X 首先放在中间。如果 X 有一个或多个最佳的第一步,那么 X 是否也有最佳的第二、第三或第四步?经过几轮适应度测试和重组,我们会发现X的第二步通常是相同的,还是一小部分值中的一个?那么第三步呢?

    这不是极小极大,因为您不是根据棋盘的先前状态一次一个地寻找最佳走法,而是同时寻找所有最佳走法,希望收敛于获胜策略。

    我知道这并不能解决您的问题,但是如果您的想法是制定获胜策略,那么您想要查看移动序列而不是棋盘状态似乎很自然。

    关于artificial-intelligence - 井字游戏的遗传算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5626778/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com