您好,欢迎访问这里是您的网站名称官网!
全国咨询热线+86 0000 88888
意昂-意昂体育建筑节能遮阳公司

新闻动态

NEWS CENTER
智能优化算法--差分进化算法
发布时间:2024-04-22 15:03浏览次数:

差分进化算法(Differential Evolution ,DE)是一种新兴的进化计算技术。它起源于解决切比雪夫多项式问题,现在DE广泛用于解决复杂优化问题,并且取得非常不错的效果。差分进化算法是一种基于差分信息进行自适应寻优的全局优化算法,主要包括变异、杂交和选择三个算子,属于智能算法的一种,其易于实现、鲁棒性强、控制参数少,因此被广泛的应用在各个领域。差分进化是模拟自然界生物随机进化的一种模型,通过反复的迭代进化,保留那些更适应环境的个体,类似于自然界的物竞天择,适者生存。相比其它的进化算法,差分进化算法采用实数编码、基于差分的变异操作和一对一的竞争选择策略,使得遗传操作简单易实现。差分进化算法因其特有的全局记忆能力,可以动态的检测当前的进化状态来调整其搜索策略,具有较强的搜索能力,并且对问题的特征信息不敏感,可以应用在各种复杂环境下,非常适合于求解多极值、高维度的复杂数学优化问题。与此同时,差分进化算法也存在收敛速度慢、容易陷入局部最优的问题。

变异是差分进化算法最显著的特点,个体间的差分信息驱动DE算法的进化方向。种群中的个体按照一定的顺序执行来执行变异,根据选择的变异策略来挑选相应的个体,执行变异操作生成新的临时个体。基本差分变异策略有以下五种:

(1) DE/rand/1:

\\[V_i^g=X_{r1}^g + F*(X_{r2}^g - X_{r3}^g)\\]

(2) DE/best/1:

\\[V_i^g=X_{best}^g + F*(X_{r1}^g - X_{r2}^g)\\]

(3) DE/current-to-best/1:

\\[V_i^g=X_i^g + F*(X_{best}^g - X_i^g) + F*(X_{r1}^g - X_{r2}^g)\\]

(4) DE/rand/2:

\\[V_i^g=X_{r1}^g + F*(X_{r2}^g - X_{r3}^g) + F*(X_{r4}^g - X_{r5}^g)\\]

(5) DE/best/2:

\\[V_i^g=X_{best}^g + F*(X_{r1}^g - X_{r2}^g) + F*(X_{r3}^g - X_{r4}^g)\\]

其中 为当前种群中不同的随机个体下标,i表示当前个体下标,best表示当前全局最优个体下标,F为控制参数缩放因子。

以DE/current-to-best/1变异算子为例,差分进化算法在二维空间的变异算子示意图如下所示:

DE/current-to-best/1变异算子示意图

根据一定的概率从多个个体中挑选基因,重新组合成一个新的个体,实现基因重组就是交叉操作,此概率就是交叉因子CR。通过变异操作产生的一个临时变异向量 V_i ,然后与当前个体进行交叉,得到一个新的个体 U_i ,交叉式子如下所示:

\\[{U_{i,j,G}}=\\left\\{{\\begin{array}{*{20}{c}}{V_{i,j}^g;{\\rm{  }}if{\\rm{ }}rand \\le CR{\\rm{ or }}j={j_{rand}}}\\\\{X_{i,j}^g;{\\rm{       otherwise}}}\\end{array}}\\right\\}\\]

其中rand是0到1之间随机数,通常满足均匀分布,jrand是随机生成的介于1~D之间的整数,D是向量最大维度,示意图如下:

DE交叉算子示意图

经过交叉操作(基因重组)后得到的新的个体U,计算出适应度值,并与当前个体X的适应度值进行比较,如果新个体U的适应度值较好,那么此次迭代认为是一次成功迭代,新个体U将会保留到下一代,当前个体X被淘汰,反之则是一次无用迭代,只保留当前个体X,选择策略公式如下:

\\[X_i^g=\\left\\{{\\begin{array}{*{20}{c}}{X_i^{g - 1};{\\rm{  }}if{\\rm{ }}f(X_i^{g - 1}) < f(U_i^g)}\\\\{U_i^g;{\\rm{   otherwise}}}\\end{array}}\\right.\\]

式子中,\\[f(X_i^{g - 1})\\]为个体 \\[X_i^{g - 1}\\] 的适应度值, \\[f(U_i^g)\\] 为个体\\[U_i^g\\]的适应度值,在本章中的实验部分,测试函数计算所得的适应度值小的认为是较优秀的,具体的优劣性根据实际情况而定。

DE算法的流程示意图如下图2.3所示:

基本DE算法流程图


基本差分进化算法的算法步骤如下所示:

BEGIN

Step1:参数初始化。初始化超参数交叉概率Cr、缩放比例F以及最大进化次数G,并设置当前进化次数g=1;

Step2:初始化种群。根据种群个体数量NP以及问题维度D,在搜索空间内随机初始化种群;

Step3:算法结束判断。根据当前进化次数g是否大于G,若是则终止循环,否则继续;

Step4:一次算法迭代。对于种群中的每个个体Xi执行下列操作:

St4.1:在种群中随机选取三个不同的个体r1、r2、r3,且

St4.2:随机产生一个范围在[1,D]的整数Z;

St4.3:对于个体Xi的每一维j执行如下操作:

St4.3.1:随机生成一个在[0,1]上均匀分布的数r;

St4.3.2:若r<=CR或者j==Z,则执行DE/rand/1,否则不变;

St4.4:通过目标函数的适应度值来评估当前个体和实验个体实行优胜劣汰;

Step5:g=g+1,返回Step3。

END

在线客服
联系电话
全国免费咨询热线 +86 0000 88888
  • · 专业的设计咨询
  • · 精准的解决方案
  • · 灵活的价格调整
  • · 1对1贴心服务
APP下载
回到顶部

平台注册入口