教遗传算法人工智能玩超级马里奥大陆
作者:互联网
这是教授 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 中取出另一半基因,为下一代生成基因。
突变
突变是部分基因随机变化的过程。
这些变化可能只是不影响运动的微小变化,也可能导致全新的特征并完全改变物种的行为。 对于人工智能,我们通过在模型生成期间随机改变代理动作来执行突变。
适应
遗传算法最重要的变量之一是适应度。
适应度是一个变量,它说明我们希望为我们的环境最大化什么。 适应度公式的微小变化可能会导致代理行为的巨大变化。
对于超级马里奥大陆,我们希望马里奥向前走并杀死敌人以完成舞台。 因此,当马里奥向前移动或杀死敌人时,我们会产生一个正值,并且我们每秒钟应用一个折扣,以鼓励马里奥向前快速移动。
实验和结果
在对仿真环境进行编程并实现遗传算法后,我们可以开始运行仿真并评估模型性能。
出于研究目的,我运行了一个包含 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,https://www.yourgenome.org/facts/what-is-evolution
作者:Octavio Bomfim Santiago
标签:人工智能,基因,AI,适应度,物种,遗传算法,马里奥 来源: https://blog.csdn.net/m0_46510245/article/details/118719321