教遗传算法人工智能玩超级马里奥大年夜陆_马里奥_物种
这是教授 AI 为 GameBoy 玩超级马里奥乐园系列的第一篇文章,在这里我将向您展示如何开拓遗传算法 AI 以利用 Python 玩超级马里奥乐园。 (完全代码在我的 GitHub 链接在文末)
《超级马里奥大陆》是任天国开拓的一款平台游戏,它讲述了一个年夜胆的水监工马里奥拯救公主的故事。
下面的 GIF 展示了为 GBA 制作《超级马里奥大陆》天下 1-1 第一部分的遗传算法。 不才一节中,我将阐明如何自己编写这个算法。
环境
第一步是 Python 和 Game Boy 仿照器之间的集成。 对付这个,我找到了一个很好的 Python 库,叫做 PyBoy。
https://github.com/Baekalfen/PyBoy
按照 PyBoy 的解释,我能够将 Super Mario Land 游戏集成到 Python 中并开拓所有掌握交互。 要创建环境的第一个事情版本,必须创建一个“init”函数来定义所有初始变量,如马里奥的生命、剩余韶光、天下级别等。 在此之后,您必须创建一个函数以在游戏结束时重置游戏,并创建一个“step”函数以许可 AI 代理与游戏交互并对其实行操作。
在创建许可任何人工智能程序与游戏交互并实际玩游戏的环境之后,让我们选择一种算法并开拓 AI 代理。
遗传算法遗传模型基于利用生物进化观点来优化其行为的算法。
“在生物学中,进化是物种特色经由几代的变革,依赖于自然选择的过程。” [1]
“生物进化理论基于所有物种都干系并随着韶光逐渐变革的想法。 该理论指出,种群中的遗传变异会影响物种的物理特色(表型),个中一些特色可能使个体比其他特色更具上风。” [1] 。
这些身体上风然后可以通过父母延续到后代。 运用于 AI 的这一理论创建了自学习代理,这些代理会不断进化并探索环境以最大化结果。
这个想法很大略,我们为每一代创建一些物种并实行交叉和突变以优化和开拓基因,然后在末了实行最佳物种的选择。
世代
世代是一组物种,每个物种都具有通过突变和交叉产生的特定特色,这些特色是从父母那里遗传的。
将这一观点运用于人工智能,每个物种在第一代出生时都有一组动作,然后根据它们的适应度选择最好的物种连续下一代。 然后,下一代物种会经历一个交叉过程,以根据上一代和变异产生后代来产生变异性。 这个过程不断迭代直到末了一代。
选择
算法的选择部分基于查尔斯达尔文的自然进化理论。
“具有最适宜其环境特色的个体更有可能生存、探求食品、躲避捕食者和抵抗疾病。 这些人更有可能繁殖并将他们的基因传给他们的孩子。 不适应环境的个体生存和繁殖的可能性较小。 因此,他们的基因不太可能传给下一代。 因此,最适宜其环境的个体生存下来,如果有足够的韶光,物种将逐渐进化。” [1]
将此观点运用于人工智能,当我们进入下一代时,我们只选择最适宜“生存”并将其“基因”复制到未来的个体。
交叉
在父母将基因传给下一代的繁殖周期中,他们的基因会发生交叉。 交叉过程从亲本 1 中取出一半基因,从亲本 2 中取出另一半基因,为下一代天生基因。
突变
突变是部分基因随机变革的过程。
这些变革可能只是不影响运动的眇小变革,也可能导致全新的特色并完备改变物种的行为。 对付人工智能,我们通过在模型天生期间随机改变代理动作来实行突变。
适应
遗传算法最主要的变量之一是适应度。
适应度是一个变量,它解释我们希望为我们的环境最大化什么。 适应度公式的眇小变革可能会导致代理行为的巨大变革。
对付超级马里奥大陆,我们希望马里奥向前走并杀去世仇敌以完成舞台。 因此,当马里奥向前移动或杀去世仇敌时,我们会产生一个正值,并且我们每秒钟运用一个折扣,以鼓励马里奥向前快速移动。
遗传算法的完全内容可以参考我们以前发布的文章:
用N.E.A.T遗传算法玩FlappyBird
实验和结果在对仿真环境进行编程并实现遗传算法后,我们可以开始运行仿真并评估模型性能。
出于研究目的,我运行了一个包含 30 代和 5 个物种的模型,以在第 1-1 阶段玩超级马里奥大陆。 以下是第一代的结果:
马里奥能够向前走,但在第一个障碍,一个大略的 Goomba 中失落败了。 让我们看看代理在经由一些基因进化后是否能表现得更好……
30 代之后,我们把稳到了巨大的进化!
AI 代理创造的一些惊人动作是杀去世一些 Goombas 并跳过小管道和高块。 很高兴看到 AI 可以用动态编程做些什么。
我们可以通过下面的基准图表跟踪演化。 在图表的第一部分,它是每一代的均匀适应度(红线)和最大适应度(蓝线),我们可以清楚地看到随着代的发展,均匀适应度和最大适应度的增加趋势。
第二部分显示了每次交互的适应度,我们可以看到每一代内部的变革,这是探索之旅的一部分,以及每一代最大适应度的增加。
如果您想履行此办理方案或理解有关遗传算法的更多信息,您可以在我的 GitHub 存储库上的以下链接中找到完全的 Python 代码:
https://github.com/octavio-santiago/Super-Mario-Land-AI
参考[1] Your Genome, United States, accessed July 2021
作者:Octavio Bomfim Santiago
本文系作者个人观点,不代表本站立场,转载请注明出处!