编码是建立 基因型 与 表现型 的映射关系
编码原则
完备性(completeness):问题空间的所有解都能表示为所设计的基因型;
健全性(soundness):任何一个基因型都对应于一个可能解;
非冗余性(non-redundancy):问题空间和表达空间一一对应
二进制编码
解决常规问题最常用的编码方式
编码原则
二进制的位数由 解空间 大小决定,如 解空间为 0-10,则 编码位数为 3 位 111=12
优缺点
优点-简单
编码、解码操作简单;
交叉、变异便于实现;
缺点-变化剧烈且不连续
二进制编码,随机改变一个位置的数字,可能带来几十(2^4=16)甚至上百(2*10=128)的变化,这使得搜索过程变化剧烈,故而
变异过程不连续;
局部搜索(小范围搜索)能力较差;
不适合高精度问题;
一句话,个体长度较短时,无法满足精度要求;个体长度较长时,增加解空间的搜索难度
浮点数编码
编码原则
根据业务自行设定,一个个体可以是一个浮点数,也可以是多个,如 1.2-3.2-5.3-7.2-1.4-9.7
优点
适用于数值比较大的解
适用于精度较高的解
适用于解空间较大的情况
摘录他人
- 改善了遗传算法的计算复杂性,提高了运算交率
- 便于遗传算法与经典优化方法的混合使用
- 便于设计针对问题的专门知识的知识型遗传算子
- 便于处理复杂的决策变量约束条件
交叉变异的特点
如果是 多个浮点数,基本和二进制的 单点交叉、多点交叉 等雷同,
如果是 单个浮点数,有其方式,也很灵活,
// 如交叉:随机产生介于 父亲和母亲 间的一个数,(5.5,7, 6.3),
// 如变异:随机加上一个 (-1, 1)之间的一个数
符号编码
摘录他人
- 符合有意义积术块编码原则
- 便于在遗传算法中利用所求解问题的专门知识
- 便于遗传算法与相关近似算法之间的混合使用。
实值编码
根据实际情况编码
参考资料:
https://www.jianshu.com/p/ae5157c26af9 超详细的遗传算法(Genetic Algorithm)解析
https://blog.csdn.net/u010451580/article/details/51178225/