基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法

1.程序功能描述

基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB 仿真,对比PSO优化算法。分别通过WOA和PSO两种优化算法,对NARMAX模型进行参数辨识,对比优化收敛性能和参数辨识误差。

2.测试软件版本以及运行结果展示

MATLAB2022A/MATLAB2024B版本运行

3.核心程序

.............................................................
        for j=1:D
            if rand_flag<0.5   
               if abs(K1)>=1
                  RLidx    = floor(Num*rand()+1);
                  X_rand   = xwoa(RLidx, :);
                  D_X_rand = abs(K2*X_rand(j)-xwoa(i,j)); 
                  xwoa(i,j)= X_rand(j)-K1*D_X_rand;     
               else
                  D_Leader = abs(K2*woa_idx(j)-xwoa(i,j)); 
                  xwoa(i,j)= woa_idx(j)-K1*D_Leader;    
               end
            else
                distLeader = abs(woa_idx(j)-xwoa(i,j));
                xwoa(i,j)  = distLeader*exp(6*l).*cos(l.*6*pi)+woa_idx(j);
            end
            %目标函数更新
            if xwoa(i,j)>=tmps(j,2) 
               xwoa(i,j)=tmps(j,2);
            end
            if xwoa(i,j)<=tmps(j,1) 
               xwoa(i,j)=tmps(j,1);
            end
        end
    end
    % 记录当前迭代的种群最佳适应度值
    Ysave(t)  =1/(1+woa_get);
    % 记录当前迭代的种群最佳位置
    Xsave(:,t)=woa_idx;  
 
% 绘制种群最佳适应度值随迭代次数的变化曲线
figure
plot(1:Iters,Ysave,'LineWidth',2);
% 绘制种群最佳位置各分量随迭代次数的变化曲线
title('WOA优化过程'); 
err=Xsave(:,end)-theta0';
figure
plot(1:Iters,Xsave,'LineWidth',2);
legend(['第1个参数误差:',num2str(err(1))],['第2个参数误差:',num2str(err(2))],['第3个参数误差:',num2str(err(3))],['第4个参数误差:',num2str(err(4))],['第5个参数误差:',num2str(err(5))],['第6个参数误差:',num2str(err(6))]); 
title('WOA优化过程'); 
save R2.mat Iters Ysave Xsave err
101

4.本算法原理

非线性自回归滑动平均外生输入(NARMAX)模型是一种广泛应用于非线性系统 建模的工具,能够描述系统的动态特性。然而,NARMAX 模型的参数辨识是一个复杂的非线性优化问题。鲸鱼优化算法(WOA)和粒子群优化算法(PSO)都是常用的智能优化算法,可用于解决这类参数辨识问题。 

 

posted @ 2026-03-11 02:29  软件算法开发  阅读(1)  评论(0)    收藏  举报