基本差分进化算法 联系客服

发布时间 : 星期二 文章基本差分进化算法更新完毕开始阅读1c8cc660590216fc700abb68a98271fe910eaf39

基本差分进化算法

基本模拟退火算法概述

DE算法是一种基于群体进化的算法,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法。由于DE算法操作简单,寻优能力强,自提出以来引起了国内外学者的高度关注,目前已在电力系统优化调度、配网重构等领域得到了应用。 1、算法原理

00DE算法首先在N维可行解空间随机生成初始种群X0?[x1,L,xN],其中P0Txi0?[xi0,L,x1iN],Np为DE种群规模。DE算法的核心思想在于采取变异和交叉操

作生成试验种群,然后对试验种群进行适应度评估,再通过贪婪思想的选择机制,将原种群和试验种群进行一对一比较,择优进入下一代。

基本DE算法主要包括变异、交叉和选择三个操作。首先,在种群中随机选取三个个体,进行变异操作:

tttvit?1?xr1?F(xr2?xr3)

其中vit?1表示变异后得到的种群,t表示种群代数,F为缩放因子,一般取(0,2],它的大小可以决定种群分布情况,使种群在全局范围内进行搜索;xrt1、xrt2、xrt3为从种群中随机抽取的三个不同的个体。

然后,将变异种群和原种群进行交叉操作:

ut?1i,jt?1??vi,j rand(j)?CR or j?randn(i)??t x rand(j)?C and j?randn(i)?R?i,j其中uit,?j1表示交叉后得到的种群,rand(j)为[0,1]之间的随机数,j表示个体的第j个分量,CR为交叉概率,randn(i)为[1,L,N]之间的随机量,用于保证新个体至少有一维分量由变异个体贡献。

最后,DE算法通过贪婪选择模式,从原种群和试验种群中选择适应度更高的个体进入下一代:

t?1t?1t?u f(u)?f(xt?1iii) xi??tt?1tx f(u)?f(x)ii?if(uit?1)、f(xit)分别为uit?1和xit的适应度。当试验个体uit?1的适应度优于xit时,

试验个体取代原个体,反之舍弃试验个体,保留原个体。 2、算法步骤

基本DE算法的基本步骤如下:

开始设定DE算法的种群大小,最大迭代次数,缩放因子,交叉概率随机生成初始DE种群,置迭代次数k为0DE算法变异操作DE算法交叉操作k=k+1进行适应度评估DE算法选择操作否是否达到最大迭代次数?是输出结果,退出程序3、算法的matlab实现 见程序 4、算法举例

30i?1 采用DE算法求取Sphere Mode函数f(x)??xi2的最小值。 1) 基本测试

在matlab命令窗口输入:

>> [xm,fv] = SA(@fitness,3,1e-5,0.99,200,30) 得到如下收敛曲线

302520目标值1510500100200300400500600700退温次数2) 参数对算法性能的影响 在matlab命令窗口输入:

>> [xm,fv] = DE(@fitness,40,0.5,0.5,100,30) >> [xm,fv] = DE(@fitness,40,0.5,0.5,200,30) >> [xm,fv] = DE(@fitness,40,0.5,0.5,500,30) 将上面求得的结果列表比较如下:

M x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22

100 0.033087185 0.202701957 -0.081038245 0.028932023 -0.151716543 0.154352242 0.051436736 0.057500363 -0.058409634 0.060435634 0.005562026 0.124679757 -0.217063076 -0.156305243 0.142613078 -0.003189876 -0.152339667 -0.229525992 0.076502493 0.049598038 0.123235808 0.183832078

200 -1.29E-02 -4.05E-02 9.89E-03 -2.05E-02 6.23E-03 8.34E-03 -1.79E-02 -5.54E-03 9.74E-03 3.02E-02 -1.64E-02 8.56E-03 -6.15E-03 -3.49E-03 4.24E-02 -5.84E-02 5.51E-02 -1.10E-02 1.47E-02 1.11E-02 6.87E-02 -1.80E-02

500 1.77E-04 -1.08E-04 5.80E-05 7.00E-05 -1.66E-04 9.47E-05 -3.01E-04 -2.23E-04 4.80E-05 -4.12E-05 1.00E-04 2.75E-05 2.45E-05 -1.35E-04 2.66E-05 1.35E-04 -4.93E-05 2.51E-04 1.50E-04 -4.13E-05 8.12E-05 -3.78E-05

x23 x24 x25 x26 x27 x28 x29 x30 f(x) -0.111816229 0.232072926 0.043585057 -0.235073466 -0.008428201 -0.075163759 -0.099728761 0.143423027 0.509858129 1.32E-03 -2.25E-02 2.47E-02 -1.73E-03 2.95E-02 2.49E-02 -1.92E-02 2.06E-02 2.13E-02 -2.59E-04 -9.06E-05 -6.93E-05 2.36E-04 -2.37E-04 -7.77E-05 -6.94E-05 1.28E-04 5.98E-07

可见达到一定迭代次数后,DE算法能优化得到很好的结果。 在matlab命令窗口输入:

>> [xm,fv] = DE(@fitness,40,1,0.5,500,30) >> [xm,fv] = DE(@fitness,40,0.75,0.5,500,30) >> [xm,fv] = DE(@fitness,40,0.5,0.5,500,30) 收敛曲线如图1所示

18F=116F=0.75F=0.514 1210最优解86420 050100150200250迭代代数300350400450500图1 缩放因子F的变化对DE算法收敛性的影响

将上面求得的结果列表比较如下: F 1

x1 x2 x3 x4 x5 x6 x7 x8 x9

-0.048297313 0.290359155 0.521732371 0.051018562 0.019475097 0.42968677 -0.321318581 0.498844481 0.227559274

0.75 1.17E-02 2.38E-02 6.99E-02 1.64E-01 -7.12E-03 -9.49E-02 -6.41E-02 -1.31E-01 -1.08E-01 0.5 3.34E-05 2.83E-04 -1.55E-04 4.35E-05 -9.68E-05 -5.01E-05 -8.94E-06 -7.83E-05 2.23E-04

x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 f(x) -0.1918635 -0.31447571 -0.606327332 0.350158841 -0.821069691 -0.347167183 -0.317157615 0.72521956 0.481632273 -0.079939987 0.760236255 0.042099667 0.072662335 -0.850118661 0.466896387 -0.389142662 0.543536141 0.274990037 0.258766803 -0.845121974 -0.515377261 6.330850356 -2.42E-02 -3.28E-02 1.70E-02 4.43E-03 5.64E-02 1.71E-02 -3.32E-02 -2.19E-02 1.47E-02 9.42E-02 -5.11E-02 9.46E-02 -5.08E-03 2.45E-02 -4.43E-02 -9.67E-02 3.05E-02 -9.75E-02 1.17E-02 5.25E-02 1.55E-01 1.52E-01 3.35E-05 8.51E-05 -3.99E-06 1.05E-04 -4.23E-05 1.51E-04 4.38E-05 1.83E-04 8.01E-05 -4.57E-05 -5.28E-05 1.17E-04 7.40E-06 1.02E-04 -3.81E-05 -1.17E-05 -2.36E-05 1.58E-04 -1.54E-04 2.75E-04 -6.77E-05 4.20E-07

可见缩放因子F对收敛性有较大的影响,应根据实际情况进行F参数的选取。