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

139 阅读3分钟

1.算法仿真效果

matlab2022a仿真结果如下:

1.png

2.png

3.png

4.png

5.png

 

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

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

7248974589f95e32b76a22bd67629022_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png  

给定一组样本:

 

c3e780cf0f74dd74761e050ccf34ed9e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

 

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

 

d8dc4637d3a1107ec3a6d77a272e7ddf_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

 

 

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

 

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

 

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

 

b219f69ff89f5532bcf6a76086a7c8a5_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

 

 

 

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

 

 

 

 

3.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_Rate0.1e1(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_RateFI(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`