基本差分进化算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基本差分进化算法

基本模拟退火算法概述

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

DE 算法首先在N 维可行解空间随机生成初始种群,其中P

000

1[,,]N =X x x L ,为DE 种群规模。DE 算法的核心思想在于采取变异和交叉操

000T 1[,,]i i iN x x =x L p N 作生成试验种群,然后对试验种群进行适应度评估,再通过贪婪思想的选择机制,将原种群和试验种群进行一对一比较,择优进入下一代。

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

1123()

t t t t i r r r F +=+-v x x x 其中表示变异后得到的种群,表示种群代数,为缩放因子,一般取(0,2],1t i +v t F 它的大小可以决定种群分布情况,使种群在全局范围内进行搜索;、、

1t r x 2t r x 为从种群中随机抽取的三个不同的个体。

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

1

,R 1

,,R () or () () and ()

t i j t i j

t i j v rand j C j randn i u

x rand j C j randn i ++⎧≤=⎪=⎨>≠⎪⎩其中表示交叉后得到的种群,为[0,1]之间的随机数,表示个体的第

t 1,i j u +()rand j j 个分量,为交叉概率,为之间的随机量,用于保证新个体至

j R C ()randn i [1,,]N L 少有一维分量由变异个体贡献。

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

11t 11 ()() ()()

t t t i i i i

t

t t

i i i f f f f ++++⎧<=⎨≥⎩u u x x

x u x 、分别为和的适应度。当试验个体的适应度优于时,

1()t i f +u ()t i f x 1t i +u t i x 1t i +u t i x

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

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

3、算法的matlab 实现

见程序4、算法举例

采用DE 算法求取Sphere Mode 函数的最小值。

30

21()i i f x x ==∑1)基本测试

在matlab 命令窗口输入:

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

11223代代代代

代代代

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 100200500x 10.033087185-1.29E-02 1.77E-04x 20.202701957-4.05E-02-1.08E-04x 3-0.0810382459.89E-03 5.80E-05x 40.028932023-2.05E-027.00E-05x 5-0.151716543 6.23E-03-1.66E-04x 60.1543522428.34E-039.47E-05x 70.051436736-1.79E-02-3.01E-04x 80.057500363-5.54E-03-2.23E-04x 9-0.0584096349.74E-03 4.80E-05x 100.060435634 3.02E-02-4.12E-05x 110.005562026-1.64E-02 1.00E-04x 120.1246797578.56E-03 2.75E-05x 13-0.217063076-6.15E-03 2.45E-05x 14-0.156305243-3.49E-03-1.35E-04x 150.142613078 4.24E-02 2.66E-05x 16-0.003189876-5.84E-02 1.35E-04x 17-0.152339667 5.51E-02-4.93E-05x 18-0.229525992-1.10E-02 2.51E-04x 190.076502493 1.47E-02 1.50E-04x 200.049598038 1.11E-02-4.13E-05x 210.123235808 6.87E-028.12E-05x 22

0.183832078

-1.80E-02

-3.78E-05

x 23-0.111816229 1.32E-03-2.59E-04x 240.232072926-2.25E-02-9.06E-05x 250.043585057 2.47E-02-6.93E-05x 26-0.235073466-1.73E-03 2.36E-04x 27-0.008428201 2.95E-02-2.37E-04x 28-0.075163759 2.49E-02-7.77E-05x 29-0.099728761-1.92E-02-6.94E-05x 300.143423027 2.06E-02 1.28E-04f(x)0.509858129 2.13E-02 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所示

11111代代代代

代代代

图1 缩放因子F 的变化对DE 算法收敛性的影响

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

F

1

0.750.5x 1-0.048297313 1.17E-02 3.34E-05x 20.290359155 2.38E-02 2.83E-04x 30.521732371 6.99E-02-1.55E-04x 40.051018562 1.64E-01 4.35E-05x 50.019475097-7.12E-03-9.68E-05x 60.42968677-9.49E-02-5.01E-05x 7-0.321318581-6.41E-02-8.94E-06x 80.498844481-1.31E-01-7.83E-05x 9

0.227559274

-1.08E-01

2.23E-04

相关文档
最新文档