差分进化算法

差分进化算法(Differential Evolution, DE)是一种新兴的进化计算技术,或称为差分演化算法、微分进化算法、微分演化算法、差异演化算法。它是由Storn等人于1995年提出的,最初的设想是用于解决切比雪夫多项式问题,后来发现DE也是解决复杂优化问题的有效技术。DE与人工生命,特别是进化算法有着极为特殊的联系。差分进化算法是基于群体智能理论的优化算法,通过群体内个体间的合作与竞争产生的群体智能指导优化搜索。但相比于进化算法,DE保留了基于种群的全局搜索策略,采用实数编码基于差分的简单变异操作和一对一的竞争生存策略,降低了遗传操作的复杂性。同时,DE特有的记忆能力使其可以动态跟踪当前的搜索情况,以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息,适于求解一些利用常规的数学规划方法所无法求解的复杂环境中的优化问题。

差分进化算法是一种基于群体进化的算法,具有记忆个体最优解和种群内信息共享的特点,即通过种群内个体间的合作与竞争来实现对优化问题的求解,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法

标准DE算法
(1)首先在问题的可行解空间随机初始化
(2)然后进行变异操作
随机选择3个不同的向量Xr1,Xr2,Xr3且r1<>r2<>r3<>i
计算Vi = Xr1 + F*(Xr2-Xr3) 其中F为缩放因子
(3)接着进行交叉操作,其中CR为交叉因子
Ui[j]=Vi[j] if (rand<CR) or j==(jRand)
Xi[j] otherwise
其中jRand为随机维度
(4)最后进行选择操作
如果Ui优于Xi,则Ui替换Xi,否则保留Xi
(5)如果满足算法结束条件,停止,否则执行(2)

差分进化算法的搜索性能取决于算法全局探索和局部开发能力的平衡,而这在很大程度上依赖于算法的控制参数的选取,包括种群规模缩放比例因子和交叉因子等。相对其他进化算法而言,DE所需调节的控制参数较少,合理的参数设置可以参考相关文献。这里水文工具集中也提供了一篇供参考:差分进化算法的参数影响研究

归纳起来,DE算法具有如下优点:
(1)算法通用,不依赖于问题信息;
(2)算法原理简单,容易实现;
(3)群体搜索,具有记忆个体最优解的能力;
(4)协同搜索,具有利用个体局部信息和群体全局信息指导算法进一步搜索的能力;
(5)易于与其他算法混合,构造出具有更优性能的算法。

差分进化算法的实现可以参考CnHUP的Python实现的差分进化算法源代码

相关资料:http://www2.lut.fi/~jlampine/debiblio.htm

去搜索与 智能算法 的相关书籍吧



前一篇:思维进化计算

后一篇:蚁群算法

发表评论

You must be logged in to post a comment.