多种智能优化算法运行时间和不同函数测试对比附matlab代码

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 多种智能优化算法运行时间和不同函数测试对比附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

智能优化算法是一种常用的求解最优化问题的方法,包括遗传算法、粒子群优化算法、蚁群算法等等。这些算法具有不同的优缺点和适用范围,因此在实际应用中需要进行对比。

下面是一些常见的智能优化算法及其特点:

  1. 遗传算法(GA):通过模拟种群遗传过程来寻找最优解,具有全局搜索能力和收敛速度较快的特点。
  2. 粒子群算法(PSO):通过模拟粒子在解空间中的运动过程来寻找最优解,具有易于实现和求解速度快的特点。
  3. 蚁群算法(ACO):利用蚁群在食物与蚂蚁巢穴之间的搜索规律来寻找最优解,具有分布式搜索和适用于多目标优化等特点。
  4. 本文涵盖鲸鱼算法、麻雀算法遗传算法、蝗虫算法、灰狼算法、改进蝗虫算法、改进灰狼算法飞蛾算法、飞蛾算法、多元宇宙算法、北方苍鹰算法、粒子群算法、蛇群算法、正弦算法等

为了比较这些算法的性能,通常需要进行不同函数测试。常用的测试函数包括Sphere、Rastrigin、Griewank、Ackley、Schwefel和Rosenbrock等。这些函数具有不同的复杂度和性质,可以用于评估不同算法的性能。另外加入了运行时间对比。

⛄ 部分代码

%_________________________________________________________________________________

%  Equilibrium Optimizer source code (Developed in MATLAB R2015a)

%

%  programming: Afshin Faramarzi & Seyedali Mirjalili

%

%  e-Mail: afaramar@hawk.iit.edu, afshin.faramarzi@gmail.com

%

%  paper:

%  A. Faramarzi, M. Heidarinejad, B. Stephens, S. Mirjalili,

%  Equilibrium optimizer: A novel optimization algorithm

%  Knowledge-Based Systems

%  DOI: https://doi.org/10.1016/j.knosys.2019.105190

%____________________________________________________________________________________


function [Ave,Sd,Convergence_curve]=EO(Particles_no,Max_iter,lb,ub,dim,fobj,Run_no)


for irun=1:Run_no


Ceq1=zeros(1,dim);   Ceq1_fit=inf;

Ceq2=zeros(1,dim);   Ceq2_fit=inf;

Ceq3=zeros(1,dim);   Ceq3_fit=inf;

Ceq4=zeros(1,dim);   Ceq4_fit=inf;


C=initialization(Particles_no,dim,ub,lb);



Iter=0; V=1;


a1=2;

a2=1;

GP=0.5;


while Iter<Max_iter

 

     for i=1:size(C,1)  

       

       Flag4ub=C(i,:)>ub;

       Flag4lb=C(i,:)<lb;

       C(i,:)=(C(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;        

         

       fitness(i)=fobj(C(i,:));

     

       if fitness(i)<Ceq1_fit

             Ceq1_fit=fitness(i);  Ceq1=C(i,:);

       elseif fitness(i)>Ceq1_fit && fitness(i)<Ceq2_fit  

             Ceq2_fit=fitness(i);  Ceq2=C(i,:);              

       elseif fitness(i)>Ceq1_fit && fitness(i)>Ceq2_fit && fitness(i)<Ceq3_fit

             Ceq3_fit=fitness(i);  Ceq3=C(i,:);

       elseif fitness(i)>Ceq1_fit && fitness(i)>Ceq2_fit && fitness(i)>Ceq3_fit && fitness(i)<Ceq4_fit

             Ceq4_fit=fitness(i);  Ceq4=C(i,:);

                       

       end

     end

     

%---------------- Memory saving-------------------  

     if Iter==0

       fit_old=fitness;  C_old=C;

     end

   

    for i=1:Particles_no

        if fit_old(i)<fitness(i)

            fitness(i)=fit_old(i); C(i,:)=C_old(i,:);

        end

    end


   C_old=C;  fit_old=fitness;

%-------------------------------------------------

     

Ceq_ave=(Ceq1+Ceq2+Ceq3+Ceq4)/4;                              % averaged candidate

C_pool=[Ceq1; Ceq2; Ceq3; Ceq4; Ceq_ave];                     % Equilibrium pool


 

t=(1-Iter/Max_iter)^(a2*Iter/Max_iter);                      % Eq (9)


 

   for i=1:Particles_no

          lambda=rand(1,dim);                                % lambda in Eq(11)

          r=rand(1,dim);                                     % r in Eq(11)  

          Ceq=C_pool(randi(size(C_pool,1)),:);               % random selection of one candidate from the pool

          F=a1*sign(r-0.5).*(exp(-lambda.*t)-1);             % Eq(11)

          r1=rand(); r2=rand();                              % r1 and r2 in Eq(15)

          GCP=0.5*r1*ones(1,dim)*(r2>=GP);                   % Eq(15)

          G0=GCP.*(Ceq-lambda.*C(i,:));                      % Eq(14)

          G=G0.*F;                                           % Eq(13)

          C(i,:)=Ceq+(C(i,:)-Ceq).*F+(G./lambda*V).*(1-F);   % Eq(16)                                                            

   end

 

      Iter=Iter+1;  

      Convergence_curve(Iter)=Ceq1_fit;

      Ceqfit_run(irun)=Ceq1_fit;


end



% display(['Run no : ', num2str(irun)]);

% display(['The best solution obtained by EO is : ', num2str(Ceq1,10)]);

% display(['The best optimal value of the objective funciton found by EO is : ', num2str(Ceq1_fit,10)]);

% disp(sprintf('--------------------------------------'));

end



Ave=mean(Ceqfit_run);

Sd=std(Ceqfit_run);

end


%%

function [Cin,domain]=initialization(SearchAgents_no,dim,ub,lb)


Boundary_no= size(ub,2); % numnber of boundaries


% If the boundaries of all variables are equal and user enter a signle

% number for both ub and lb

if Boundary_no==1

   Cin=rand(SearchAgents_no,dim).*(ub-lb)+lb;

   domain=ones(1,dim)*(ub-lb);

end



% If each variable has a different lb and ub

if Boundary_no>1

   for i=1:dim

       ub_i=ub(i);

       lb_i=lb(i);

       Cin(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;

   end

   domain=ones(1,dim).*(ub-lb);

end

end

⛄ 运行结果

⛄ 参考文献


⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
3天前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
93 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
1月前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
1月前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
148 68
|
3天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
1天前
|
传感器 算法
基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真
本项目基于遗传算法(GA)优化多机无源定位系统的GDOP,使用MATLAB2022A进行仿真。通过遗传算法的选择、交叉和变异操作,迭代优化传感器配置,最小化GDOP值,提高定位精度。仿真输出包括GDOP优化结果、遗传算法收敛曲线及三维空间坐标点分布图。核心程序实现了染色体编码、适应度评估、遗传操作等关键步骤,最终展示优化后的传感器布局及其性能。
|
3天前
|
算法 数据可视化 数据安全/隐私保护
一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法
本课题基于MATLAB对一级倒立摆控制系统进行升级仿真,增加了PI、PD控制器,并对比了极点配置、线性二次型、PID、PI及PD五种算法的控制效果。通过GUI界面显示倒立摆动画和控制输出曲线,展示了不同控制器在偏转角和小车位移变化上的性能差异。理论部分介绍了倒立摆系统的力学模型,包括小车和杆的动力学方程。核心程序实现了不同控制算法的选择与仿真结果的可视化。
31 15
|
5天前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。
|
2天前
|
机器学习/深度学习 算法 安全
基于深度学习的路面裂缝检测算法matlab仿真
本项目基于YOLOv2算法实现高效的路面裂缝检测,使用Matlab 2022a开发。完整程序运行效果无水印,核心代码配有详细中文注释及操作视频。通过深度学习技术,将目标检测转化为回归问题,直接预测裂缝位置和类别,大幅提升检测效率与准确性。适用于实时检测任务,确保道路安全维护。 简介涵盖了算法理论、数据集准备、网络训练及检测过程,采用Darknet-19卷积神经网络结构,结合随机梯度下降算法进行训练。
|
26天前
|
前端开发 JavaScript 测试技术
使用ChatGPT生成登录产品代码的测试用例和测试脚本
使用ChatGPT生成登录产品代码的测试用例和测试脚本
82 35

热门文章

最新文章