預(yù)測控制大作業(yè)_第1頁
預(yù)測控制大作業(yè)_第2頁
預(yù)測控制大作業(yè)_第3頁
預(yù)測控制大作業(yè)_第4頁
預(yù)測控制大作業(yè)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、預(yù)測控制作業(yè)程序調(diào)試8-1:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為:解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:% 將多項式的傳遞函數(shù)模型轉(zhuǎn)換為MPC傳遞函數(shù)模型num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x,t=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0;Sx=scal(x,mx,stdx);% 生成

2、用于線性回歸計算的輸入/出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);% 基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=1;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-2:考慮一個雙輸入單輸出的對象,其傳遞函數(shù)矩陣為:采樣時間為7秒解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:num1=5.72;den1=60 1;g1=poly2tfd(num1,den1,0,14);num2=1.52;den2=25 1;g2 = poly2tfd

3、(num2,den2,0,15);%將MPC傳遞函數(shù)模型轉(zhuǎn)換為MPC狀態(tài)空間模型mod=tfd2mod(7,1,g1,g2);%將MPC狀態(tài)空間模型轉(zhuǎn)換為通用狀態(tài)空間模型A,B,C,D=mod2ss(mod);%將通用狀態(tài)空間模型轉(zhuǎn)換LTI對象的 狀態(tài)空間模型sys=ss(A,B,C,D);h=tf(sys);% 獲得脈沖信號xu,t=gensig('pulse',8,10,0.1);x=u u; % 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0 0;

4、Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);% 基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=2;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-3:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為: 解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線% 將多項式的傳遞函數(shù)模型轉(zhuǎn)換為MPC傳遞函數(shù)模型num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu

5、,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 生成用于線性回歸計算的輸入/輸出數(shù)據(jù)矩陣n=30;xreg,yreg = wrtreg(Sx,y,n);% 基于部分最小二乘法的脈沖響應(yīng)模型辨識ninput=2;lv=10;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-4:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為: 解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸

6、出與預(yù)測誤差曲線:num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0;Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/輸出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);%基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=1;plotopt=2;theta,yr

7、es=mlr(xreg,yreg,ninput,plotopt);%脈沖響應(yīng)模型轉(zhuǎn)換為階躍響應(yīng)模型theta=scal(theta,mx,stdx);nout=1;delt=1;model=imp2step(delt,nout,theta);plotstep(model);結(jié)果如圖所示:8-12:考慮如下的雙輸入雙輸出純時延對象,其傳遞函數(shù)距陣為:解:MATLAB程序如下:%將傳遞函數(shù)模型轉(zhuǎn)換為階躍響應(yīng)模型g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g

8、22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;tfinal=90;model = tfd2step(tfinal, delt, ny, g11, g12,g21,g22); %進行模型預(yù)測控制器設(shè)計 plant=model; %預(yù)測時域長度為6 p=6;m=2; ywt=;uwt=1 1; %設(shè)置輸入約束和參考軌跡等控制器參數(shù) r=1 1; tend=30;%仿真時間為30 ulim=-0.1 -0.1 0.5 0.5 0.1 100;ylim=;y,u,ym=cmpc(plant,model,ywt,uwt,m,p,tend,r,ulim,ylim)

9、;plotall(y,u,delt)閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖所示:8-15:設(shè)系統(tǒng)的傳遞函數(shù)距陣為:解:MATLAB程序如下:g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;imod = tfd2mod(delt, ny, g11, g12,g21,g22);pmod=imod; p=6;m=2; ywt=;uwt=1 1; tend=30; r=0 1;

10、ulim=-inf -0.15 inf inf 0.1 100;ylim=;y,u,ym=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖所示:在添加對輸出變量的約束后,再利用以下程序?qū)ο到y(tǒng)進行模型預(yù)測控制器的設(shè)計,得到閉環(huán)控制系統(tǒng)輸出響應(yīng)和控制量變化曲線如圖:ulim=-inf -0.15 inf inf 0.1 100;ylim=0 0 inf inf;y,u,ym=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u

11、,delt)8-16:考慮有如下傳遞函數(shù)距陣的多變量系統(tǒng)的狀態(tài)空間模型預(yù)測控制器設(shè)計問題 解:MATLAB程序如下:%在進行模型預(yù)測控制器設(shè)計之前,首先將系統(tǒng)模型轉(zhuǎn)換為狀態(tài)空間形式T=2;g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);umod = tfd2mod(T,2, g11, g12,g21,g22);%定義擾動模型g13=poly2tfd(3.8,14.9 1,0,8)g23=po

12、ly2tfd(4.9,13.2 1,0,3)dmod=tfd2mod(T,2,g13,g23);%建立疊加了擾動的混合系統(tǒng)模型pmod=addumd(umod,dmod);%考慮精確建模的情況imod=pmod;ywt=;uwt=;%預(yù)測時域和控制時域均為5P=5;M=P;Ks=smpccon(imod,ywt,uwt,M,P); tend=30; r=0 1; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)得到閉環(huán)控制系統(tǒng)輸出響應(yīng)和控制量變化曲線如圖:增加預(yù)測時域長度,同時減少控制時域長度后,再利用以下程序可得閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖

13、所示:P=10;M=3;Ks=smpccon(imod,ywt,uwt,M,P);y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)進一步改變控制時域長度,采用控制量分塊的形式,即再利用以下程序可得到的閉環(huán)系統(tǒng)的輸出和控制量變化曲線M=2 3 4;Ks=smpccon(imod,ywt,uwt,M,P);y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)增加輸入控制量的加權(quán)距陣系數(shù),即再利用以下程序可得模型預(yù)測閉環(huán)控制系統(tǒng)輸出控制量變化曲線uwt=1 1;P=5;M=P;Ks=smpccon(imod,yw

14、t,uwt,M,P); tend=30; r=1 0; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)再利用以下程序?qū)⑤敵鲈O(shè)定值均設(shè)為0,繪制閉環(huán)系統(tǒng)的輸出和控制量變化曲線,如圖所示: ulim=;Kest=;R=; z=; v=; w=1;y,u=smpcsim(pmod,imod,Ks,tend,r,ulim,Kest,z,v,w);plotall(y,u,T)利用以下程序采用估計器進一步改善系統(tǒng)性能,對應(yīng)的系統(tǒng)輸出和控制量變化曲線如圖所示Kest,newmod=smpcest(imod,15,15,3 3);Ks=smpccon(newmo

15、d,ywt,uwt,M,P); y,u=smpcsim(pmod,newmod,Ks,tend,r,ulim,Kest,z,v,w);plotall(y,u,T)8-17:考慮如下的多變量系統(tǒng)解:MATLAB程序如下:g11=poly2tfd(12.8,16.7 0,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=1;ny=2;imod = tfd2mod(delt,ny, g11, g12,g21,g22);gw1=poly2t

16、fd(3.8,14.9 1,0,8)gw2=poly2tfd(4.9,13.2 1,0,3)pmod=addumd(imod,tfd2mod(delt,ny,gw1,gw2);%設(shè)計模型預(yù)測控制器P=6;M=2;ywt=;uwt=1 1;Ks=smpccon(imod,ywt,uwt,M,P);r=;ulim=;z=;v=;w=1;wu=;tend=30;y3,u3=smpcsim(pmod,imod,Ks,tend,r,ulim,z,v,w,wu);%設(shè)計狀態(tài)估計器Kest1=smpcest(pmod,1,0.001*eye(ny);Ks1=smpccon(pmod,ywt,uwt,M,P)

17、;y1,u1=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z,v,w,wu);plotall(y1,u1,delt)采用了狀態(tài)估計器的閉環(huán)系統(tǒng)輸出和控制量變化曲線如圖所示:下面進行簡化的狀態(tài)估計器設(shè)計tau=10 10;signoise=3 3;Kest2,newmod=smpcest(imod,tau,signoise);Ks2=smpccon(newmod,ywt,uwt,M,P);y2,u2=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z,v,w,wu);plotall(y2,u2,delt)采用簡化的狀態(tài)估計器的閉

18、環(huán)系統(tǒng)輸出和控制量曲線如圖所示:專業(yè):控制理論與控制工程學(xué)號:062030040姓名:陳孝凱程序調(diào)試8-1:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為:解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:% 將多項式的傳遞函數(shù)模型轉(zhuǎn)換為MPC傳遞函數(shù)模型num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x,t=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,std

19、x=autosc(x);mx=0;Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);% 基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=1;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-2:考慮一個雙輸入單輸出的對象,其傳遞函數(shù)矩陣為:采樣時間為7秒解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:num1=5.72;den1=60 1;g1=poly2tfd(num1,den1

20、,0,14);num2=1.52;den2=25 1;g2 = poly2tfd(num2,den2,0,15);%將MPC傳遞函數(shù)模型轉(zhuǎn)換為MPC狀態(tài)空間模型mod=tfd2mod(7,1,g1,g2);%將MPC狀態(tài)空間模型轉(zhuǎn)換為通用狀態(tài)空間模型A,B,C,D=mod2ss(mod);%將通用狀態(tài)空間模型轉(zhuǎn)換LTI對象的 狀態(tài)空間模型sys=ss(A,B,C,D);h=tf(sys);% 獲得脈沖信號xu,t=gensig('pulse',8,10,0.1);x=u u; % 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 輸

21、入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0 0;Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);% 基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=2;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-3:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為: 解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線% 將多項式的傳遞函數(shù)模型轉(zhuǎn)換為MPC傳遞函數(shù)模型nu

22、m=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 生成用于線性回歸計算的輸入/輸出數(shù)據(jù)矩陣n=30;xreg,yreg = wrtreg(Sx,y,n);% 基于部分最小二乘法的脈沖響應(yīng)模型辨識ninput=2;lv=10;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-4:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為:

23、 解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0;Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/輸出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);%基于多變量最

24、小二乘法的脈沖響應(yīng)模型辨識ninput=1;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);%脈沖響應(yīng)模型轉(zhuǎn)換為階躍響應(yīng)模型theta=scal(theta,mx,stdx);nout=1;delt=1;model=imp2step(delt,nout,theta);plotstep(model);結(jié)果如圖所示:8-12:考慮如下的雙輸入雙輸出純時延對象,其傳遞函數(shù)距陣為:解:MATLAB程序如下:%將傳遞函數(shù)模型轉(zhuǎn)換為階躍響應(yīng)模型g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1

25、,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;tfinal=90;model = tfd2step(tfinal, delt, ny, g11, g12,g21,g22); %進行模型預(yù)測控制器設(shè)計 plant=model; %預(yù)測時域長度為6 p=6;m=2; ywt=;uwt=1 1; %設(shè)置輸入約束和參考軌跡等控制器參數(shù) r=1 1; tend=30;%仿真時間為30 ulim=-0.1 -0.1 0.5 0.5 0.1 100;ylim=;y,u,ym=cmpc(p

26、lant,model,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖所示:8-15:設(shè)系統(tǒng)的傳遞函數(shù)距陣為:解:MATLAB程序如下:g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;imod = tfd2mod(delt, ny, g11, g12,g21,g22);pmod=imod;

27、 p=6;m=2; ywt=;uwt=1 1; tend=30; r=0 1; ulim=-inf -0.15 inf inf 0.1 100;ylim=;y,u,ym=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖所示:在添加對輸出變量的約束后,再利用以下程序?qū)ο到y(tǒng)進行模型預(yù)測控制器的設(shè)計,得到閉環(huán)控制系統(tǒng)輸出響應(yīng)和控制量變化曲線如圖:ulim=-inf -0.15 inf inf 0.1 100;ylim=0 0 inf inf;y,u,ym=scmpc(pmod,imod,y

28、wt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)8-16:考慮有如下傳遞函數(shù)距陣的多變量系統(tǒng)的狀態(tài)空間模型預(yù)測控制器設(shè)計問題 解:MATLAB程序如下:%在進行模型預(yù)測控制器設(shè)計之前,首先將系統(tǒng)模型轉(zhuǎn)換為狀態(tài)空間形式T=2;g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);umod = tfd2mod(T,2, g11, g12,g21,g22);%

29、定義擾動模型g13=poly2tfd(3.8,14.9 1,0,8)g23=poly2tfd(4.9,13.2 1,0,3)dmod=tfd2mod(T,2,g13,g23);%建立疊加了擾動的混合系統(tǒng)模型pmod=addumd(umod,dmod);%考慮精確建模的情況imod=pmod;ywt=;uwt=;%預(yù)測時域和控制時域均為5P=5;M=P;Ks=smpccon(imod,ywt,uwt,M,P); tend=30; r=0 1; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)得到閉環(huán)控制系統(tǒng)輸出響應(yīng)和控制量變化曲線如圖:增加預(yù)測時域長

30、度,同時減少控制時域長度后,再利用以下程序可得閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖所示:P=10;M=3;Ks=smpccon(imod,ywt,uwt,M,P);y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)進一步改變控制時域長度,采用控制量分塊的形式,即再利用以下程序可得到的閉環(huán)系統(tǒng)的輸出和控制量變化曲線M=2 3 4;Ks=smpccon(imod,ywt,uwt,M,P);y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)增加輸入控制量的加權(quán)距陣系數(shù),即再利用以下程序可得模型預(yù)測閉環(huán)控制系統(tǒng)輸出控

31、制量變化曲線uwt=1 1;P=5;M=P;Ks=smpccon(imod,ywt,uwt,M,P); tend=30; r=1 0; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)再利用以下程序?qū)⑤敵鲈O(shè)定值均設(shè)為0,繪制閉環(huán)系統(tǒng)的輸出和控制量變化曲線,如圖所示: ulim=;Kest=;R=; z=; v=; w=1;y,u=smpcsim(pmod,imod,Ks,tend,r,ulim,Kest,z,v,w);plotall(y,u,T)利用以下程序采用估計器進一步改善系統(tǒng)性能,對應(yīng)的系統(tǒng)輸出和控制量變化曲線如圖所示Kest,newmod=

32、smpcest(imod,15,15,3 3);Ks=smpccon(newmod,ywt,uwt,M,P); y,u=smpcsim(pmod,newmod,Ks,tend,r,ulim,Kest,z,v,w);plotall(y,u,T)8-17:考慮如下的多變量系統(tǒng)解:MATLAB程序如下:g11=poly2tfd(12.8,16.7 0,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=1;ny=2;imod = tfd2m

33、od(delt,ny, g11, g12,g21,g22);gw1=poly2tfd(3.8,14.9 1,0,8)gw2=poly2tfd(4.9,13.2 1,0,3)pmod=addumd(imod,tfd2mod(delt,ny,gw1,gw2);%設(shè)計模型預(yù)測控制器P=6;M=2;ywt=;uwt=1 1;Ks=smpccon(imod,ywt,uwt,M,P);r=;ulim=;z=;v=;w=1;wu=;tend=30;y3,u3=smpcsim(pmod,imod,Ks,tend,r,ulim,z,v,w,wu);%設(shè)計狀態(tài)估計器Kest1=smpcest(pmod,1,0.0

34、01*eye(ny);Ks1=smpccon(pmod,ywt,uwt,M,P);y1,u1=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z,v,w,wu);plotall(y1,u1,delt)采用了狀態(tài)估計器的閉環(huán)系統(tǒng)輸出和控制量變化曲線如圖所示:下面進行簡化的狀態(tài)估計器設(shè)計tau=10 10;signoise=3 3;Kest2,newmod=smpcest(imod,tau,signoise);Ks2=smpccon(newmod,ywt,uwt,M,P);y2,u2=smpcsim(pmod,pmod,Ks1,tend,r,ulim,Kest1,z

35、,v,w,wu);plotall(y2,u2,delt)采用簡化的狀態(tài)估計器的閉環(huán)系統(tǒng)輸出和控制量曲線如圖所示:專業(yè):控制理論與控制工程學(xué)號:062030039姓名:曹景運程序調(diào)試8-1:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為:解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:% 將多項式的傳遞函數(shù)模型轉(zhuǎn)換為MPC傳遞函數(shù)模型num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,

36、x,t=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0;Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);% 基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=1;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-2:考慮一個雙輸入單輸出的對象,其傳遞函數(shù)矩陣為:采樣時間為7秒解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:n

37、um1=5.72;den1=60 1;g1=poly2tfd(num1,den1,0,14);num2=1.52;den2=25 1;g2 = poly2tfd(num2,den2,0,15);%將MPC傳遞函數(shù)模型轉(zhuǎn)換為MPC狀態(tài)空間模型mod=tfd2mod(7,1,g1,g2);%將MPC狀態(tài)空間模型轉(zhuǎn)換為通用狀態(tài)空間模型A,B,C,D=mod2ss(mod);%將通用狀態(tài)空間模型轉(zhuǎn)換LTI對象的 狀態(tài)空間模型sys=ss(A,B,C,D);h=tf(sys);% 獲得脈沖信號xu,t=gensig('pulse',8,10,0.1);x=u u; % 求解LTI對象的單

38、位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0 0;Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/出數(shù)據(jù)矩陣n=35;xreg,yreg = wrtreg(Sx,y,n);% 基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=2;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);結(jié)果如圖所示:8-3:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為: 解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)

39、模型預(yù)測輸出與預(yù)測誤差曲線% 將多項式的傳遞函數(shù)模型轉(zhuǎn)換為MPC傳遞函數(shù)模型num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 生成用于線性回歸計算的輸入/輸出數(shù)據(jù)矩陣n=30;xreg,yreg = wrtreg(Sx,y,n);% 基于部分最小二乘法的脈沖響應(yīng)模型辨識ninput=2;lv=10;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,p

40、lotopt);結(jié)果如圖所示:8-4:考慮一個單輸入單輸出的對象,其傳遞函數(shù)為: 解:采用下面的MATLAB程序?qū)υ搶ο筮M行脈沖響應(yīng)模型辨識,脈沖響應(yīng)模型預(yù)測輸出與預(yù)測誤差曲線:num=1 1;den=1 3 6;h=tf(num,den);% 獲得脈沖信號xu,t=gensig('pulse',2,10,0.1);x=u;% 求解LTI對象的單位脈沖響應(yīng)yt=0:0.1:10;y,x1,t1=lsim(h,x,t);% 輸入脈沖信號x的歸一化處理ax,mx,stdx=autosc(x);mx=0;Sx=scal(x,mx,stdx);% 生成用于線性回歸計算的輸入/輸出數(shù)據(jù)矩

41、陣n=35;xreg,yreg = wrtreg(Sx,y,n);%基于多變量最小二乘法的脈沖響應(yīng)模型辨識ninput=1;plotopt=2;theta,yres=mlr(xreg,yreg,ninput,plotopt);%脈沖響應(yīng)模型轉(zhuǎn)換為階躍響應(yīng)模型theta=scal(theta,mx,stdx);nout=1;delt=1;model=imp2step(delt,nout,theta);plotstep(model);結(jié)果如圖所示:8-12:考慮如下的雙輸入雙輸出純時延對象,其傳遞函數(shù)距陣為:解:MATLAB程序如下:%將傳遞函數(shù)模型轉(zhuǎn)換為階躍響應(yīng)模型g11=poly2tfd(12

42、.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;tfinal=90;model = tfd2step(tfinal, delt, ny, g11, g12,g21,g22); %進行模型預(yù)測控制器設(shè)計 plant=model; %預(yù)測時域長度為6 p=6;m=2; ywt=;uwt=1 1; %設(shè)置輸入約束和參考軌跡等控制器參數(shù) r=1 1; tend=30;%仿真時間為30 ulim=-0.1

43、-0.1 0.5 0.5 0.1 100;ylim=;y,u,ym=cmpc(plant,model,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖所示:8-15:設(shè)系統(tǒng)的傳遞函數(shù)距陣為:解:MATLAB程序如下:g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3);delt=3;ny=2;imod = tfd2mo

44、d(delt, ny, g11, g12,g21,g22);pmod=imod; p=6;m=2; ywt=;uwt=1 1; tend=30; r=0 1; ulim=-inf -0.15 inf inf 0.1 100;ylim=;y,u,ym=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)閉環(huán)系統(tǒng)的輸出和控制量變化曲線如圖所示:在添加對輸出變量的約束后,再利用以下程序?qū)ο到y(tǒng)進行模型預(yù)測控制器的設(shè)計,得到閉環(huán)控制系統(tǒng)輸出響應(yīng)和控制量變化曲線如圖:ulim=-inf -0.15 inf inf 0.1 100;y

45、lim=0 0 inf inf;y,u,ym=scmpc(pmod,imod,ywt,uwt,m,p,tend,r,ulim,ylim);plotall(y,u,delt)8-16:考慮有如下傳遞函數(shù)距陣的多變量系統(tǒng)的狀態(tài)空間模型預(yù)測控制器設(shè)計問題 解:MATLAB程序如下:%在進行模型預(yù)測控制器設(shè)計之前,首先將系統(tǒng)模型轉(zhuǎn)換為狀態(tài)空間形式T=2;g11=poly2tfd(12.8,16.7 1,0,1);g12 = poly2tfd(6.6,10.9 1,0,7);g21 = poly2tfd(-18.9,21.0 1,0,3);g22 = poly2tfd(-19.4,14.4 1,0,3)

46、;umod = tfd2mod(T,2, g11, g12,g21,g22);%定義擾動模型g13=poly2tfd(3.8,14.9 1,0,8)g23=poly2tfd(4.9,13.2 1,0,3)dmod=tfd2mod(T,2,g13,g23);%建立疊加了擾動的混合系統(tǒng)模型pmod=addumd(umod,dmod);%考慮精確建模的情況imod=pmod;ywt=;uwt=;%預(yù)測時域和控制時域均為5P=5;M=P;Ks=smpccon(imod,ywt,uwt,M,P); tend=30; r=0 1; y,u=smpcsim(pmod,imod,Ks,tend,r);plotall(y,u,T)得到閉環(huán)控制系統(tǒng)輸出響應(yīng)和控制量變化曲線如圖:增加預(yù)測時域長度,同時減少控制時域長度后,再利用以下程序可得閉環(huán)系統(tǒng)的輸出和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論