接上文 http://blog.youkuaiyun.com/jurbo/article/details/76526683
本文内容:遗传算法提供游戏软件 AI 演化的可能。虽然遗传算法不是经常被应用于游戏中,但是它们在某些特定应用方面的潜力是值得令人期待的,尤其是结合其他方法使用的时候。
遗传算法
在真实世界中,物种会不断进化,使其能更好的适应环境,这些物种也是最适宜继续存活下去的生物。
遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
通过使用遗传算法,如同真实世界那样,游戏世界中的元素也可以演化,并适应不同的环境,更加智能。
演化过程
游戏中遗传算法的实现分成四个步骤,如图 15-3 所示。
建立第一代:整个族群会载入一组起始特征
适合度分等:该族群开始和环境互动后,必须以某种方式对个体做等级分类,这将告诉我们族群中的哪些个体最为优良
选择:选出族群中的某些个体繁衍后代,用上一代最为优良的特征繁殖下一代
演化:结合这些特征繁衍出适应力更强的下一代的过程
遗传算法实际上是一种最佳化过程,我们试着找出适应力最强的一组特征,即我们要找特定问题的最佳解决方案。
第一代
第一代族群中的每个个体,都代表当下问题的可能解决方案之一。建立第一代的方法之一,是随机配置染色体。
编码是把染色体存储在计算机中某数据结构中的过程。遗传算法常用的是字符串、数组、列表以及树结构。
图15-4 是花朵的第一代实例,这些假象的花,含有一些随机染色体,从而影响其在环境中的生长。
适合度分等
这一步是评估族群中的每一个个体。我们试着找出族群中最优良的个体,通常我们用适合度函数完成这项工作。适合度函数的目的是替族群中的个体分等,继而得知,哪些个体是解决当下问题的最佳答案。
图15-5 是花朵进行适合度分等的结果。在此,假设长的最高的,就是最能适应的花朵。
选择
在选择过程中,我们选择适合度最高的哪些个体繁殖下一代。在生物世界中,通常是父母双亲贡献染色体给后代。在游戏开发中,双亲如何组合都可以。例如,可以组合最优等个体的前两个、五个或十个个体的特征。
图15-6 是利用适合度函数算出的分等情况,选择最优的个体产生下一代,就此例而言,就是选出两朵长得最高的花。
演化
演化是利用选择步骤,建立新个体的过程。我们取出族群中适合度最佳的个体的个别染色体,然后开始组合它们的染色体。此时,也要注意引入随机突变(真实世界中也会有染色体突变)。一旦演化过程完成后,就再回到适合度分等的步骤中。
就此例而言,我们组合了两朵最高的花朵的染色体,用来建立新花朵,在此过程中也引入了两个随机突变,如图15-7 所示。
植物生命的演化
第一个实例是,如何应用遗传算法让花朵不断地繁衍后代,在其环境中生长下去。
我们定义了一系列假设的环境条件,让花朵在其中生长。每朵花都包含基因信息,表示出其理想的生长环境。花朵的理想生长环境和实际条件最接近的,就会长的最高。
最高的花朵会被视为适合度最好,其基因信息就会传递给下一代。这会让花朵繁衍后代时,在高度