【正文】
文程序調(diào)試中,在MATLAB的工作空間查看u的取值可以知道=(這是針對(duì)本文開(kāi)水閥的開(kāi)度調(diào)整而言的),如果要改變開(kāi)水閥的開(kāi)度,可以先運(yùn)行上文所述的程序得到。為了快速得到結(jié)果,可以在程序中設(shè)置斷點(diǎn),如果tsss小于9,則程序提前結(jié)束循環(huán),在k小于10時(shí),使u取10000,在yout達(dá)到y(tǒng)ss(目標(biāo)水位)時(shí)則u取。有上述思路編程(附錄4),得到基于自適應(yīng)遺傳算法整定的快速PID控制參數(shù)值下:其仿真結(jié)果如下:圖310 基于自適應(yīng)遺傳算法的PID控制算法快速仿真曲線根據(jù)圖310控制曲線及程序運(yùn)行工作空間相關(guān)數(shù)據(jù)編寫(xiě)程序,可以得到表34的各個(gè)性能指標(biāo):表34 基于自適應(yīng)遺傳算法的改進(jìn)快速PID整定控制算法仿真控制性能指標(biāo)性能指標(biāo)數(shù)據(jù)最大液位高度ymax(mm)超調(diào)量(%)峰值時(shí)間tp(s)上升時(shí)間tr(s)穩(wěn)定時(shí)間ts(s)穩(wěn)態(tài)誤差(mm)0比較表表3表34各個(gè)性能指標(biāo),我們可以得到以下結(jié)論:基于自適應(yīng)遺傳算法的改進(jìn)快速PID控制算法得到的性能指標(biāo)全面優(yōu)于自適應(yīng)遺傳算法整定法得到的性能指標(biāo)。由表34可知,基于自適應(yīng)遺傳算法的改進(jìn)快速PID控制算法的PID控制已經(jīng)達(dá)到控制要求,穩(wěn)定時(shí)間比自適應(yīng)遺傳算法小了3秒,這是該算法的優(yōu)勢(shì)所在,另外超調(diào)量也小了很多。 本章小結(jié)本章先簡(jiǎn)介了PID控制原理;再介紹ZN整定法確定Kp、Ki、Kd三個(gè)參數(shù);然后詳細(xì)介紹了基于ZN分離積分式PID控制理論及其應(yīng)用于三容水箱的仿真;接著詳細(xì)介紹了基于二進(jìn)制編碼遺傳算法PID整定原理及其應(yīng)用于三容水箱的仿真,并且比較了他們優(yōu)劣,得到一結(jié)論:本文研究的基于自適應(yīng)快速遺傳算法的PID控制算法,提高了水箱系統(tǒng)的控制性能,該算法具有一定的實(shí)用性及優(yōu)越性。美中不足的是,由于時(shí)間倉(cāng)促,本文中并沒(méi)有對(duì)基于自適應(yīng)在線遺傳算法整定的PID控制作深入研究。如果能在線進(jìn)行參數(shù)整定,那么一定可以取得更好的控制效果。第四章 總結(jié) 結(jié)論本論文研究了基于自適應(yīng)分層遺傳算法的PID控制算法,取得了良好的仿真控制效果。在進(jìn)行系統(tǒng)建模和控制的過(guò)程中,對(duì)單容水箱系統(tǒng)的對(duì)象特性進(jìn)行簡(jiǎn)單分析。由于時(shí)間的限制,系統(tǒng)的建模和控制過(guò)程中不可避免的會(huì)存在一些問(wèn)題,如實(shí)驗(yàn)?zāi)P偷木葐?wèn)題,控制參數(shù)優(yōu)化的精度問(wèn)題以及控制過(guò)程中的離線/在線問(wèn)題等。在三容水箱系統(tǒng)中應(yīng)用基于自適應(yīng)分層遺傳PID與基于自適應(yīng)遺傳算法快速控制算法,與應(yīng)用基于ZN整定法的分離式PID控制算法相比,基于自適應(yīng)遺傳算法快速控制算法最為明顯地提高了控制系統(tǒng)的性能,該改進(jìn)算法具有一定的優(yōu)越性及工程應(yīng)用價(jià)值。伴隨著過(guò)程控制的日益智能化和廣泛化,拋磚引玉,謹(jǐn)希望本文能給后者提供一個(gè)借簽。 后續(xù)工作經(jīng)過(guò)近半年的努力,本文所進(jìn)行的研究工作已經(jīng)達(dá)到預(yù)期目標(biāo)。但是,在以下方面仍需進(jìn)一步完善。由于MATLAB是解釋性語(yǔ)言,這類語(yǔ)言對(duì)命令是邊解釋邊執(zhí)行的,因而執(zhí)行速度比較慢,特別是執(zhí)行循環(huán)計(jì)算時(shí)。如果執(zhí)行多次嵌套,則其執(zhí)行速度會(huì)更慢,這會(huì)使整個(gè)程序的運(yùn)行效率很低,因而MATLAB是不太適合做復(fù)雜的數(shù)值計(jì)算,而且它對(duì)底層硬件的控制能力較差,不適于半實(shí)物仿真和偏工程化的產(chǎn)品。然而MATLAB所擁有的“無(wú)所不能”的矩陣處理功能,“豐富多彩”的圖畫(huà)功能卻是其他程序設(shè)計(jì)語(yǔ)言所不易擁有的。于此同時(shí),其他的程序設(shè)計(jì)語(yǔ)言,如C、C++等是編譯性語(yǔ)言,它們一經(jīng)編譯通過(guò)后,以二進(jìn)制代碼的方式執(zhí)行,因而執(zhí)行速度非???,在進(jìn)行多層次的嵌套循環(huán)運(yùn)算時(shí),就更能體現(xiàn)他們的優(yōu)勢(shì)。因此通過(guò)他們有機(jī)的結(jié)合起來(lái),就能很好地各自發(fā)揮他們的優(yōu)點(diǎn)。綜上所述,后續(xù)工作是研究MATLAB的外部程序接口參考文獻(xiàn)[1]楊叔子,楊克沖.機(jī)械工程控制基礎(chǔ).武漢:華中科技大學(xué)出版社,2002:1203[2]侯燕.三容水箱液位控制系統(tǒng)的研究:[碩士學(xué)位論文].武漢:華中科技大學(xué),2005:418[3]李偉.三容水箱液位控制系統(tǒng).黑龍江科技學(xué)院學(xué)報(bào),2004,14(3):160164[4]劉金琨.先進(jìn)PID控制MATLAB仿真(第2版).北京:電子工業(yè)出版社,2007:10—241[5]:[6]廖曉鐘,:北京理工大學(xué)出版社,2005:5193[7]:[碩士學(xué)位論文].長(zhǎng)沙:中南大學(xué),2009:51[8]虞安軍,吳海珍,2006,23(11):224227[9]趙文舉,馬孝義,劉哲,2007,19(22):51375140[10]辛菁,劉丁,杜金華,,33(4):481485[11]基于Matlba/Simulik的三水箱系統(tǒng)建模與動(dòng)態(tài)仿真,自動(dòng)化理論、技術(shù)與應(yīng)用,第11卷,山東大學(xué)出版社,p746~750,[12]Han, Guangxin, Gao, Xingquan。 Chen, structure PID control of threetank system. Nanjing Hangkong Hangtian Daxue Xuebao/Journal of Nanjing University of Aeronautics and ,38():3841.致謝在論文即將完成之際,我由衷感謝我的導(dǎo)師韓昆導(dǎo)師。本論文工作是在韓老師的悉心指導(dǎo)下完成的。從課題的提出到數(shù)學(xué)模型建立,以及論文的撰寫(xiě)、修改直至定稿,導(dǎo)師都給予我細(xì)致的指導(dǎo)。導(dǎo)師淵博的知識(shí)、務(wù)實(shí)的精神、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,都給我留下了深刻的印象,更是我努力學(xué)習(xí)的榜樣。尤其是導(dǎo)師對(duì)待研究工作的態(tài)度及分析問(wèn)題的思路,對(duì)我產(chǎn)生了很大影響,并可以不斷指導(dǎo)我日后的學(xué)習(xí)和工作。半年來(lái),韓老師不僅在學(xué)業(yè)上悉心指導(dǎo),在生活上、思想上也給了我無(wú)微不至的關(guān)懷。在此,謹(jǐn)向?qū)燀n老師致以崇高的敬意和誠(chéng)摯的感謝。最后,我要深深感謝我的父母和同學(xué),在我的學(xué)習(xí)和生活中,他們給予了我莫大的關(guān)心和支持,使我能順利地完成學(xué)業(yè)。附錄1 常規(guī)遺傳算法PID整定程序clear all。close all。global rin yout timef tsss uG=100。Size=30。CodeL=10。db=2。MinX(1)=142*ones(1)。MaxX(1)=380*ones(1)。MinX(2)=10*ones(1)。MaxX(2)=29*ones(1)。MinX(3)=474*ones(1)。MaxX(3)=1266*ones(1)。time=1:1:G。E=round(rand(Size,3*CodeL))。BSJ=0。for kg=1:1:G for s=1:1:Size m=E(s,:)。 y1=0。y2=0。y3=0。 m1=m(1:1:CodeL)。 for i=1:1:CodeL y1=y1+m1(i)*2^(i1)。 end Kpid(s,1)=(MaxX(1)MinX(1))*y1/1023+MinX(1) 。 m2=m(CodeL+1:1:2*CodeL)。 for i=1:1:CodeL y2=y2+m2(i)*2^(i1)。 end Kpid(s,2)=(MaxX(2)MinX(2))*y2/1023+MinX(2) 。 m3=m(2*CodeL+1:1:3*CodeL)。 for i=1:1:CodeL y3=y3+m3(i)*2^(i1)。 end Kpid(s,3)=(MaxX(3)MinX(3))*y3/1023+MinX(3)。 %********step1:Evaluate BestJ *********** Kpidi=Kpid(s,:)。 [Kpidi,BSJ]=chap5_3f(Kpidi,BSJ)。 BSJi(s)=BSJ。 end [OderJi,IndexJi]=sort(BSJi)。 BestJ(kg)=OderJi(1)。 Ji=BSJi+1e10。%Avoiding deviding zero fi=1./Ji。 [Oderfi,Indexfi]=sort(fi)。 %Arranging fi small to big Bestfi=Oderfi(Size)。 BestS=E(Indexfi(Size),:)。 %Let BestS=E(m),m is the Indexfi belong to max(fi) kg%********step2: Select and Reprodut operationg********** fi_sum=sum(fi)。 fi_Size=(Oderfi/fi_sum)*Size。 fi_S=floor(fi_Size)。 % Selecting Bigger fi value r=Sizesum(fi_S)。 Rest=fi_Sizefi_S。 [RestValue,Index]=sort(Rest)。 for i=Size:1:Sizer+1 fi_S(Index(i))=fi_S(Index(i))+1。 end k=1。for i=1:1:Size for j=1:1:fi_S(i)%Select and Reproduce TempE(k,:)=E(Indexfi(i),:)。 k=k+1。%k is used to reproduce endend%**********Step3:Crossover operationg*************pc=。n=ceil(20*rand)。 % n is used to be sure where the crossover operation startsfor s=1:1:Size m=TempE(s,:)。 y1=0。y2=0。y3=0。 m1=m(1:1:CodeL)。 for i=1:1:CodeL y1=y1+m1(i)*2^(i1)。 end Kpid1(s,1)=(MaxX(1)MinX(1))*y1/1023+MinX(1) 。 m2=m(CodeL+1:1:2*CodeL)。 for i=1:1:CodeL y2=y2+m2(i)*2^(i1)。 end Kpid1(s,2)=(MaxX(2)MinX(2))*y2/1023+MinX(2) 。 m3=m(2*CodeL+1:1:3*CodeL)。 for i=1:1:CodeL y3=y3+m3(i)*2^(i1)。 end Kpid1(s,3)=(MaxX(3)MinX(3))*y3/1023+MinX(3)。 Kpidi=Kpid1(s,:)。 [Kpidi,BSJ]=chap5_3f(Kpidi,BSJ)。 BSJJi(s)=BSJ。end JJi=BSJJi+1e10。%Avoiding deviding zero ffi=1./JJi。for i=1:2:(Size1) temp=rand。 if pctemp for j=n:1:25 TempE(i,j)=TempE(i+1,j)。 TempE(i+1,j)=TempE(i,j)。 end endendTempE(Size,:)=BestS。E=TempE。%*****************Step 4: Mutationg operation*******************pm=。 for i=1:1:Size for j=1:1:3*CodeL temp=rand。 if pmtemp %Mutation Condition if TempE(i,j)==0 TempE(i,j)=1。 else TempE(i,j)=0。 end end endendTempE(Size,:)=BestS。E=TempE。%***************************