m基于神经网络预测模型的室内温度调节控制系统matlab仿真

目录

1.算法仿真效果

2.MATLAB核心程序

3.算法涉及理论知识概要

4.完整MATLAB


1.算法仿真效果

matlab2022a仿真结果如下:

 

 

2.MATLAB核心程序

...............................................................
%%
%参考轨迹
%参考轨迹
yr         = zeros(ALL_Times,1);
yr         = func_reference(ALL_Times,CV,OAT,ZT);

number1    = 25;
number2    = 16;
Set_Vlaue  = 10;
yout_1     = 0;
cube_define;

%%
%循环仿真
%循环仿真3
for k=2:2*ALL_Times-10
    if  k <= ALL_Times%在线辨识学习 
        %控制器
        [yout,Errs,u] = func_controller0(y_1,K,e,Set_Vlaue,u,A0,k,ALL_Times,number1,number2,CV(k),OAT(k),ZT(k));
...........................................................
        %在线神经网络训练
        %Inner network
        for j=1:1:Nums      
            I(j)    = State'*w1(:,j);      
            Iout(j) = 1/(1+exp(-I(j))); %隐含层
        end
        %Output of network
        err_estimate(k) = w2'*Iout; 
        e1(k)           = err_estimate(k)-e(k);   
        %Updata the weight
        w2              = w2d1-(Learn_Rate*0.1*e1(k))*Iout+Alpha*(w2d1-w2d2);  
        for j=1:1:Nums      
            FI(j)=exp(-I(j))/(1+exp(-I(j)))^2; 
        end
        %隐含层权值的更新
        for i=1:1:Nums2      
            for j=1:1:Nums      
                dw1(i,j)=e1(k)*Learn_Rate*FI(j)*w2(j)*State(i);     
            end
        end
        %权值的更新
..........................................................
        %开始实际的工作
        Ind     = k-ALL_Times+2;   
        %被控对象
        yout(Ind) = func_system_model(y_1,u_1,CV(Ind),OAT(Ind),ZT(Ind));
        %控制器输出
.................................................................
        %辨识输出
..............................................    
        %延迟
        %延迟
        State(1)        = yout(Ind);
        State(2)        = yout(Ind-1);
        State(3)        = u(Ind);
        State(4)        = u(Ind-1);
    end
end

Start   = 10;
Ends    = length(yout)-10;
y_real  = yout(Start:Ends);
y_pred  = ym(Start:Ends);
y_pred1 = ym1(Start:Ends);
U_cont  = u(Start:Ends);
Times   = t(Start:Ends);

figure;
subplot(211);
plot(Times,y_pred,'g','linewidth',2);
hold on
plot(Times,y_real,'r','linewidth',1);
hold off
grid on
legend('预测输出','模型输出');
xlabel('Time')
ylabel('振幅')

subplot(212);
plot(Times,U_cont,'b','linewidth',2);
legend('控制u')
xlabel('Time')
ylabel('振幅')
grid on

figure;
subplot(211);
plot(Times,y_pred1,'b','linewidth',2);
legend('预测输出')
xlabel('Time')
ylabel('振幅')
grid on
subplot(212);
plot(Times,abs(y_real-y_pred),'r','linewidth',2);
xlabel('Time')
ylabel('误差')
grid on
Err = abs(mean(y_real(round(length(y_real)/2):end)-y_pred(round(length(y_pred)/2):end)));
disp('误差:');
Err
08_022_m

3.算法涉及理论知识概要

先简单的介绍一下BP神经网络:

给定一组样本: 

输入S层的相应单元,A层各单元的激活值为: 

目标函数:

       MPC方法一个潜在的弱点是优化问题必须能严格地按要求推算,尤其是在非线性系统中。模型预测控制已经广泛地应用于线性MPC问题中,但为了减小在线计算时的计算量,该部分的计算为离线。

       一个非常强大的函数逼近器为神经网络,它能很好地用于表示非线性模型或控制器。基于模型跟踪控制的方法已经普遍地应用在神经网络控制,这种方法的一个局限性是它不适合于不稳定地逆系统,基此本文研究了基于优化控制技术的方法。

       许多基于神经网络的方法已经提出了应用在优化控制问题方面,该优化控制的目标是最小化一个与控制相关的代价函数。一个方法是用一个神经网络来逼近与优化控制问题相关联的动态程式方程的解。

       考虑一个离散非线性控制系统:

        其中 为控制器的输出, 为输入, 为状态矢量。控制目标是保持输出接近参考轨迹 ,一般地控制目标是通过最小化代价函数来实现的:

同时约束条件为: 

        在模型预测控制(MPC)中,控制信号的确定是通过在每个采样时刻输入序列为 时,最小化代价函数(2)。只有优化输入序列的第一个元素u(k)作为系统的输入,在下一个采样时刻k+1,新的优化问题是对于给定的优化控制问题而言的。在这种方法中,终止条件 可以看作是一个当时刻K+N趋于无穷时最小化代价函数的逼近器,但实际上更多的是用于保证闭环的稳定性。模型预测控制方法有一个非线性的缺点,且需要通过在每个采样时刻得到受约束的优化问题,同时需要通过在线计算来实现.

4.完整MATLAB

V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值