ython开发应用国际象棋应用圆柱模板

AI在做出决策前经过三个不同的步骤。首先,他找到所有规则允许的棋步(通常在开局时会有20-30种,随后会降低到几种)。其次,它生成一个棋步树用来随后决定最佳决策。虽然树的大小随深度指数增长,但是树的深度可以是任意的。假设每次决策有平均20个可选的棋步,那深度为1对应20棋步,深度为2对应400棋步,深度为3对应8000棋步。最后,它遍历这个树,采取x步后结果最佳的那个棋步,x是我们选择的树的深度。后面的文章为了简单起见,我会假设树深为2。

生成棋步树

这个类有五个属性。首先是move,即它包含的棋步,它是个Move类,在这不是很重要,只需要知道它是一个告诉一个起子往哪走的棋步,可以吃什么子,等等。然后是children,它也是个MoveNode类。第三个属性是parent,所以通过它可以知道上一层有哪些MoveNode。pointAdvantage属性是AI用来决定这一棋步是好是坏用的。depth属性指明这一结点在第几层,也就是说该节点上面有多少节点。生成棋步树的代码如下:

变量moveTree一开始是个空list,随后它装入MoveNode类的实例。第一个循环后,它只是一个拥有没有父结点、子结点的MoveNode的数组,也就是一些根节点。第二个循环遍历moveTree,用populateNodeChildren函数给每个节点添加子节点:

这个函数是递归的,并且它有点难用图像表达出来。一开始给它传递了个MoveNode对象。这个MoveNode对象会有为1的深度,因为它没有父节点。我们还是假设这个AI被设定为深度为2。因此率先传给这个函数的结点会跳过第一个if语句。

如果不是将死或者和棋,那么legalMoves变量中的所有棋步都被加入当前结点的子节点中作为MoveNode,然后函数被调用来给这些子节点添加他们自己的MoveNode。

假设/我们有了一个MoveNode的树,我们需要遍历他,找到最佳棋步。这个逻辑有些微妙,需要花一点时间想明白它(在明白这是个很好的算法之前,我应该更多地去用Google)。所以我会尽可能充分解释它。比方说这是我们的棋步树:

如果这个AI很笨,只有深度1,他会选择拿“象”吃“车”,导致它得到5分并且总优势为+7。然后下一步“兵”会吃掉它的“后”,现在优势从+7变为-2,因为它没有提前想到下一步。

在假设它的深度为2。将会看到它用“后”吃“马”导致分数-4,移动“后”导致分数+1,“象”吃“车”导致分数-2。因此,他选择移动后。这是设计AI时的通用技巧,你可以在这找到更多资料(极小化极大算法)。

所以我们轮到AI时让它选择最佳棋步,并且假设AI的对手会选择对AI来说最不利的棋步。下面展示这一点是如何实现的:

这也是个递归函数,所以一眼很难看出它在干什么。有两种情况:当前结点有子节点或者没有子节点。假设棋步树正好是前面图中的样子(实际中每个树枝上会有更多结点)。

第一种情况中,当前节点有子节点。拿第一步举例,Q吃掉N。它子节点的深度为2,所以2除2取余不是1。这意味着子节点包含对手的一步棋,所以返回最小步数(假设对手会走出对AI最不利的棋步)。

该节点的子节点不会有他们自己的节点,因为我们假设深度为2。因此,他们但会他们真实的分值(-4和+5)。他们中最小的是-4,所以第一步,Q吃N,被给为分值-4。

其他两步也重复这个步骤,移动“后”的分数给为+1,“象”吃“车”的分数给为-2。

选择最佳棋步

最难的部分已经完成了,现在这个AI要做的事就是从最高分值的棋步中做选择。

此时有三种情况。如果变量bestMoveNodes为空,那么moveNode的值是多少,都添加到这个list中。如果moveNode的值高于bestMoveNodes的第一个元素,清空这个list然后添加该moveNode。如果moveNode的值是一样的,那么添加到list中。

最后一步是从最佳棋步中随机选择一个(AI能被预测是很糟糕的)

这就是所有的内容。AI生成一个树,用子节点填充到任意深度,遍历这个树找到每个棋步的分值,然后随机选择最好的。这有各种可以优化的地方,剪枝,剃刀,静止搜索等等,但是希望这篇文章很好地解释了基础的暴力算法的象棋AI是如何工作的。

THE END
0.国际象棋夺冠,AI竞争再升级|财经大事件#国际象棋#AI#OPENAI国际象棋夺冠,AI竞争再升级 | 财经大事件 #国际象棋#AI#OPENAI投资者网 上海 0 打开网易新闻 体验效果更佳女土结婚彩礼二十八万八,婚礼当天要一半八羊下车礼,岩老师出击 搞笑成哥 1跟贴 打开APP 印国防参谋长称:1962年的惨痛教训不再有 一叶禅林 打开APP 道士太神通广大竟要被当街斩首 倾听看影视 434跟贴 打开APP jvzquC41o07757hqo1|0xrigq1\N899OJQ
1.把国际象棋设计进关卡?论脑洞大开的《晶核》魔棋战局就我个人而言,小时候还时不时玩两把国际象棋和AI对战,但后来娱乐方式主要依靠手机以后,已经很少享受这种对弈的乐趣了,让我万万没有想到的是:我下一次看见国际象棋,居然是在一个动作手游《晶核》之中。 在朝夕光年推出的最新魔导朋克题材动作手游《晶核》中,“最强AI”就布下了一场由紧张刺激的BOSS战构成的魔棋战局——特色各异jvzquC41pg}t0|npc0ipo7hp1u~04975/2<.594fgvgjn6no{|ggkv623;7947xjvor
2.种族主义国际象棋数据集大猩猩博主油管AI“YouTube AI算法因种族主义而将 'Black' 和 'White'混淆,从而封禁了一个国际象棋频道。” (虽然没有明说,但大意是将黑棋和白棋混淆成黑人和白人。) 原来是在几个月前,一位在国际象棋视频圈内很出名的YouTube博主Agadmator,表示他的YouTube频道被官方封禁,是因为他的视频中包含来该网站所谓的“有害和危险”jvzquC41yy}/ew2jgcrujlftg0ipo8ftvkimg€r142822;761euovnsv/37:4=880jznn
3.象棋软件最强手机版免费下载象棋AI对战软件下载随着科技的发展,人工智能(AI)的概念正在走进千家万户中。当然,象棋也不例外,很多象棋游戏软件中都引入了AI对战模式,一个人闲时也能享受象棋棋力博弈的乐趣,AI对战模式也分难度等级,选择适合自己的AI难度对手,还是可以尝试一较高低的。本站专jvzquC41yy}/5;w0eqs0|}4zstp{s8
4.信AI排行榜,不如信它们的游戏排位分数。相比那些传统排行榜,国际象棋考验的是一套无法靠刷题速成的综合能力,更能展示出一个大模型的思考、涌现能力。 过去,我们要想知道哪个模型牛,主要看两种榜。 第一种就是 AI 竞技场 LMArena,可以把它理解为大模型圈的《蒙面歌王》。 你随便问个问题,它给你两个匿名模型的回答,你觉得哪个好就投哪个。 jvzq<84yyy4{ctjt0pku1wjyu1gsvrhngatfy7ujrAvl??=c2chg7Aj;h2?52k<46cigd
5.AI“应用商店”来了!OpenAI首批70个ChatGPTPlugin最全梳理“开始一场大师级别的AI国际象棋比赛。” “我们来下盘棋吧,我从西西里防御C5开始。” “下盘棋,你先开始。” Web Pilot 功能:根据一个或多个URL, 浏览网页内容并生成摘要、总结、翻译等内容。 基本提示:“根据该URL生成文章摘要。” 高级提示: “生成该URL上文章的详细摘要。” jvzquC41ycrmu}wggvio0lto1cxuklqgu197:A<7;
6.DeepMind推出AlphaZeroAI:国际象棋/围棋/将棋通杀|将棋|国际象棋|围棋AlphaZero 是一款能够从头学习围棋、象棋等棋子游戏的新型人工智能平台。在三款棋类比赛中,AlphaZero 将三款 AI 都挑落下马。 ● Stockfish:国际象棋 AI 世界冠军; ● elmo:2017 年度世界计算机将棋锦标赛冠军; ● AlphaGo Zero:DeepMind 自家的围棋 AI,被誉为史上最强选手。 jvzquC41vgii0|npc0ipo7hp1tumn8723:32465:1fud/rmowv{fe@5963870|mvon