差分进化算法
链接地址:【算法入门】小姐姐带你五分钟入门差分进化算法|又名爸爸与真假儿子的相爱相杀
基于群体的随机的并行搜索算法,求非线性不可微连续空间函数最小化
一、算法框架
1、种群初始化(产生爸爸)
由解空间的最大值减最小值,再乘以随机树,最后加上最小值得到。
注意这里说的是第i条染色体的第j个维度,而这里的最大最小值,就是从这个维度上取得。
最后随机产生N个个体。
2、变异(假儿子)
这里选用一种最常用的方法
可以随机选择爸爸,也可以选择适应度最好的爸爸。因此这很多中组合方式就有很多种DE算法(差分进化算法)
F是一个缩放因子,影响算法的全局寻优能力。
F越小,算法对于局部的搜索能力更好;F越大,算法更能跳出局部极小点(但是收敛更慢)
如果变异生成的个体不属于不属于需要探索的种群,就随机产生一个个体。
3、交叉(真儿子)
把真爸爸和假儿子放在一起,给真儿子传递基因。
对于每个元素,通过概率(交换信息的大小程度)得出元素来自真爸爸还是假儿子,同时对于每个染色体,都会在假儿子中随机指定一位传递给真儿子,保证元素不是全部来自真爸爸。
4、选择
比较每个父亲和儿子的适应度,选择适应度高的。
肯定会收敛到全局最优点。