⼈⼯智能_遗传算法 遗传算法 遗传算法介绍 遗传算法是⼀种模拟⽣命进化机制的搜索和优化⽅法,是把⾃然遗传学和计算机科学结合起来的优化⽅程,有很强的解决问题的能⼒和 ⼴泛的适应性。其假设常描述为⼆进制位串,位串的含义依赖于具体应⽤。搜索合适的假设从若⼲初始假设的群体集合开始。当前种群成员 通过模仿⽣物进化的⽅式来产⽣下⼀代群体,如随机变异和交叉。每⼀步,根据给定的适应度评估当前群体的假设,⽽后使⽤概率⽅法选出 适应度最⾼的假设作为产⽣下⼀代的种⼦。 遗传算法的⼏个基本概念 (1)染⾊体(Chromosome):在使⽤遗传算法时,需要把问题的解编成⼀个适合的码⼦。这种具有固定结构的符号串既是染⾊ 体,符号串的每⼀位代表⼀个基因。符号串的总位数成为染⾊体的长度,⼀个染⾊体就代表问题的⼀个解,每个染⾊体也被称为⼀个个体。 (2)群体(Population):每代所产⽣的染⾊体总数成为群体,⼀个群体包含了该问题在这⼀代的⼀些解的集合。 (3)适应度(Fitness):对群体中每个染⾊体进⾏编码后,每个个体对应⼀个具体问题的解,⽽每个解对应于⼀个函数值。该函数值 即适应函数,就是衡量染⾊体对环境适应度的指标,也是反映实际问题的⽬标函数 基本的遗传操作 (1)选择(Select):按⼀定的概率从上代群体中选择M对个体作为双亲,直接拷贝到下⼀代,染⾊体不发⽣变化。 (2)交叉(Crossover):对于选中进⾏繁殖的两个染⾊体X,Y,以X,Y为双亲作交叉操作,从⽽产⽣两个后代X1,Y1. (3)变异(Mutation):对于选中的群体中的个体(染⾊体),随机选取某⼀位进⾏取反运算,即将该染⾊体码翻转。 ⽤遗传算法求解的过程是根据待解决问题的参数集进⾏编码,随机产⽣⼀个种群,计算适应函数和选择率,进⾏选择、交叉、变异操 作。如果满⾜收敛条件,此种群为最好个体,否则,对产⽣的新⼀代群体重新进⾏选择、交叉、变异操作,循环往复直到满⾜条件。 TSP问题 所谓TSP问题(旅⾏商问题)即最短路径问题就是在给定的起始点S到终⽌点T的通路集合中,寻求距离最⼩的通路,这样的通路成为S 点到T点的最短路径。在寻找最短路径问题上,有时不仅要知道两个指定顶点间的最短路径,还需要知道某个顶点到其他任意顶点间的最短 路径。⽤遗传算法解决这类问题,没有太多的约束条件和有关解的限制,因⽽可以很快地求出任意两点间的最短路径以及⼀批次短路径。 TSP问题的遗传算法设计与实现 (1)编码问题:由于这是⼀个离散型的问题,我们采⽤整数编码的⽅式,⽤1-n来表⽰n个城市,1-n的任意⼀个排列就构成了问 题的⼀个解。可以知道,对于n个城市的TSP问题,⼀共有n!种不同的路线。 (2)种群初始化:对于N个个体的种群,随机给出N个问题的解(相当于是染⾊体)作为初始种群。这⾥具体采⽤的⽅法是:1,2, …,n作为第⼀个个体,然后2,3,…n分别与1交换位置得到n-1个解,从2开始,3,4,…,n分别与2交换位置得到n-2个解,依次类推。(如 果这样还不够初始种群的数量,可以再考虑n,n-1,…,1这个序列,然后再按照相同的⽅法⽣成,等等) (3)适应度函数:设⼀个解遍历初始⾏⾛的总距离为D,则适应度fitness=1/D.即总距离越⾼,适应度越低,总距离越低(解越 好),适应度越⾼。 (4)选择操作:个体被选中的概率与适应度成正⽐,适应度越⾼,个体被选中的概率越⼤。这⾥仍然采⽤轮盘赌法。选择作为交叉的 双亲,是根据前代染⾊体的适应函数值所确定的,质量好的个体,即从起点到终点路径长度短的个体被选中的概率较⼤。交叉率不可选择过 ⼩,否则,延缓获得最优解的过程,本程序选择 =0.85。 (5)交叉操作:交叉操作是遗传算法最重要的操作,是产⽣新个体的主要来源,直接关系到算法的全局寻优能⼒,这⾥采⽤部分映射 交叉。⽐如对于n = 10的情况,对于两个路径: 1 2 4 5 6 3 9 0 8 7 3 9 7 6 8 0 5 1 2 4 随机产⽣两个[1,10]之间的随机数r1,r2,代表选择交叉的位置,⽐如r1 = 2,r2 = 4,如上图划线的位置,将第⼀个个体r1到r2之间 的基因(即城市序号)与第⼆个个体r1到r2之间的基因交换,交换之后变为: 1 9 7 6 6 3 9 0 8 7 3 2 4 5 8 0 5 1 2 4 划线部分表⽰交叉过来的基因,这个时候会发现可能交叉过来的基因与原来其他位置上的基因有重复,容易直到,第⼀个个体重复基因 的数⽬与第⼆个个体重复基因的数⽬是相同
, 相关下载链接:
https://download.csdn.net/download/qq_43934844/87504799?utm_source=bbsseo