广义预测控制 GPC

合集下载

GPC实验报告

GPC实验报告

GPC实验报告引言概述:GPC(Generalized Predictive Control)是一种广义预测控制方法,首次由Clarke等人于1985年提出。

它是一种基于模型的控制方法,通过使用系统模型和预测算法来实现控制目标。

本实验报告旨在详细介绍GPC的原理和应用,并通过实验结果验证其控制性能。

正文内容:1. GPC的基本原理1.1 GPC的背景和发展GPC起源于经典的预测控制方法,通过将系统的模型与预测算法结合,实现对系统的控制。

随着计算能力的提高,GPC得到了广泛的应用。

1.2 GPC的基本思想GPC的基本思想是通过预测模型对未来一段时间内的系统行为进行预测,并根据这些预测结果计算控制信号。

它的核心理念是将预测作为控制决策的基础,以实现对系统的优化控制。

1.3 GPC的算法流程GPC的算法流程可以分为四个主要步骤:建立系统模型、预测未来的系统响应、计算控制信号和实施控制。

这些步骤将在后续章节中详细介绍。

2. GPC的关键技术2.1 GPC的系统建模GPC需要准确的系统模型来进行预测和控制。

建立系统模型的方法有很多,包括物理建模、基于数据的建模和混合建模等。

实验中,我们将选择适合的建模方法来获得准确的系统模型。

2.2 GPC的预测算法预测是GPC的核心部分,影响着控制性能的优劣。

常用的预测算法包括ARX模型、ARMAX模型和基于神经网络的模型等。

我们将选择合适的预测算法,并优化其参数,以获得准确的预测结果。

2.3 GPC的控制器设计基于预测结果,GPC使用优化算法计算最优的控制信号。

控制器设计需要考虑多个因素,包括控制目标、系统约束和性能指标等。

我们将设计合适的控制器结构,并调节参数以满足控制要求。

2.4 GPC的实时实施GPC是一种实时控制方法,需要考虑计算能力和实时性要求。

实验中,我们将使用计算机软件来实时实施GPC控制,并对实时性能进行验证。

3. GPC的应用案例3.1 GPC在工业过程控制中的应用GPC在工业过程控制中具有广泛的应用,包括化工、电力、制造等领域。

GPC控制说明文档

GPC控制说明文档

广义预测控制(GPC)1.GPC 基本原理介绍广义预测控制 (GPC) 是牛津大学的Clarke 等于1987年提出的,基于参数模型,它是以(CARIMA )受控自回归积分滑动平均模型的基础,并结合辨识和自校正机制,表现出良好的鲁棒性。

特点:(1)基于CARIMA 模型;(2)目标函数中对控制增量加权的考虑; (3)利用输出的远程预报; (4)控制时域长度概念的引入; (5)丢番图方程的递推求解; 1.1 预测模型假设系统基于下面的CARIMA 模型,)1(/)()1()()()(11∆ξk k u z B k Y z A +-=--其中,),(),(k u k y 和)(k ξ是系统的输出、输入和干扰信号。

a a n n z a z a z A ---+++= 1111)(,b b n n z b z b b z B +++=-- 1101)(,11--=z ∆,(1-z 是向后移时间算子),模型即 ∆ξ/)()1()2()1()()1()(101k n k u b k u b k u b n k y a k y a k y b n a n b a +--++-+-=-++-+ ,,/)()1()2()1()()1()(101∆ξk n k u b k u b k u b n k y a k y a k y b n a n b a +--++-+-+-----=i i b a ,是系数,用数据辨识得到。

为得到)(k y 的j 步向前预测值)(j k y +,考虑下面的丢番图方程组:Nj z F z z A z E j j j ,,1)()()(1111 =+∆=---- (2)简写成:j jj F z A E -+=∆1,其中j E 和j F 为待求多项式,a j j n F j E =∂-=∂,1,)1(110---+++=j j j z e z e e E ,aan n j j j j z f z f f F --+++= 11,)()1()(j k E j k u B E j k y A E j j j ++-+=+ξ∆∆ (3)将(2)代入(3)得:)()1()()1(j k E j k u B E j k y F z j j j j ++-+=+--ξ∆)()()1()(j k E k y F j k u B E j k y j j j +++-+=+ξ∆ (4)得到未来输出)(j k y +的预测值:),,1()()1()|(ˆN j k y F j k u B E k j k yj j =+-+∆=+ (5)为将)1(-+j k u B E j ∆中已知信息和未知信息分离开来,在考虑另一组丢番图方程:Nj H z G B E jj j j ,,1 =+=- (6)其中j G 和j H 为待求多项式,1,1-=∂-=∂b j j n H j G ,)1(1110----+++=j j j z G z g g G ,)1(1110----+++=b bn n jj j j z h z h h H , 将(6)代入(5)得:)()1()()1()1()()1()()|(ˆ0j k y j k u G k y F k u H j k u G k y F j k u H z G k j k yj j j j j j j j ++-+∆=+-∆+-+∆=+-+∆+=+-(7)求解j j j j H G F E ,,,的递推算法:jj j j j j j j j j j j j H z G B E f e A e F z F z e E E A z F E z A z A -+-+--+==-=+=-===)11()10()(,)9()1(,1)8()()(0111111∆在利用MA TLAB 仿真时,可以自编函数简化之。

广义预测控制GPC

广义预测控制GPC

一、 原理介绍1 广义预测的基本方法被控对象的数学模型采用下列离散差分方程描述:∆+-=---/)()()1()()()(111t z C t u z B t y z A ω (1.1)其中)(1-z A 、)(1-z B 和)(1-z C 是后移算子1-z 的多项式:cc b b a a n n n n n n z c z c z C z b z b b z B z a z a z A ---------+++=+++=+++= 11111011111)()(1)((1.1)式被称为受控自回归积分滑动平均模型,其英文缩写为CARIMA 。

CARIMA 模型具有下列特点:① 可描述一类非平稳扰动;② 可保证系统输出的稳态误差为零。

假设设定值或参数序列),2,1)(( =+j j t y r 是可知的,对大多数工业生产过程的恒值控制,),2,1)(( =+j j t y r 一般设定常值r y 。

为了使当前时刻的输出)(t y 尽可能平稳地到达设定值r y ,通常选用下列方程:被称为柔化因子,其中αααα10)1()1()(<≤-+-+=r r r y j t y t y性能指标函数如下:}))1()(())()(({2121-+∆∑++-+∑===j t u j j t y j t y J uN j r N N j λε (1.2)步后控制量不再变化。

,表示在其中u u N N N j j t u 1,,0)( ==+∆ 为了得到j 步后输出)(j t y +的最优预测值,使用Diophantine 方程,)()()(1111----+∆=z F z z A z E j j j (1.3))()()()(1111-----+=z H z z G z B z E j j j j (1.4)其中1,,1N j =,并且1111011111011101111101)()()()(+----+-------+----+++=+++=+++=+++=nb j nb j j j j j j n j na j j j j j j z h z h h z H z g z g g z G zf z f f z F z e z e e z E a由(1.1)、(1.2)和(1.4)可得:Et U H t Fy Gu y +-∆++=)1()((1.5) 其中⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=++===-+∆∆=++=-----Nu N N N Nu Nu N T N T N T u T T g g g g g g g g g G N t E t E E H H H F F F N t U t u u N t y t y y 121110210101111100)](,),1([],,[],,[)]1(,),([)](,),1([111ωω定义)](,),1([1N t y t y y r r T r ++=根据以上定义,性能指标函数(1.2)式可写成})(){(u u y y y y J T r T r λε+--= (1.6)将(1.5)代入(1.6),则使J 取最小的控制律为0])1()([=+--∆++u y t u H t Fy Gu G r T λ 整理得)]1()([)(1-∆--+=-t u H t Fy y G I G G u r T T λ将T T G I G G 1)(-+λ的第一行记作T N p p p p =],,,[121 并且定义11111111)(+----+++=N N N z p z p p z P(1.7)则根据滚动优化和反馈校正原理,广义预测控制率可写成如下的形式:)1()()()()()()]1()([)(1111-∆--+=-∆--=∆---t u z t y z N t y z P t u H t Fy y p t u r r T βα(1.8))()1()(t u t u t u ∆+-= (1.9)其中1111011111101111)()()()(+----=----=-+++=∑=+++=∑=nb nb j j N j nana j j N j zz z H p z z z z F p z ββββαααα(1.8)和(1.9)即为广义预测的控制律。

gpc原理

gpc原理

gpc原理GPC原理。

GPC(Generalized Predictive Control)是一种广义预测控制方法,它是一种基于模型的控制策略,可以用于多变量、非线性、时变系统的控制。

GPC控制器通过对系统进行建模和预测,来实现对系统的控制。

本文将对GPC原理进行详细介绍,包括其基本原理、控制流程和应用特点。

首先,我们来介绍GPC的基本原理。

GPC控制器的设计基于对系统的数学模型,通过对系统的建模和预测,来实现对系统的控制。

在GPC中,首先需要建立系统的数学模型,通常采用ARX(自回归外推)模型或者ARMAX(自回归滑动平均外推)模型来描述系统的动态特性。

然后,利用这个模型进行预测,得到未来一段时间内系统的响应。

最后,根据预测的结果,通过优化算法计算出控制输入,从而实现对系统的控制。

接下来,我们来介绍GPC的控制流程。

首先,需要对系统进行建模,得到系统的数学模型。

然后,利用这个模型进行预测,得到未来一段时间内系统的响应。

接着,通过优化算法计算出控制输入,将其应用于系统中,实现对系统的控制。

在实际应用中,通常需要不断地对系统进行建模和预测,以及优化控制输入,来实现对系统的稳定控制。

最后,我们来介绍GPC的应用特点。

首先,GPC可以应用于多变量系统的控制,能够处理多个输入和输出之间的相互影响。

其次,GPC可以应用于非线性系统的控制,能够处理系统动态特性的非线性影响。

此外,GPC还可以应用于时变系统的控制,能够处理系统参数随时间变化的影响。

总的来说,GPC是一种灵活、高效的控制方法,适用于各种复杂的控制系统。

综上所述,GPC是一种基于模型的控制策略,通过对系统进行建模和预测,来实现对系统的控制。

它具有灵活、高效的特点,适用于多变量、非线性、时变系统的控制。

希望本文的介绍能够帮助大家更好地理解和应用GPC控制方法。

广义预测控制

广义预测控制

广义预测控制(GPC)是一种鲁棒性强、能够有效地克服系统滞后、可应用于开环不稳定非最小相位系统的先进控制算法,但由于它需要Diophantine方程计算、矩阵求逆和最小二乘的递推求解,因此计算量很大,本文针对此缺陷提出四种不基于对象模型且实时性高的广义预测控制快速算法,为广义预测控制应用于实时性要求高的快速系统奠定了理论基础,具体研究工作如下。

(1)对参数未知单输入单输出线性系统提出一种参数自适应直接广义预测控制(DGPC)方法,该方法直接辨识广义预测控制器参数,即基于广义误差估计值对控制器参数和广义误差估计值中的未知向量进行自适应调整。

然后利用中值定理将参数未知单输入单输出非线性系统线性化变为时变线性系统,在自适应辨识中对时变参数采用三次样条函数进行逼近,以此将单输入单输出线性系统直接广义预测控制方法推广到单输入单输出非线性系统。

最后,将此方法推广到多输入多输出线性系统和非线性系统。

(2)对参数未知单输入单输出线性系统提出一种径向基函数(RBF)网络的直接广义预测控制方法,该方法利用RBF网络来逼近控制增量表达式,直接设计出广义预测控制器,并基于广义误差估计值对控制器参数即网络权值和广义误差估计值中的未知向量进行自适应调整。

然后将单输入单输出线性系统RBF网络广义预测控制方法推广到单输入单输出非线性系统。

最后,将此方法推广到多输入多输出线性系统和非线性系统。

(3)对参数未知单输入单输出线性系统提出一种模糊自适应的直接广义预测控制方法,该方法利用模糊逻辑来逼近控制增量表达式,直接设计出广义预测控制器,并基于广义误差估计值对控制器参数权值和广义误差估计值中的未知向量进行自适应调整。

然后将单输入单输出线性系统模糊自适应广义预测控制方法推广到单输入单输出非线性系统。

最后,将此方法推广到多输入多输出线性系统和非线性系统。

(4)提出一种基于灰色模型的多变量广义预测控制算法,该算法所需估计的参数少,而且多步情况下无需求解Diophantine方程,从而使计算量明显减少,极大的提高了实时性。

广义预测控制 GPC

广义预测控制 GPC

广义预测控制(GPC)GPC算法仿真被控对象模型动态矩阵控制算法的编程原理(1)(2)(3)(4)(5)(6)(7)GPC1.2.3.4.5.6.在线计算控制器参数d T7.得到控制增量?u(k)和控制输入u(k)=u(k-1)+?u(k)8.k+1?k,进入下一周期预测计算和滚动优化GPC程序:%Clarke广义预测控制(C=1)(对象参数已知)%N1=d、N、Nu取不同的值clearall;closeall;a=cell(1,2);b=cell(1,2);c=cell(1,1);d=cell(1,1);%对象参数symsk;k=length(k);endB阶次(因dgamma=1*eye(Nu);alpha=0.11;%控制加权矩阵、输出柔化系数L=600;%控制步数uk=zeros(d+nb,1);%输入初值:uk(i)表示u(k-i)duk=zeros(d+nb,1);%控制增量初值yk=zeros(naa,1);%输出初值w=10*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4+d,1)];%设定值xi=sqrt(0.01)*randn(L,1);%白噪声序列%求解多步Diophantine方程并构建F1、F2、G[E,F,G]=multidiophantine(aa,b,c,N);G=G(N1:N,:);endtime(k)=k;a=[10.8981];b=[9.99010.14142];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)dUk=duk(1:nb);%构建向量△U(k-j)elseif(300<k<=450)time(k)=k;a=[10.8838];b=[9.60410.34067];c=1;d=1;y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)end%endYr=[yr(k+N1:k+N)]';%构建向量Yk(k)%求控制量dU=inv(F1'*F1+gamma)*F1'*(Yr-F2*dUk-G*Yk);%ΔUdu(k)=dU(1);u(k)=uk(1)+du(k);%更新数据fori=1+nb:-1:2uk(i)=uk(i-1);duk(i)=duk(i-1);enduk(1)=u(k);endendfunction[E,F,G]=multidiophantine(a,b,c,N)%*********************************************************** %功能:多步Diophanine方程的求解%调用格式:[E,F,G]=sindiophantine(a,b,c,N)(注:d=1)%输入参数:多项式A,B,C系数向量及预测步数(共4个)%输出参数:Diophanine方程的解E,F,G(共3个)%************************************************************* na=length(a)-1;nb=length(b)-1;nc=length(c)-1;%A、B、C的阶次%E、F、G的初值E=zeros(N);E(1,1)=1;F(1,:)=conv(b,E(1,:));elseend%求EendendG(j+1,na)=-G(j,1)*a(na+1);F(j+1,:)=conv(b,E(j+1,:));end仿真结果N=15Nu=5alpha=0.11N=10Nu=5alpha=0.11N=15Nu=3alpha=0.11N=15Nu=3alpha=0.31结论但可。

广义预测控制,算法及仿真实例

广义预测控制,算法及仿真实例

广义预测控制算法及实例分析一.广义预测控制算法1.广义预测控制的提出广义预测控制是预测控制中三种常见算法之一。

预测控制的提出并不是某一种统一理论的产物,而是源于工业实践,并在工业实践过程中发展和完善起来的一类新型计算机控制算法。

预测控制不会过分依赖被控对象的精确数学模型,能很好的应对工业对象的结构、参数的不确定性,且用工业计算机较容易实现。

2.广义预测控制的基本原理广义预测控制是预测控制中最具代表性的算法,他有三方面的特点:基于传统的参数模型,模型参数少;是在自适应发展过称中发展起来的,保留了自适应发展的优点且更具鲁棒性;采用多步预测、滚动优化、反馈校正更适于工业应用。

广义预测控制基本原理:预测模型、滚动优化、反馈校正预测模型:预测控制的模型称为预测模型。

预测控制对模型的要求只强调其功能而非结构,只要模型可利用过去己知数据信息预测系统未来的输出行为,就可以作为预测模型。

在DMC、MAC等预测控制策略中,采用了阶跃响应、脉冲响应等非参数模型,而GPC预测控制策略则多选择CARIMA参数模型。

滚动优化:预测控制是一种优化控制算法,通过某一性能指标的最优来确定未来的控制作用。

预测控制的优化标准不是采用一成不变的全局最优化目标,而是采用滚动式的有限时域优化策略。

优化不是一次离线进行,而是反复在线进行。

在每一采样时刻,优化性能指标只涉及到未来有限的时域,而到下一采样时刻,这一优化时域同时向前推移。

因此,预测控制在每一时刻有一个相对于该时刻的优化性能指标,即实现滚动优化。

反馈校正:预测控制算法在进行滚动优化时,优化的基点应与系统实际一致。

但作为基础的预测模型,只是对象动态特性的粗略描述,可能与实时状态不慎符合。

这就需要用附加的预测手段补充模型预测的不足,或对基础模型进行在线修正。

预测控制算法在通过优化确定了一系列未来的控制作用后,每次只是实施当前时刻的控制作用。

到下一采样时刻,则首先检测对象的实际输出,并利用这一实时信息对基于模型的预测进行修正,然后再进行新的优化。

PI型广义预测控制算法及其在温度控制中的应用研究

PI型广义预测控制算法及其在温度控制中的应用研究

PI型广义预测控制算法及其在温度控制中的应用研究摘要广义预测控制(Generalized Predictive Control)是80年代产生的一种新型计算机控制方法是预测控制中最具有代表性的算法之一,它一出现就受到了国内外控制理论界和工业界的重视成为研究领域最为活跃的一种预测控制算法。

本文对广义预测控制理论进行深入研究,包括其基本理论、算法的优点及一些重要参数对系统性能的影响,使用Matlab和Visual Basic软件编写程序,实现PI型广义预测控制算法对工业过程常见的一阶、二阶带纯滞后对象的控制仿真,并将该算法应用于温度控制,得到了良好的控制效果.该算法对模型的精度要求不高,具有多步预测、滚动优化和反馈校正三个基本特征,具有优良的控制性能和鲁棒性,由于在优化中引入了多步预测思想,使其抗扰动及时延变化等能力显著提高。

主要工作内容如下:(1)研究了广义预测控制算法和传统的PID控制算法的原理,并分析比较了它们在实际应用中的优缺点。

(2)研究了基于GPC的PI型控制算法,将其应用于温度控制,并用MATLAB仿真,仿真结果表明,该算法在快速性和稳态性能方面均有较优秀的表现。

关键词:PI广义预测控制(GPC),系统仿真,丢番图方程,温度控制THE STUDY OF PI TYPE GENERALIZED PREDICTIVE CONTROL AND ITS APPLICATION INTEMPERATURE PROCESSABSTRACTGeneralized Predictive Control (GPC), which appeared in 80’s, is a new type of computer control method and one of the most representative algorithm. It has received increasing attention in the field of control and industry.The generalized predictive control was researched in the paper concluding the basic theory, the advantage of the algorithm and the effect of some important parameters. Matlab and Visual Basic are adopted to programming. Furthermore, simulation research was done for the first order and the second order model of industry process. Also, the algorithm was applied on temperature process. GPC algorithm doesn’t depend on exact model, which has three characters in the forms of multiple forecasting, roll optimize and feedback correction. Meanwhile, it shows well qualities of control and great robust. The ability of disturbance rejection and time-varying restraining has been enhanced greatly with the multi-step forecasting concept. The main idea is as follows,(1) The principles of the generalized predictive control and the traditional PID control were analyzed, and their advantages and defaults in practice were compared.(2) The PI type generalized predictive control and its application in temperature control was studied. Matlab simulation research showed that the improved algorithm can obtain better control effect in both the response time and the steady-state performance.Key words: PI type Generalized Predictive Control , System Simulation,Diophantine Equation, Temperature Process目录摘要 ........................................................................ I ABSTRACT . (II)一、绪论 (1)1.1 先进控制发展概述 (1)1.1.1 先进控制的产生背景 (1)1.1.2 先进控制的种类 (1)1.2 预测控制发展概述 (4)广义预测控制发展概述 (5)二、PID 算法和仿真 (6)2.1 PID 算法 (6)2.1.1 对象辩识和初始参数整定 (8)2.2 PID 控制参数对系统性能影响 ........................................... 9 .比例增益p K 对系统性能的影响 ....................................... 9 积分时间i T 对控制性能的影响 .. (10)2.2.3 微分时间d T 对控制性能的影响 (10)2.3 被控对象离散数学模型的建立 (10)2.4 PID 控制仿真 (13)三、广义预测控制基本算法 (19)预测模型 (19)3.2 j 步导前输出 (20)3.3 Diophantine 方程的递推求解 (21)3.4 多步输出预测 (23)最优控制率的计算 (24)系统的IMC 结构 (25)四、PI 型广义预测控制算法 (30)控制算法的推导 (30)4.2 简化控制算法的推导 (33)4.3 仿真研究 (35)4.3.1 主要调节过程及结论 (35)4.3.2 PIGPC 与PID 仿真结果比较 (37)4.3.3 PIGPC 的抗干扰性,随动性,鲁棒性 (37)4.3.4 比例因子P K 和积分因子I K (39)五、总结 (41)参考文献 (42)致谢 (44)附录 (45)一、绪论先进控制发展概述先进控制作为现今工业控制界的主要控制策略,经过了近半个世纪的发展才得以达到今天的发展水平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

广义预测控制(GPC)
GPC算法仿真
被控对象模型
动态矩阵控制算法的编程原理
(1)设置GPC参数,例如采样周期,预测时域,控制时域,截断步长等。

(2)建立系统阶跃响应模型
(3)设置初始时刻参数,例如系统的初始时刻值,柔化系数等。

(4)计算参考轨迹
(5)计算控制作用增量
(6)实施GPC控制
(7)输出结果,绘制曲线
GPC算法:
1.初选控制参数:Q、R、P、M、 ysp 、α、Â(z-1)
2.采集输入、输出样本{∆u(k),∆y(k)}
3.用RLS算法估计参数
4.递推求解Diophantine方程,得到
5.计算F(k)
6.在线计算控制器参数d T
7.得到控制增量∆u(k)和控制输入u(k) =u(k-1) +∆u(k)
8.k+1 →k,进入下一周期预测计算和滚动优化
GPC程序:
%Clarke广义预测控制(C=1)(对象参数已知)
%N1=d、N、Nu取不同的值
clear all;close all;
a=cell(1,2) ;b=cell(1,2) ;c=cell(1,1);d=cell(1,1);%对象参数syms k;
k=length(k);
if (0<=k<=150)
a=[1 0.9234]; b=[7.2402 0.9485]; c=1; d=1;
elseif (150<k<=300)
a=[1 0.8981]; b=[9.9901 0.14142]; c=1; d=1; elseif (300<k<=450)
a=[1 0.8838]; b=[9.6041 0.34067]; c=1; d=1;
else (450<k<=600)
a=[1 0.9234]; b=[7.2402 0.9485]; c=1; d=1;
end
na=length(a)-1;b=[zeros(1,d-1) b];nb =length(b)-1;%na、nb为多项式A、B阶次(因d!=1,对b添0)
aa=conv(a,[1 -1]);naa=na+1;%aa的阶次
N1=d;N=15;Nu=5;%最小输出长度、预测长度、控制长度
gamma=1*eye(Nu);alpha=0.11;%控制加权矩阵、输出柔化系数
L=600;%控制步数
uk=zeros(d+nb,1);%输入初值:uk(i)表示u(k-i)
duk=zeros(d+nb,1);%控制增量初值
yk=zeros(naa,1);%输出初值
w=10*[ones(L/4,1);-ones(L/4,1);ones(L/4,1);-ones(L/4+d,1)]; %设定值
xi=sqrt(0.01)*randn(L,1);%白噪声序列
%求解多步Diophantine方程并构建F1、F2、G
[E,F,G]=multidiophantine(aa,b,c,N);
G=G(N1: N, : );
F1=zeros(N-N1+1,Nu); F2=zeros(N-N1+1,nb);
for i=1:N-N1+1
for j=1:min(i,Nu); F1(i,j)=F(i+N1-1,i+N1-1-j+1);end for j=1:nb; F2(i,j)=F(i+N1-1,i+N1-1+j);end
end
for k=1:L
if (1<=k<=150)
time(k)=k;
a=[1 0.9234]; b=[7.2402 0.9485]; c=1; d=1;
y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)
dUk=duk(1:nb);%构建向量△U(k-j)
elseif (150<k<=300)
time(k)=k;
a=[1 0.8981]; b=[9.9901 0.14142]; c=1; d=1;
y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)
dUk=duk(1:nb);%构建向量△U(k-j)
elseif (300<k<=450)
time(k)=k;
a=[1 0.8838]; b=[9.6041 0.34067]; c=1; d=1; y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)
dUk=duk(1:nb);%构建向量△U(k-j)
else (450<k<=L)
time(k)=k;
a=[1 0.9234]; b=[7.2402 0.9485]; c=1; d=1; y(k)=-aa(2:naa+1)*yk+b*duk(1:nb+1)+xi(k);%采集输出数据Yk=[y(k);yk(1:na)];%构建向量Y(k)
dUk=duk(1:nb);%构建向量△U(k-j)
end
%参考轨迹
yr(k)=y(k);
for i=1:N
yr(k+i)=alpha*yr(k+i-1)+(1-alpha)*w(k+d); end
Yr=[yr(k+N1:k+N)]';%构建向量Yk(k)
%求控制量
dU=inv(F1'*F1+gamma)*F1'*(Yr-F2*dUk-G*Yk); %ΔU du(k)=dU(1); u(k)=uk(1)+du(k);
%更新数据
for i=1+nb:-1:2
uk(i)=uk(i-1);
duk(i)=duk(i-1);
end
uk(1)=u(k);
duk(1)=du(k);
for i=naa:-1:2
yk(i)=yk(i-1);
end
yk(1)=y(k);
end
subplot(2,1,1);
plot(time,w(1:L),'m:',time,y);
xlabel('k');ylabel('w(k)、y(k)');
legend('w(k)','y(k)');
subplot(2,1,2);
plot(time,u);
xlabel('k');ylabel('u(k)');
function[E,F,G]=multidiophantine(a,b,c,N)
%********************************************************** *
%功能:多步Diophanine方程的求解
%调用格式:[E,F,G]=sindiophantine(a,b,c,N)(注:d=1)
%输入参数:多项式A,B,C系数向量及预测步数(共4个)
%输出参数:Diophanine方程的解E,F,G(共3个)
%********************************************************** ***
na=length(a)-1;nb =length(b)-1;nc=length(c)-1;%A、B、C的阶次
%E、F、G的初值
E=zeros(N);E(1,1)=1;F(1,:)=conv(b,E(1,:));
if na>=nc
G(1,:)=[c(2:nc+1) zeros(1,na-nc)]-a(2:na+1);%令c(nc+2)=c(nc+3)=...=0
else
G(1,:)=c(2:nc+1) -[a(2:na+1)-zeros(1,nc-na)];%令a(nc+2)=a(nc+3)=...=0
end
%求E、F、G
for j=1:N-1
for i=1:j
E(j+1,i)=E(j,i);
end
E(j+1,j+1)=G(j,1);
for i=2:na
G(j+1,i-1)=G(j,i)-G(j,1)*a(i);
end
G(j+1,na)=-G(j,1)*a(na+1);
F(j+1,: )=conv(b,E(j+1,:));
end
仿真结果
N=15 Nu=5 alpha=0.11
N=10 Nu=5 alpha=0.11
N=15 Nu=3 alpha=0.11
N=15 Nu=3 alpha=0.31
结论
可以得出,当保持其他参数不变而改变一或几个变量时会有不同的情形。

当预测步长越大,系统越稳定,预测步长越小,系统的快速性会变好,但对系统响应没有多大影响。

当预测步长不变时,随着控制步长的减小,系统的稳定性和鲁棒性会更好,但可能跟踪性能会变差。

随着控制步长的增大,系统的灵敏性更好,动态性能会更好。

柔化系数越大参考轨迹柔性变好,鲁棒性变好,而系统的快速性下降。

心得体会
通过这次对GPC的仿真,让我更好的掌握了Matlab的运用方法,更熟悉了Matlab的一些技巧和仿真步骤。

虽然在先前的几次仿真中遇到或失败或者错误之类的,但经过同学之间的交流和师兄的指导和查阅相关资料,这些问题都得到了一一克服,我觉得这是对我对书本知识运用的一次很好的历练。

相关文档
最新文档