fbpx
维基百科

差分进化算法

差分进化算法(英語:differential evolution)又称微分进化算法,是一种求解最佳化问题进化算法。因為进化算法對於最佳化问题的要求極少,所以被視為一種後設启发式算法英语metaheuristic。雖然後設启发式算法適用於多種最佳化问题,但是並不保證可以找到全局最優解

差分进化算法被使用在多維度實數編碼的最佳化问题。因為此算法不使用問題的梯度資訊,故可解不可微分最佳化问题。也因此,差分进化算法可用於不連續的,雜訊的,隨著時間改變的最佳化问题

差分进化算法類似遗传算法,包含变异,交叉操作,淘汰机制。本质上说,它是一种基于实数编码的具有保优思想的贪婪遗传算法[1]。而差分进化算法与遗传算法不同之處,在於变异的部分是隨選兩個解成員變數的差異,經過伸縮後加入當前解成員的變數上,因此差分进化算法無須使用機率分佈產生下一代解成員 [2]

算法的原理采用对个体进行方向扰动,以达到对个体的函数值进行下降的目的,同其他进化算法一样,差分进化算法不利用函数的梯度信息,因此对函数的可导性甚至连续性没有要求,适用性很强。同时,算法与粒子群优化有相通之处,但因为差分进化算法在一定程度上考虑了多变量间的相关性,因此相较于粒子群优化在变量耦合问题上有很大的优势。由于差分进化算法在连续域优化问题的优势已获得广泛应用,并引发进化算法研究领域的热潮。算法的实现参考实现代码部分[3]

歷史 编辑

  • 1995年3月,Storn與Price所撰寫的差分進化演算法技術報告,是差分進化演算法的起源[4]
  • 1996年5月,Storn與Price在國際電機電子工程師學會演化計算研討會公開發表差分进化算法[5]
  • 1997年12月,在全局最佳化國際學術期刊上刊出Storn與Price所著之差分进化算法論文[6]
  • 2005年,Springer (页面存档备份,存于互联网档案馆)出版Storn與Price所著之差分进化算法專書[7]

演算法原理 编辑

差分進化演算法之目的為求解最佳化問題,使用突變、交叉、選擇計算以演化多個可能的解。首先,產生足量的隨機變數,做為初始的可能解。接著,依序進行突變、交叉、選擇計算,做完一輪後,檢查某個終止條件。若終止條件尚未滿足,則回到突變、交叉、選擇計算,否則終止差分進化演算法,輸出最後一輪的最佳解。

突變 编辑

進化計算中,突變是用於產生隨機解的計算方法。

交叉 编辑

在突變之後,差分進化演算法使用交叉計算以增強隨機解的多樣性。

選擇 编辑

在交叉之後,差分進化演算法對隨機解做選擇,移除演化失敗的解,留下演化成功的解。選擇之後,進行突變計算,直到滿足某個終止條件。

实现代码(MATLAB) 编辑

tic F = 0.9; CR = .1; n = 2; %问题维数,以简单的球函数为目标函数 NP = 30; lu = [-10,-10 ;10 ,10]; %求解空间的上下界 LB = repmat(lu(1,:),NP,1); UB = repmat(lu(2,:),NP,1); %用于生成随机选择个体的表 tab = 1:NP; tab = tab(ones(1,NP),:)'; dig = 1:NP; D =(dig-1)*NP +(1:NP); tab (D) = []; tab = reshape(tab,NP-1,[])'; TAB = tab; %测试次数 TIMES = 10; Solve = zeros(1,TIMES); numOfevol = zeros(1,TIMES); for time = 1:TIMES % Result = []; %记录结果 rand('seed',sum(100*clock)); % X = LB+rand(NP,n).*(UB-LB); U = X; %%  fit = fitness (X); %首次评价 FES = NP; while FES<n*10000  %产生随机个体参与变异  tab = TAB;  rand1 = floor(rand(NP,1)*(NP-1))+1;  rand2 = floor(rand(NP,1)*(NP-2))+2;  rand3 = floor(rand(NP,1)*(NP-3))+3;  RND1 =(rand1-1)*NP+(1:NP)';  RND2 =(rand2-1)*NP+(1:NP)';  RND3 =(rand3-1)*NP+(1:NP)';  r1 = tab (RND1); tab (RND1)=tab(:,1);  r2 = tab (RND2); tab (RND2)=tab(:,2);  r3 = tab (RND3);  % rand/one/变异模式  V = X(r1,:) + F.*(X(r2,:)-X(r3,:));   %越界检验  BL = V<LB ; V(BL) = 2*LB(BL) - V(BL);   BLU = V(BL)>UB(BL); BL (BL) = BLU ; V(BL) = UB (BL);  BU = V>UB; V (BU) = 2*UB(BU) - V(BU);  BUL = V(BU)<LB(BU); BU (BU) = BUL ; V(BU) = LB (BU);  %交叉操作  J_= mod(floor(rand(NP,1)*n),n)+1;  J =(J_-1)*NP+(1:NP)';  C = rand(NP,n)<CR;  U (J) = V(J);  U (C) = V(C);  %评价子代  fit_ = fitness (U);  %比较并竞争  S = fit_<fit;  X(S,:) = U(S,:);  fit(S) = fit_(S);  %记录函数评价次数  FES = FES + NP;  %记录结果(用于绘图,并不是算法必要环节)  Result = [Result ,min (fit)]; end Solve (time) = min (fit); %试验次数 plot(log10(Result),'b');hold on; end disp(['求解结果:',num2str(Solve)]); toc %附上球函数代码(新建一个M文件即可) function Y = fitness (X) Y = sum(X.^2 ,2); 

参看 编辑

参考文献 编辑

  1. ^ 刘波,王凌,金以慧差分进化算法研究进展,控制与决策,第22卷第7期,721-729
  2. ^ S. Das; P. N. Suganthan. Differential Evolution: A Survey of the State-of-the-Art. IEEE Transactions on Evolutionary Computation. Feb. 2011, 15 (1): 4–31 [2019-02-12]. doi:10.1109/TEVC.2010.2059031. (原始内容于2021-03-08). 
  3. ^ 代码编写及提供者:rongekuta@gmail.com
  4. ^ R. Storn; K. Price. . Technical Report TR-95-012, ICSI, March 1995. [2019-02-12]. (原始内容存档于2020-06-09). 
  5. ^ R. Storn; K. Price. Minimizing the real functions of the ICEC'96 contest by differential evolution. Proceedings of IEEE International Conference on Evolutionary Computation. Nagoya, Japan: 842–844. 20-22 May 1996 [2019-02-12]. doi:10.1109/ICEC.1996.542711. (原始内容于2019-02-13). 
  6. ^ R. Storn; K. Price. Differential Evolution – A Simple and Efficient Heuristic for global Optimization over Continuous Spaces. Journal of Global Optimization. Dec. 1997, 11 (4): 341–359 [2019-02-12]. doi:10.1023/A:1008202821328. (原始内容于2021-03-08). 
  7. ^ Price, K.; Storn, R.M.; Lampinen, J.A. Differential Evolution: A Practical Approach to Global Optimization. Springer. 2005. ISBN 978-3-540-20950-8. 

外部链接 编辑

  • featuring source-code for several programming languages.
  • Parameter tuning / calibration of DE and other optimization methods using a Meta-Optimization approach. Source-code library is for the C and C# programming languages.
  • – FORTRAN 77 Codes for DE optimization with a large number of benchmark problems
  • – Performance Evaluation on Benchmark functions
  • List of References on Constraint-Handling Techniques used with Evolutionary Algorithms(cs.cinvestav.mx) (页面存档备份,存于互联网档案馆)– Comprehensive bibliography of constraint methods for evolutionary optimization
  • Differential Evolution(MathWorld.wolfram.com) (页面存档备份,存于互联网档案馆
  • A SPICE Circuit Optimizer(sourceforge.net) (页面存档备份,存于互联网档案馆)– Parallel version of the Differential Evolution
  • A forthcoming special issue on DE organized by IEEE Transactions on Evolutionary Computation (页面存档备份,存于互联网档案馆
  • GenerationZ (页面存档备份,存于互联网档案馆) – A multi-threaded differential evolution library
  • A Fast Differential Evolution Algorithm using k-Nearest Neighbour Predictor

差分进化算法, 英語, differential, evolution, 又称微分进化算法, 是一种求解最佳化问题的进化算法, 因為进化算法對於最佳化问题的要求極少, 所以被視為一種後設启发式算法, 英语, metaheuristic, 雖然後設启发式算法適用於多種最佳化问题, 但是並不保證可以找到全局最優解, 被使用在多維度實數編碼的最佳化问题, 因為此算法不使用問題的梯度資訊, 故可解不可微分的最佳化问题, 也因此, 可用於不連續的, 雜訊的, 隨著時間改變的最佳化问题, 類似遗传算法, 包含变异, 交叉操作,. 差分进化算法 英語 differential evolution 又称微分进化算法 是一种求解最佳化问题的进化算法 因為进化算法對於最佳化问题的要求極少 所以被視為一種後設启发式算法 英语 metaheuristic 雖然後設启发式算法適用於多種最佳化问题 但是並不保證可以找到全局最優解 差分进化算法被使用在多維度實數編碼的最佳化问题 因為此算法不使用問題的梯度資訊 故可解不可微分的最佳化问题 也因此 差分进化算法可用於不連續的 雜訊的 隨著時間改變的最佳化问题 差分进化算法類似遗传算法 包含变异 交叉操作 淘汰机制 本质上说 它是一种基于实数编码的具有保优思想的贪婪遗传算法 1 而差分进化算法与遗传算法不同之處 在於变异的部分是隨選兩個解成員變數的差異 經過伸縮後加入當前解成員的變數上 因此差分进化算法無須使用機率分佈產生下一代解成員 2 算法的原理采用对个体进行方向扰动 以达到对个体的函数值进行下降的目的 同其他进化算法一样 差分进化算法不利用函数的梯度信息 因此对函数的可导性甚至连续性没有要求 适用性很强 同时 算法与粒子群优化有相通之处 但因为差分进化算法在一定程度上考虑了多变量间的相关性 因此相较于粒子群优化在变量耦合问题上有很大的优势 由于差分进化算法在连续域优化问题的优势已获得广泛应用 并引发进化算法研究领域的热潮 算法的实现参考实现代码部分 3 目录 1 歷史 2 演算法原理 2 1 突變 2 2 交叉 2 3 選擇 3 实现代码 MATLAB 4 参看 5 参考文献 6 外部链接歷史 编辑1995年3月 Storn與Price所撰寫的差分進化演算法技術報告 是差分進化演算法的起源 4 1996年5月 Storn與Price在國際電機電子工程師學會演化計算研討會公開發表差分进化算法 5 1997年12月 在全局最佳化國際學術期刊上刊出Storn與Price所著之差分进化算法論文 6 2005年 Springer 页面存档备份 存于互联网档案馆 出版Storn與Price所著之差分进化算法專書 7 演算法原理 编辑差分進化演算法之目的為求解最佳化問題 使用突變 交叉 選擇計算以演化多個可能的解 首先 產生足量的隨機變數 做為初始的可能解 接著 依序進行突變 交叉 選擇計算 做完一輪後 檢查某個終止條件 若終止條件尚未滿足 則回到突變 交叉 選擇計算 否則終止差分進化演算法 輸出最後一輪的最佳解 突變 编辑 在進化計算中 突變是用於產生隨機解的計算方法 交叉 编辑 在突變之後 差分進化演算法使用交叉計算以增強隨機解的多樣性 選擇 编辑 在交叉之後 差分進化演算法對隨機解做選擇 移除演化失敗的解 留下演化成功的解 選擇之後 進行突變計算 直到滿足某個終止條件 实现代码 MATLAB 编辑tic F 0 9 CR 1 n 2 问题维数 以简单的球函数为目标函数 NP 30 lu 10 10 10 10 求解空间的上下界 LB repmat lu 1 NP 1 UB repmat lu 2 NP 1 用于生成随机选择个体的表 tab 1 NP tab tab ones 1 NP dig 1 NP D dig 1 NP 1 NP tab D tab reshape tab NP 1 TAB tab 测试次数 TIMES 10 Solve zeros 1 TIMES numOfevol zeros 1 TIMES for time 1 TIMES Result 记录结果 rand seed sum 100 clock X LB rand NP n UB LB U X fit fitness X 首次评价 FES NP while FES lt n 10000 产生随机个体参与变异 tab TAB rand1 floor rand NP 1 NP 1 1 rand2 floor rand NP 1 NP 2 2 rand3 floor rand NP 1 NP 3 3 RND1 rand1 1 NP 1 NP RND2 rand2 1 NP 1 NP RND3 rand3 1 NP 1 NP r1 tab RND1 tab RND1 tab 1 r2 tab RND2 tab RND2 tab 2 r3 tab RND3 rand one 变异模式 V X r1 F X r2 X r3 越界检验 BL V lt LB V BL 2 LB BL V BL BLU V BL gt UB BL BL BL BLU V BL UB BL BU V gt UB V BU 2 UB BU V BU BUL V BU lt LB BU BU BU BUL V BU LB BU 交叉操作 J mod floor rand NP 1 n n 1 J J 1 NP 1 NP C rand NP n lt CR U J V J U C V C 评价子代 fit fitness U 比较并竞争 S fit lt fit X S U S fit S fit S 记录函数评价次数 FES FES NP 记录结果 用于绘图 并不是算法必要环节 Result Result min fit end Solve time min fit 试验次数 plot log10 Result b hold on end disp 求解结果 num2str Solve toc 附上球函数代码 新建一个M文件即可 function Y fitness X Y sum X 2 2 参看 编辑遗传算法 粒子群优化参考文献 编辑 刘波 王凌 金以慧差分进化算法研究进展 控制与决策 第22卷第7期 721 729 S Das P N Suganthan Differential Evolution A Survey of the State of the Art IEEE Transactions on Evolutionary Computation Feb 2011 15 1 4 31 2019 02 12 doi 10 1109 TEVC 2010 2059031 原始内容存档于2021 03 08 请检查 date 中的日期值 帮助 代码编写及提供者 rongekuta gmail com R Storn K Price Differential Evolution a Simple and Efficient Adaptive Scheme for Global Optimization over Continuous Spaces Technical Report TR 95 012 ICSI March 1995 2019 02 12 原始内容存档于2020 06 09 R Storn K Price Minimizing the real functions of the ICEC 96 contest by differential evolution Proceedings of IEEE International Conference on Evolutionary Computation Nagoya Japan 842 844 20 22 May 1996 2019 02 12 doi 10 1109 ICEC 1996 542711 原始内容存档于2019 02 13 引文使用过时参数coauthors 帮助 请检查 date 中的日期值 帮助 R Storn K Price Differential Evolution A Simple and Efficient Heuristic for global Optimization over Continuous Spaces Journal of Global Optimization Dec 1997 11 4 341 359 2019 02 12 doi 10 1023 A 1008202821328 原始内容存档于2021 03 08 请检查 date 中的日期值 帮助 Price K Storn R M Lampinen J A Differential Evolution A Practical Approach to Global Optimization Springer 2005 ISBN 978 3 540 20950 8 外部链接 编辑Storn s Homepage on DE featuring source code for several programming languages SwarmOps Parameter tuning calibration of DE and other optimization methods using a Meta Optimization approach Source code library is for the C and C programming languages Global Optimization by Differential Evolution and Particle Swarm Methods Evaluation on Some Benchmark Functions webng com FORTRAN 77 Codes for DE optimization with a large number of benchmark problems Differential Evolution and Particle Swarm Optimization webng com Performance Evaluation on Benchmark functions List of References on Constraint Handling Techniques used with Evolutionary Algorithms cs cinvestav mx 页面存档备份 存于互联网档案馆 Comprehensive bibliography of constraint methods for evolutionary optimization Differential Evolution MathWorld wolfram com 页面存档备份 存于互联网档案馆 A SPICE Circuit Optimizer sourceforge net 页面存档备份 存于互联网档案馆 Parallel version of the Differential Evolution A forthcoming special issue on DE organized by IEEE Transactions on Evolutionary Computation 页面存档备份 存于互联网档案馆 GenerationZ 页面存档备份 存于互联网档案馆 A multi threaded differential evolution library A Fast Differential Evolution Algorithm using k Nearest Neighbour Predictor 取自 https zh wikipedia org w index php title 差分进化算法 amp oldid 67881443, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。