【Matlab代码免费获取】2026年SCI一区新算法-波动光学优化算法(WOO)-公式原理详解与性能测评

张开发
2026/4/15 6:11:36 15 分钟阅读

分享文章

【Matlab代码免费获取】2026年SCI一区新算法-波动光学优化算法(WOO)-公式原理详解与性能测评
✅作者简介热爱科研的Matlab仿真开发者擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 往期回顾关注个人主页Matlab科研工作室 关注我领取海量matlab电子书和数学建模资料个人信条格物致知,完整Matlab代码获取及仿真咨询内容私信。 内容介绍1 简介随着技术的进步数值优化问题日益复杂元启发式逐渐成为应对此类 挑战的有效工具。因此本文提出了一种新颖的元启发式称为波动光学优化器WOO。WOO的灵感来自弗劳恩霍夫衍射实验该实验揭示了光的波动性质。在WOO中每个光波对应一个候选解。在优化过程中解利用光的衍射和干涉效应探索搜索空间并逐渐向全局最优解中心亮条纹移动。具体而言衍射效应模拟了光 波穿过狭缝的传播特性增强了初始解的多样性而干扰效应便于群体之间的交流和学习引导收敛朝向优越区域。得益于这些特性WOO能够在复杂的优化环境中高效搜索同时提高解的稳定性和准确性。2.灵感2.1.夫琅和费衍射实验夫琅和费衍射在光学领域占有重要地位[88]、[89]、[90]。本实验描述了光波通过狭缝或圆形孔径等障碍物在屏幕上形成一系列交替的明暗图案的现象。惠更斯-菲涅尔原理对此提供了解释由于光[91]、[92]的波性质波阵面上的每一点都可以被认为是新的二次波源这些二次波向各个方向传播并叠加形成新的波阵面从而引起衍射。⛳️ 运行结果 部分代码​clc;clear all;close all;run1; %% The number of independent repetitionsMaxIteration1000;PopSize50;FunIndex4[BestX,BestF,HisBestF,FW_WOO,FA_WOO,SE_WOO]WOO(FunIndex,MaxIteration,PopSize);if run 1display([F_index, num2str(FunIndex)]);display([Run , num2str(run), times ]);display([The FB_WOO is: , num2str(mean(BestF))]);display([The FW_WOO is: , num2str(mean(FW_WOO))]);display([The FA_WOO is: , num2str(mean(FA_WOO))]);display([The SE_WOO is: , num2str(mean(SE_WOO))]);​Optimal(FunIndex)BestF;​display([The best solution is: , num2str(BestX)]);if BestF0semilogy(HisBestF,r,LineWidth,2);elseplot(HisBestF,r,LineWidth,2);endxlabel(Iterations);ylabel(Fitness);title([F,num2str(FunIndex)]);​elsefor i1:1parfor i1:run[BestX,BestF,HisBestF,FW_WOO,FA_WOO,SE_WOO]WOO(FunIndex,MaxIteration,PopSize);His(:,i)HisBestF(end);BestF1(i)BestF;FW_CC01(i)FW_WOO;FA_WOO1(i)FA_WOO;SE_WOO1(i)SE_WOO;end​display([F_index, num2str(FunIndex)]);display([Run , num2str(run), times ]);display([The FB_WOO is: , num2str(mean(BestF1))]);display([The FW_WOO is: , num2str(mean(FW_CC01))]);display([The FA_WOO is: , num2str(mean(FA_WOO1))]);display([The SE_WOO is: , num2str(mean(SE_WOO1))]);endendfunction [BestX,BestF,HisBestFit,FW_WOO,FA_WOO,SE_WOO]WOO(F_index,MaxIt,nPop)[Low,Up,Dim]FunRange(F_index);tic;​%% Initial parameterLambda5*10^-4; %% Wave length mmd1*10^-2; %% Slit width mmI01; %% Initial relative light intensity​%% Adjust the policy count variablek0; Time_00; Time_p0;m_l0;m_d0; %% Light and dark stripe level​%% Single slit diffractionBestFinf; BestX[];for i1:nPopS(i,:)rand(1,Dim).*(Up-Low)Low;usmax(S(i,:));lsmin(S(i,:));if i1sintheta0;US(i,:)S(i,:)d*(rand*(us-ls)ls);LS(i,:)S(i,:)-d*(rand*(us-ls)ls);elseif mod(i,2)0m_dm_d1;sintheta(2*m_d)*Lambda/(2*d);elsem_lm_l1;sintheta(2*m_l1)*Lambda/(2*d);endUS(i,:)S(i,:)d*(rand*(us-ls)ls)/sintheta;LS(i,:)S(i,:)-d*(rand*(us-ls)ls)/sintheta;enddeltaS(i)d*sintheta;​PopPos(i,:)(US(i,:)LS(i,:))/2sign(rand-0.5)*rand*deltaS(i);PopPos(i,:)SpaceBound(PopPos(i,:),Up,Low);PopFit(i)BenFunctions(PopPos(i,:),F_index,Dim);if PopFit(i)BestFBestFPopFit(i);BestXPopPos(i,:);endUa_deltaF(i)1;Ua_deltaS(i)1;Ua_deltaX(i)sqrt(mean((PopPos(i,:)-BestX).^2));end[~,index]sort(PopFit);PopPosPopPos(index,:);PopFitPopFit(index);Ua_deltaXUa_deltaX(index);HisBestFitzeros(MaxIt,1);%% Store individual parameterUa(Lambda/(4*pi))*(3*nPop/d);MaDim0round(3/Ua*Dim/log(Dim));Ua_sones(1,nPop)*Ua;Ua_wones(1,nPop)*cos(pi/2*Ua);​t0round(1/2*Ua*nPop); tt0;Tabs(round((1-sin(pi/2*Ua))*nPop));Mid(1)T1; Mid(1)SpaceMid(Mid(1),nPop);feszeros(nPop);simround(nPop/2);​for It1:MaxItC(1-It/MaxIt);tau1I0*(Ua/3*(C-1)1);tau2exp(tau1)/3;bcround(nPop/3*(1C*2));​MaDimround((1C)*MaDim0/2);Ma_bzeros(4,MaDim);​m_l0;m_d0;Time_10;for i1:nPoppwsin((-exp(-It)1)*pi/2);Mid(2)round(nPop-1/(2*Ua^2)*C*T);Mid(2)SpaceMid(Mid(2),nPop);U(PopPos(randi([min(Mid),max(Mid)]),:)-PopPos(i,:))*pw;if randCif i1/2*nPopU2PopPos(randi([1,sim]),:)-PopPos(randi(nPop),:);elseU2PopPos(randi([1,sim]),:)-PopPos(randi([sim1,nPop]),:);endelseU2PopPos(randi(nPop),:)-PopPos(randi(nPop),:);end%% Random strategyif tau2randif i1II0*sin(pi/2*C^(2*(1C)));m_r1;elseupi*deltaS(i)/Lambda;II0*(sin(u)/u)^2;if mod(i,2)0m_dm_d1;m_rm_d;elsem_lm_l1;m_rm_l;endendIrexp(I*abs(BestF-PopFit(i))/(BestFeps));if Irinf || isnan(Ir)Ir1;end​if It1/t*MaxItflag_e1(i)0;r1rand;sexp(-2*r1*(1-r1));Z1rand(1,Dim)s;om(rand(1,Dim).*abs(randn(1,Dim))).^(C3)randn/m_r;if bciwIr*exp(-rand(1,Dim).^(C3));DU1(1-w).*Uw.*U2;elsewIr*exp(-rand(1,Dim).^(C3))/m_r;DU1((1-w).*Uw.*(U2BestX/m_r)).^2;endelseflag_e1(i)1;om1;if tau2randwmax(Ua_w(i),0);Poround(3*(1-m_r/sim));r_Pop1randi(nPop,1);sUa_s(r_Pop1)^(Po*C)Ua/4*randn*rand;smax(min(s,1),0);Z1rand(1,Dim)s;Z1(randi(Dim))1;elsewIr;Po3;s(Ua)^(Po*C);Z1rand(1,Dim)s;end​if Time_p0pround(C^2*log(Dim)*T1/(w)Ua);pmin(max(p,1),nPop);Leader_Poprandi([1,p],1);elseLeader_Poppb_m;Time_p0;endif tau2randSuexp(Ir-2*T*Lambda/d);if fes(i,It)/MaxItrand bciDU1USu*U2;elseDU1w*(PopPos(Leader_Pop,:)Su*(U-PopPos(randi(nPop),:)));endelseU3tau1*(rand(1,Dim).*S(i,:))(1-tau1)*PopPos(Leader_Pop,:);DU1(1-w)*Uw*Ua*(Ir*U2U3);endendnewPopPos(i,:)PopPos(i,:)om.*Z1.*DU1;%% Reinforcement strategyelseflag_e1(i)2;if randtau1if randCwsqrt(2)*sqrt(abs(sin(It.*(rand-Ua))))2*rand-1;SW(sin(rand*pi)cos(rand*pi));om2SW./w;Vrrandn(1,Dim).*om2;newPopPos(i,:)Vr.*BestX;elseRt1randi(360,2)*pi/360;om2cos(Rt1(1))*sin(Rt1(2))/i;Vrrandn(1,Dim).*om2;newPopPos(i,:)Vr.*(BestXPopPos(i,:))/2;endelser1rand;D((BestXPopPos(i,:))/2-PopPos(randi(nPop),:));om3abs(randn)*(r1*(1-r1))/i;Z2randrand;DXZ2*om3*D;om4exp(-randn/i)*rand;newPopPos(i,:)PopPos(i,:)om4.*U2DX;endendnewPopPos(i,:)SpaceBound(newPopPos(i,:),Up,Low);newPopFit(i)BenFunctions(newPopPos(i,:),F_index,Dim);if newPopFit(i)PopFit(i)if flag_e1(i)0Time_0Time_01;if Time_0(3*C3)*nPop tUa*t0tt-1;Time_00;endelseif flag_e1(i)1Time_1Time_11; %% better 鐭╅樀Ua_deltaF(i)abs((PopFit(i)-newPopFit(i))/(PopFit(i)-BestFeps));Ua_deltaS(i)sqrt(mean((PopPos(i,:)-newPopPos(i,:)).^2));Ua_deltaX(i)sqrt(mean((PopPos(i,:)-BestX).^2));if Time_1MaDimMa_b(1,Time_1)i;Ma_b(2,Time_1)Leader_Pop;Ma_b(3,Time_1)s;Ma_b(4,Time_1)w;elseif newPopFit(i)BestF Time_12*MaDimMa_b(1,Time_1-MaDim)i;Ma_b(2,Time_1-MaDim)Leader_Pop;Ma_b(3,Time_1-MaDim)s;Ma_b(4,Time_1-MaDim)w;endend​S(i,:)tau1*PopPos(i,:)(1-tau1)*S(i,:);S(i,:)SpaceBound(S(i,:),Up,Low);PopFit(i)newPopFit(i);PopPos(i,:)newPopPos(i,:);end​if PopFit(i)BestFBestFPopFit(i);BestXPopPos(i,:);fes(i,It1)0;elsefes(i,It1)fes(i,It)1;endendHisBestFit(It)BestF;%% Adjustment strategyif Time_10Ma_b(:,all(Ma_b0,1))[];if Time_1MaDimSaMaDim;elseSaTime_1;end%% 鍩虹璋冩暣deltaF_BetterUa_deltaF(Ma_b(1,:));SumF_Bettersum(deltaF_Better);deltaS_BetterUa_deltaS(Ma_b(1,:));SumS_Bettersum(deltaS_Better);deltaX_BetterUa_deltaX(Ma_b(1,:));SumX_Bettersum(deltaX_Better);​om5Sa*(deltaF_Better/SumF_BetterdeltaX_Better/(SumX_BetterSumS_Better)); % 鏉冮噸om6log(mean(Ma_b(1,:)))*pw;Lom5/om6;[~,Lminr]sort(L);[~,Xminr]sort(deltaX_Better);Pool(1,1)mean(Ma_b(3,:)); Pool(2,1)mean(Ma_b(4,:));Pool(1,2)Ma_b(3,Lminr(1));Pool(2,2)Ma_b(4,Lminr(1));Pool(1,3)Ma_b(3,Xminr(1));Pool(2,3)Ma_b(4,Xminr(1));if Sasin(pi/2*Ua)*MaDimrpool1;kk(1)1;if knPopk1;endelserpoolrandi(3);rLrandi(Sa);kMa_b(1,Lminr(1:rL));endL1mean(L)*Pool(1,rpool);L2mean(L)*Pool(2,rpool);fsign(rand^(Dim/10)-Ua);if randCif tau2randUa_s(k)(tau1*L1(1-tau1)*Ua_s(k));elseUa_s(k)exp(-sqrt((tau1*L1(1-tau1)*Ua_s(k)).^2))*(It^f);kpbestMa_b(2,randi(Sa));Time_p1;pb_mkpbest;endUa_w(k)sin(L1*pi/2);elseUa_s(k)(L1^2)*(It^f);Ua_w(k)tau1*exp(-sqrt(L2))(1-tau1)*Ua_w(k);endend[~,index]sort(PopFit);PopPosPopPos(index,:);PopFitPopFit(index);end[FW_WOO,index_w] max(PopFit);FA_WOO mean(PopFit);SE_WOO std(PopFit);toc;end​function XSpaceBound(X,Up,Low)Dimlength(X);S(XUp)(XLow);X(rand(1,Dim).*(Up-Low)Low).*SX.*(~S);end​function MidSpaceMid(Mid,nPop)if Mid0Mid1;elseif MidnPopMidnPop;endend​function FitBenFunctions(X,FunIndex,Dim)​​​​switch FunIndex​%%%%%%%%%%%%%%%%%%%%%%%%%% unimodal function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%​%Spherecase 1Fitsum(X.^2);​%Schwefel 2.22case 2Fitsum(abs(X))prod(abs(X));​%Schwefel 1.2case 3Fit0;for i1:DimFitFitsum(X(1:i))^2;end​%Schwefel 2.21case 4Fitmax(abs(X));​%Rosenbrockcase 5Fitsum(100*(X(2:Dim)-(X(1:Dim-1).^2)).^2(X(1:Dim-1)-1).^2);​%Stepcase 6Fitsum(floor((X.5)).^2);​%Quarticcase 7Fitsum([1:Dim].*(X.^4))rand;​​%%%%%%%%%%%%%%%%%%%%%%%%%%multimodal function%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%​%Schwefelcase 8Fitsum(-X.*sin(sqrt(abs(X))));​%Rastrigincase 9Fitsum(X.^2-10*cos(2*pi.*X))10*Dim;​%Ackleycase 10Fit-20*exp(-.2*sqrt(sum(X.^2)/Dim))-exp(sum(cos(2*pi.*X))/Dim)20exp(1);​%Griewankcase 11Fitsum(X.^2)/4000-prod(cos(X./sqrt([1:Dim])))1;​%Penalizedcase 12a10;k100;m4;Dimlength(X);Fit(pi/Dim)*(10*((sin(pi*(1(X(1)1)/4)))^2)sum((((X(1:Dim-1)1)./4).^2).*...(110.*((sin(pi.*(1(X(2:Dim)1)./4)))).^2))((X(Dim)1)/4)^2)sum(k.*...((X-a).^m).*(Xa)k.*((-X-a).^m).*(X(-a)));​%Penalized2case 13a10;k100;m4;Dimlength(X);Fit.1*((sin(3*pi*X(1)))^2sum((X(1:Dim-1)-1).^2.*(1(sin(3.*pi.*X(2:Dim))).^2))...((X(Dim)-1)^2)*(1(sin(2*pi*X(Dim)))^2))sum(k.*...((X-a).^m).*(Xa)k.*((-X-a).^m).*(X(-a)));​%%%%%%%%%%%%%%%%%%%%%%%%%%fixed-dimensionalmultimodalfunction%%%%%%%%%%%%%%​%Foxholescase 14a[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];for j1:25b(j)sum((X-a(:,j)).^6);endFit(1/500sum(1./([1:25]b))).^(-1);​%Kowalikcase 15a[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];b[.25 .5 1 2 4 6 8 10 12 14 16];b1./b;Fitsum((a-((X(1).*(b.^2X(2).*b))./(b.^2X(3).*bX(4)))).^2);​%Six Hump Camelcase 16Fit4*(X(1)^2)-2.1*(X(1)^4)(X(1)^6)/3X(1)*X(2)-4*(X(2)^2)4*(X(2)^4);​%Branincase 17Fit(X(2)-(X(1)^2)*5.1/(4*(pi^2))5/pi*X(1)-6)^210*(1-1/(8*pi))*cos(X(1))10;​%GoldStein-Pricecase 18Fit(1(X(1)X(2)1)^2*(19-14*X(1)3*(X(1)^2)-14*X(2)6*X(1)*X(2)3*X(2)^2))*...(30(2*X(1)-3*X(2))^2*(18-32*X(1)12*(X(1)^2)48*X(2)-36*X(1)*X(2)27*(X(2)^2)));​%Hartman 3case 19a[3 10 30;.1 10 35;3 10 30;.1 10 35];c[1 1.2 3 3.2];p[.3689 .117 .2673;.4699 .4387 .747;.1091 .8732 .5547;.03815 .5743 .8828];Fit0;for i1:4FitFit-c(i)*exp(-(sum(a(i,:).*((X-p(i,:)).^2))));end​%Hartman 6case 20af[10 3 17 3.5 1.7 8;.05 10 17 .1 8 14;3 3.5 1.7 10 17 8;17 8 .05 10 .1 14];cf[1 1.2 3 3.2];pf[.1312 .1696 .5569 .0124 .8283 .5886;.2329 .4135 .8307 .3736 .1004 .9991;....2348 .1415 .3522 .2883 .3047 .6650;.4047 .8828 .8732 .5743 .1091 .0381];Fit0;for i1:4FitFit-cf(i)*exp(-(sum(af(i,:).*((X-pf(i,:)).^2))));end​%Shekel 5case 21a[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];c[0.1 0.2 0.2 0.4 0.4 0.6 0.3 0.7 0.5 0.5];Fit0;for i1:5FitFit-1/((X-a(i,:))*(X-a(i,:))c(i));end​%Shekel 7case 22a[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];c[0.1 0.2 0.2 0.4 0.4 0.6 0.3 0.7 0.5 0.5];Fit0;for i1:7FitFit-1/((X-a(i,:))*(X-a(i,:))c(i));end​%Shekel 10otherwisea[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];c[0.1 0.2 0.2 0.4 0.4 0.6 0.3 0.7 0.5 0.5];Fit0;for i1:10FitFit-1/((X-a(i,:))*(X-a(i,:))c(i));end​end​​ 参考文献[1] Peng Y , Gu S , Liang Y ,et al.Wave Optics Optimizer: A novel meta-heuristic algorithm for engineering optimization[J].Communications in Nonlinear Science and Numerical Simulation, 2026, 152(pd):109337.DOI:10.1016/j.cnsns.2025.109337.更多创新智能优化算法模型和应用场景可扫描关注1.机器学习/深度学习类BP、SVM、RVM、DBN、LSSVM、ELM、KELM、HKELM、DELM、RELM、DHKELM、RF、SAE、LSTM、BiLSTM、GRU、BiGRU、PNN、CNN、XGBoost、LightGBM、TCN、BiTCN、ESN、Transformer、模糊小波神经网络、宽度学习等等均可~方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断2.组合预测类CNN/TCN/BiTCN/DBN/Transformer/Adaboost结合SVM、RVM、ELM、LSTM、BiLSTM、GRU、BiGRU、Attention机制类等均可可任意搭配非常新颖~3.分解类EMD、EEMD、VMD、REMD、FEEMD、TVFEMD、CEEMDAN、ICEEMDAN、SVMD、FMD、JMD等分解模型均可~4.路径规划类旅行商问题TSP、车辆路径问题VRP、MVRP、CVRP、VRPTW等、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划EVRP、 双层车辆路径规划2E-VRP、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻、公交车时间调度、水库调度优化、多式联运优化等等~5.小众优化类生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划2E-VRP、充电车辆路径规划EVRP、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位、冷链、时间窗、多车场等、选址优化、港口岸桥调度优化、交通阻抗、重分配、停机位分配、机场航班调度、通信上传下载分配优化、微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电、电/冷/热负荷预测、电力设备故障诊断、电池管理系统BMSSOC/SOH估算粒子滤波/卡尔曼滤波、 多目标优化在电力系统调度中的应用、光伏MPPT控制算法改进扰动观察法/电导增量法、电动汽车充放电优化、微电网日前日内优化、储能优化、家庭用电优化、供应链优化\智能电网分布式能源经济优化调度虚拟电厂能源消纳风光出力控制策略多目标优化博弈能源调度鲁棒优化等等均可~6.原创改进优化算法适合需要创新的同学原创改进2025年的波动光学优化算法WOO以及三国优化算法TKOA、白鲸优化算法BWO等任意优化算法均可保证测试函数效果一般可直接核心

更多文章