zl程序教程

您现在的位置是:首页 >  后端

当前栏目

飞蛾逐月优化算法求解最优潮流(Matlab实现)

MATLAB算法 实现 优化 求解 最优 潮流
2023-09-14 09:05:20 时间

目录

1 月光下的飞蛾

2 数值实验

3 MSA

4 Matlab代码


1 月光下的飞蛾

本文是一种新的蛾群算法(MSA),该算法受蛾群朝向月光的启发,用于求解约束最优潮流(OPF)问题特别适合。除了自适应高斯行走和螺旋运动外,还提出了具有即时记忆和群体多样性交叉的Lévy变异联想学习机制,以分别提高开发和探索能力。MSA的有效性和优越性已得到证明。

2 数值实验

3 MSA

%______________________________________________________________________________________________
%  Moth Swarm Algorithm (MSA)                                                            
                                                                                               
%_______________________________________________________________________________________________
% 该算法具有快速收敛的特点。
% 只需少量迭代即可获得满意的结果。
for iji=[1,8,21]
     if iji==1;F=('F1');elseif iji==2;F=('F2');elseif iji==3;F=('F3');elseif iji==4;F=('F4');elseif iji==5;F=('F5'); ...
     elseif iji==6;F=('F6');elseif iji==7; F=('F7'); elseif iji==8; F=('F8');elseif iji==9; F=('F9'); ... 
     elseif iji==10; F=('F10');elseif iji==11; F=('F11');elseif iji==12; F=('F12'); ...
     elseif iji==13; F=('F13');elseif iji==14; F=('F14');elseif iji==15; F=('F15');
     elseif iji==16; F=('F16');elseif iji==17; F=('F17');elseif iji==18; F=('F18');
     elseif iji==19; F=('F19');elseif iji==20; F=('F20');elseif iji==21; F=('F21');
     elseif iji==22; F=('F22');elseif iji==23; F=('F23');
     end
     
     if iji < 14;Max_iteration=1000;else Max_iteration=500;end% 最大迭代次数

     SearchAgents_no=30;
     Nc=6;% 开拓者的数目: 4 <=  Nc  <= 20% of SearchAgents_no

     %% 加载所选基准函数的详细信息
     [lb,ub,dim,fobj]=Get_Functions_details(F);
     
     [Best_pos,Best_score,Convergence_curve]=MSA(SearchAgents_no,Nc,Max_iteration,ub,lb,dim,fobj);
     
%% 绘制并显示目标函数

figure,semilogy(Convergence_curve); title( F ); xlabel('迭代次数'); ylabel('最优解');
display([F,'的最优解为: ',num2str(Best_pos)]);
display([F,'的最优值为 ', num2str(Best_score)]);
end

        

 

4 Matlab代码