背景介绍
DE(Differential Evolution Algorithm):是一种高效的全局优化算法。它也是基于群体的启发式搜索算法,群中的每个个体对应一个解向量。差分进化算法的进化流程则与遗传算法非常类似,都包括变异、杂交和选择操作,但这些操作的具体定义与遗传算法有所不同。
核心思想
1. 随机产生一些初始种群
2. 根据适应度对种群采用某种方式进行自然选择
3. 对选择剩余的种群进行差分遗传,产生新的种群
4. 对父代和子代留一处理,回到步骤2,直到满足某个终止条件
5. 此时剩余的是适应度较好的种群,比较可得该算法的最优解
算法流程
代码实战
代码中所用测试函数可以查看相关文档,测试函数(Test Function)
DE_main.m
1 | clear;clc;close all; |
f.m
1 | function res=f(x) |
实验结果
$$f(x)=x \cdot \sin(\sqrt{\lvert x \rvert}) \ , \ x \in [-500,500]$$
$$理论值:f(x)_{min}=f(-420.96874592006)=-418.982887272434$$
$$所求值:f(x)_{min}=f(-420.975929624477)=-418.982887272434$$
性能比较
- 优点:
- 受到参数影响较小
- 不会产生早熟收敛问题
- 适用于多维的最优值求解
- 从群体出发,具有并行性
- 算法不依赖初始种群的选择
- 可用于求解复杂的非线性优化问题
- 使用概率机制进行迭代,具有随机性
- 具有可扩展性,容易与其他算法结合
- 缺点:
- 对问题编码表示较为困难
- 因为有大量的比较和选择,可能速度稍慢于遗传算法