四. 遗传算法
1.定义
遗传算法的基本特征:
智能式搜索:
依据适应度(目标函数)进行智能搜索。
渐进式的优化:
利用复制、交换、突变等操作,使下一代结果优于上一代。
全局最优解:
采用交换和突变等操作产生新个体,使得搜索得到的优化结果逼近全局最优解
黑箱式结构:
根据问题的特性进行编码(输入)和确定适应度(输出),具有只考虑输入与输出关系的黑箱式结构,并不深究输入与输出关系的原因。
通用性强:
不要求明确的数学表达式,只需要一些简单的原则要求,可用于解决离散问题、函数关系不明确的复杂问题。
并行式运算:
每次迭代计算对群体中的所有个体同时进行运算,是并行式运算方式,搜索速度快。
有效应用领域:
结构优化设计、人工智能、复杂问题优化、复杂系统分析、综合应用
遗传算法和遗传规划自身需要完善的环节:
编码技术和程序表达技术的改进;
复制、交换、突变等遗传操作的改进;
适应度的表达和计算的改进;
寻求其他有效遗传算子,防止近缘杂交、过早收敛;
进一步探讨遗传算法和遗传规划的机理;
开发遗传算法和遗传规划的商业软件。
2.基本运算过程
- 编码、随机产生初始群体
- 个体评价、选择、确定是否输出
- 随机交叉运算
- 随机变异运算
- 转向个体评价,开始新循环
编码
遗传算法的工作对象时字符串,对字符串的编码要求:
字符串要反映所研究问题的性质
字符串的表达要便于计算机处理
适应度
在遗传算法中,衡量个体优劣的尺度是适应度。根据适应度的大小决定个体繁殖的数量、或者决定其是否消亡。适应度是驱动遗传算法的动力。
复制
复制算子将优良个体在下一代予以繁殖,体现了‘适者生存’的自然选择原则。
个体被复制的数量是按照适应度的大小决定的,适应度大的复制的多,适应度小的复制的少,群体中个体总数保持不变。
交换
交换是遗传算法中产生新个体的主要手段,将两个个体部分的字符互相交换。
执行交换的个体是随机选择的
交换的概率一般为50%~80%(概率可调整)
变异
变异是遗传算法中产生新个体的另一种方法,借鉴了生物学中的突变现象,将被选择的个体的部分字符进行补运算。(取反运算)
终止条件
遗传算法是一种反复迭代的搜索方法,它通过逐次进化逐渐逼近最优解。
最常用的方法是迭代代数;
当目标函数有最优目标值时,可采用控制偏差的方式实现终止;
第三种终止方法是检查适应度的变化。
3.模式理论
模式理论的基本概念
编码的左边数字越小,则其适应度将越大。这种字符串(编码)的形式特征就叫做编码的模式(Schema)
模式中确定的字符的个数称为模式的阶次(Order),记住O(H)。
例如:O(000**) = 3
模式中最前面和最后面两个确定字符的距离称为模式的长度(Defining Length),记住:▷(H)。
例如:▷(00*0*) = 3
▷(*0***) = 0
若字符串的长度为L,字符的取值为k种,则字符串的模式数目为n1 = (k + 1)^L.
*遗传过程的模式数目及模式定理
这个定理说明:
长度短、阶次低、平均适应度大的模式在遗传算法循环中呈指数增长。
4.算子及参数技术
遗传算子(Genetic Operators)
选择算子(Selection Operators);
交叉算子(Crossover Operators);
复制算子(Reproducion Operators);
变异算子(Mutation Operators);
重排序算子(Reordering Operators);
倒序算子(Inversion Operators);
生态算子(Niche Operators);
显性算子(Deminace Operators)。
参数技术
编码(Coding)与解码(Decoding);
适应度函数(Fitness Function)与评估(Evaluation);
选择(Selection)与复制(Reproduction);
交换(Crossover);
变异(Mutation);
其他算子(操作)
编码与解码
编码原则
原则一:有意义积木块编码原则
应使用能易于产生与所求问题相关的、且具有低阶、短定义长度模式的编码方案。
原则二:最小字符集编码原则
应使用能使问题得到自然表示或描述的具有最小编码字符集的编码方案。
编码方法
十进制码(Decimal Code)
直接用十进制数编码,使用较少。
优点:无需解码
缺点:突变的可能性太多,有9种;
交换较粗略,在多代循环后收敛太慢。
适用范围:变量多、数字大、初选阶段
二进制编码(Binary Code)
(正整数转化的二进制码)
缺点:需要解码,增大了运算量。
优点:突变时取反即可,唯一确定;
交换时解可精确变化,在多代循环后收敛速度较快。
适用范围:精选阶段
十进制码转化为二进制码
手工计算:短(倒)除法。
程序计算:取模、取整。
编码
解码
轮盘赌选择方法
适应度函数尺度变换
交叉
变异
求解步骤
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxsEhhO3-1595344288483)(D:%5Ccode%5Chello-world%5Cnotebook%5Cphoto%5Cimage-20200721150803202.png)]
根据上图,可以得出遗传算法的主要运算过程如下所述:
步骤一:初始化。
设置进化代数计数器t;
设置最大进化代数T;
随机生成M个个体作为初始群体P(0);
步骤二:个体评价。计算群体P(t)中各个个体的适应度。
步骤三:选择运算。将选择算子作用于群体。
步骤四:交叉运算。将交叉算子作用于群体。
步骤五:变异运算。将交叉算子作用于群体。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t + 1)。
步骤六:终止条件判断。若t <= T, 则:t + 1 → t,转到步骤二;
若 t > T, 则以进化过程中所得到的具有最大适应度的那个个体作为最优解输出,终止运算。