首页 > 行业资讯 > 【智能优化算法】基于融合Sin混沌和分段权值的阿基米德优化算法(SAOA) 求解单目标优化问题附matlab代码

【智能优化算法】基于融合Sin混沌和分段权值的阿基米德优化算法(SAOA) 求解单目标优化问题附matlab代码

时间:2022-02-25 来源: 浏览:

【智能优化算法】基于融合Sin混沌和分段权值的阿基米德优化算法(SAOA) 求解单目标优化问题附matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于话题 #智能优化算法及应用 357个

1 简介

针对阿基米德优化算法(Archimedes Optimization Algorithm,AOA)存在全局搜索能力弱、收敛精度低,易陷入局部最优等问题,提出融合Sin混沌和分段权值的阿基米德优化算法(SAOA)。首先,采用无限折叠迭代的Sin混沌反向学习策略初始化种群,提高初始阶段解的质量,为全局搜索多样性奠定基础;其次,引入算数交叉算子,将当前个体向与全局最优个体进行交叉,引导种群向最优解区域寻优,提高全局搜索能力;同时,引入分段权值策略,平衡算法的全局勘探与局部开发能力,降低算法陷入局部最优的概率;最后,通过对8个测试函数和部分CEC2014函数进行仿真实验及Wilcoxon秩和检验来评估改进算法的寻优性能,实验结果表明改进算法在搜索精度、收敛速度和稳定性等方面均有较大提升。另外,引入优化机械设计案例进行测试分析,进一步验证SAOA在工程优化问题上的可行性和适用性。 

2 部分代码

function [Xbest, Scorebest,Convergence_curve] = AOA(Materials_no,Max_iter,fobj, dim,lb,ub,C3,C4) % Initialization C1 = 2;C2=6; u = .9;l=.1; %paramters in Eq. (12) X = lb+rand(Materials_no,dim)*(ub-lb);%initial positions Eq. (4) den = rand(Materials_no,dim); % Eq. (5) vol = rand(Materials_no,dim); acc = lb+rand(Materials_no,dim)*(ub-lb);% Eq. (6) for i=1:Materials_no Y(i) = fobj(X(i,:)); end [Scorebest, Score_index] = min(Y); Xbest = X(Score_index,:); den_best = den(Score_index,:); vol_best = vol(Score_index,:); acc_best = acc(Score_index,:); acc_norm = acc; for t = 1:Max_iter TF = exp(((t-Max_iter)/(Max_iter))); % Eq. (8) if TF>1 TF = 1; end d = exp((Max_iter-t)/Max_iter)-(t/Max_iter); % Eq. (9) acc = acc_norm; r = rand(); for i=1:Materials_no den(i, : )=den(i,:)+r*(den_best-den(i,:)); % Eq. (7) vol(i, : )=vol(i,:)+r*(vol_best-vol(i,:)); if TF<.45%collision mr = randi(Materials_no); acc_temp(i, : )=(den(mr,:)+(vol(mr,:).*acc(mr,:)))./(rand*den(i,:).*vol(i,:)); % Eq. (10) else acc_temp(i, : )=(den_best+(vol_best.*acc_best))./(rand*den(i,:).*vol(i,:)); % Eq. (11) end end acc_norm = ((u*(acc_temp-min(acc_temp(:))))./(max(acc_temp(:))-min(acc_temp(:))))+l; % Eq. (12) for i=1:Materials_no if TF<.4 for j=1:size(X,2) mrand = randi(Materials_no); Xnew(i,j) = X(i,j)+C1*rand*acc_norm(i,j).*(X(mrand,j)-X(i,j))*d; % Eq. (13) end else for j=1:size(X,2) p = 2*rand-C4; % Eq. (15) T = C3*TF; if T>1 T = 1; end if p<.5 Xnew(i,j) = Xbest(j)+C2*rand*acc_norm(i,j).*(T*Xbest(j)-X(i,j))*d; % Eq. (14) else Xnew(i,j) = Xbest(j)-C2*rand*acc_norm(i,j).*(T*Xbest(j)-X(i,j))*d; end end end end Xnew = fun_checkpositions(dim,Xnew,Materials_no,lb,ub); for i=1:Materials_no v = fobj( Xnew(i,:)); if v<Y(i) X(i, : )=Xnew(i,:); Y (i)=v; end end [var_Ybest,var_index] = min(Y); Convergence_curve(t) = var_Ybest; if var_Ybest<Scorebest Scorebest = var_Ybest; Score_index = var_index; Xbest = X(var_index,:); den_best = den(Score_index,:); vol_best = vol(Score_index,:); acc_best = acc_norm(Score_index,:); end end end function vec_pos=fun_checkpositions(dim,vec_pos,var_no_group,lb,ub) Lb = lb*ones(1,dim); Ub = ub*ones(1,dim); for i=1:var_no_group isBelow1 = vec_pos(i,:) < Lb; isAboveMax = (vec_pos(i,:) > Ub); if isBelow1 == true vec_pos(i, : ) =Lb; elseif find(isAboveMax== true) vec_pos(i, : ) = Ub; end end end

3 仿真结果

4 参考文献

[1]罗仕杭,何庆.融合Sin混沌和分段权值的阿基米德优化算法[J/OL].计算机工程与应用:1-12[2022-02-23].

博主简介: 擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐