2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于單純形法的PID參數(shù)優(yōu)化設計</p><p><b>  摘要</b></p><p>  PID參數(shù)整定是自動控制領域研究的重要內(nèi)容,PID參數(shù)的最優(yōu)性決定了控制的穩(wěn)定性和快速性,也可保證系統(tǒng)的可靠性。傳統(tǒng)的PID參數(shù)多采用試驗加試湊的方式由人工進行優(yōu)化,往往費時并且難以滿足控制的實時要求。為了解決PID參數(shù)的優(yōu)化問題,采用單純形法對PID

2、參數(shù)尋優(yōu),以獲得滿意的控制效果。</p><p>  本文介紹了單純形法的基本原理,并針對單純形法在PID參數(shù)尋優(yōu)中存在的問題進行了分析,并對其進行了實驗仿真。結(jié)果表明,用單純形法整定PID參數(shù),可以提高優(yōu)化性能,對控制系統(tǒng)具有較好的控制精度、動態(tài)性能。</p><p>  關鍵詞:PID控制器 單純形法 PID整定</p><p><b>  一、綜述&

3、lt;/b></p><p><b>  1.1選題背景</b></p><p>  PID調(diào)節(jié)器是最早發(fā)展起來的控制策略之一,因為它所涉及的設計算法和控制結(jié)構(gòu)都是簡單的,并且十分適用于工程應用背景,此外PID控制方案并不要求精確的受控對象的數(shù)學模型,且采用PID控制的控制效果一般是比較令人滿意的,所以在工業(yè)實際應用中,PID調(diào)節(jié)器是應用最為廣泛的一種控制策略,

4、也是歷史最久、生命力最強的基本控制方式。調(diào)查結(jié)果表明在當今使用的控制方式中,PID型占84.5%,優(yōu)化PID型占6.8%,現(xiàn)代控制型占有1.5%,手動控制型6.6%,人工智能(AI)型占0. 6%。如果把PID型和優(yōu)化PID型二者加起來則占90%以上,這說明PID控制方式占絕大多數(shù),如果把手動控制型再與上述兩種加在一起,則占97. 5%,這說明古典控制占絕大多數(shù)。就連科學技術高度發(fā)達的日本,PID控制的使用率也高達84.%。</p

5、><p>  這是由于理論分析及實際運行經(jīng)驗已經(jīng)證明了PID調(diào)節(jié)器對于相當多的工業(yè)過程能夠起到較為滿足的控制效果。它結(jié)構(gòu)簡單、適用面廣、魯棒性強、參數(shù)易于調(diào)整、在實際中容易被理解和實現(xiàn)、在長期應用中已積累了豐富的經(jīng)驗。特別在工業(yè)過程中,由于控制對象的精確數(shù)學模型難以建立,系統(tǒng)的參數(shù)又經(jīng)常發(fā)生變化,運用現(xiàn)代控制理論分析綜合要耗費很大的代價進行模型辨識,但往往不能達到預期的效果,所以不論常規(guī)調(diào)節(jié)儀表還是數(shù)字智能儀表都廣泛

6、采用這種調(diào)節(jié)方式。正是PID控制算法具有以上多種優(yōu)點,所以這種算法仍將在現(xiàn)場控制中居于主導地位</p><p>  隨著現(xiàn)代控制理論的建立和不斷發(fā)展完善,對過程控制提出了新的方法和思路,同日寸也由于生產(chǎn)工藝不斷地改進提高,對過程控制也提出了高要求。科研人員在不斷探索新方法的同時,也對傳統(tǒng)的PID控制的改進做了大量的研究。因為PID控制有其固有的優(yōu)點,使得PID控制在今后仍會大量使用,如何進一步提高PID控制算法的

7、能力或者依據(jù)新的現(xiàn)代控制理論來設計PID控制算法是一個非常吸引人的課題??蒲腥藛T在這一領域做的工作主要有以下兩方面。</p><p> ?、?PID參數(shù)自整定。由于受控對象存在著大量不可知因素,如隨機擾動、系統(tǒng)時變、敏感誤差等,這些不可知因素的作用常會導致受控對象參數(shù)的改變。在一個PID反饋控制回路中,受控對象參數(shù)的變化就會造成原來的PID參數(shù)控制性能的降低,為了克服這個問題人們提出了PID參數(shù)自整定,也就是隨著

8、受控對象的變化PID調(diào)節(jié)器自我調(diào)整和重新設定PID參數(shù),科研人員根據(jù)古典控制理論和現(xiàn)代控制理論提出了許多種PID參數(shù)的在線自整定的方法。至今仍有人在這方面繼續(xù)作研究。PID參數(shù)在線自整定方法比較典型的有改進型Ziegler-Nichols臨界比例度法、基于過程模型辨識的參數(shù)自整定、基于經(jīng)驗的專家法參數(shù)自整定、模糊型PID調(diào)節(jié)器等。</p><p> ?、?PID參數(shù)優(yōu)化。PID參數(shù)優(yōu)化是指依據(jù)一定的控制目標和給定

9、的生產(chǎn)過程的模型通過理論計算得到最優(yōu)的PID參數(shù),PID參數(shù)優(yōu)化在PID控制應用之初人們就開始作了大量研究工作,已經(jīng)提出了許多種方法,如粒子群優(yōu)化算法,免疫算法,單純形法,差分進化算法,神經(jīng)網(wǎng)絡算法,遺傳算法等。 </p><p>  本文就是應用單純性算法對二階對象的PID控制器參數(shù)優(yōu)化,使系統(tǒng)進行具有更好的性能。</p><p>  1.2 PID參數(shù)優(yōu)化方法綜述</p>

10、<p>  1.2.1 Ziegler-Nichols設定方法</p><p>  Ziegler與Nichols(1942)提出了調(diào)節(jié)PID控制器的參數(shù)的經(jīng)驗公式,這一調(diào)節(jié)器可根據(jù)帶有時滯環(huán)節(jié)的一階近似模型的階躍響應或頻率響應數(shù)據(jù)來設定。假設對象模型為</p><p>  根據(jù)對象參數(shù)K、T、和可以由經(jīng)驗公式求取控制器的參數(shù)。</p><p>  1.

11、2.2臨界比例度法</p><p>  當已系統(tǒng)的臨界比例增益和振蕩周期時,也可以用經(jīng)驗整定公式來確定PID控制器的參數(shù),例如:</p><p>  以上兩種傳統(tǒng)方法都是根據(jù)大量的實驗計算或?qū)嶋H工程經(jīng)驗所得到的數(shù)據(jù)整理匯總所得到的公式而得來的,在實際的工程應用中有很大的弊端。</p><p>  1.2.3 單純形法</p><p>  單純

12、形是美國數(shù)學家G.B.丹齊克于1947年首先提出來的。它的理論根據(jù)是:線性規(guī)劃問題的可行域是n維向量空間Rn中的多面凸集,其最優(yōu)值如果存在必在該凸集的某頂點處達到。單純形法的基本思想是:先找出一個基本可行解,對它進行鑒別,看是否是最優(yōu)解;若不是,則按照一定法則轉(zhuǎn)換到另一改進的基本可行解,再鑒別;若仍不是,則再轉(zhuǎn)換,按此重復進行。因基本可行解的個數(shù)有限,故經(jīng)有限次轉(zhuǎn)換必能得出問題的最優(yōu)解。如果問題無最優(yōu)解也可用此法判別。</p>

13、;<p>  單純形法具有初值敏感性。在初始條件選擇不當?shù)那闆r下,單純形法無法尋找到合適的參數(shù),控制目標無法滿足要求。同時單純形法難以解決多值函數(shù)最優(yōu)化問題。在多參數(shù)尋優(yōu)(如串級系統(tǒng))問題中,容易造成尋優(yōu)失敗或時間過長。</p><p>  1.2.4 粒子群優(yōu)化算法</p><p>  粒子群優(yōu)化(Particle Swarm Optimization - PSO) 算法是

14、近年來發(fā)展起來的一種新的進化算法( Evolutionary Algorithm - EA) 。PSO 算法屬于進化算法的一種,和遺傳算法相似,它也是從隨機解出發(fā),通過迭代尋找最優(yōu)解,它也是通過適應度來評價解的品質(zhì)。但是它比遺傳算法規(guī)則更為簡單,它沒有遺傳算法的“交叉”(Crossover) 和“變異”(Mutation) 操作。它通過追隨當前搜索到的最優(yōu)值來尋找全局最優(yōu)。</p><p>  1.2.5 差分進

15、化算法</p><p>  差分進化(DE)算法是一種采用浮點矢量編碼的在連續(xù)空間中進行隨機搜索的優(yōu)化算法。在差分進化算法中,首先由父代個體間的差分矢量構(gòu)成變異算子;接著按一定的概率,父代個體與變異個體之間進行交叉操作,生成一個試驗個體;然后在父代個體和試驗個體之間根據(jù)適應度的大小進行選擇操作,適應度大的保存到下一代群體中去。</p><p>  1.2.6 神經(jīng)網(wǎng)絡法</p>

16、<p>  常規(guī)的PID參數(shù)優(yōu)化方法中,直接基于目標函數(shù)的單純形法等優(yōu)化方法是最常用的方法,這是因為在工業(yè)控制中很多被控對象的模型難以用精確的數(shù)學模型描述,即使在某一工況下,被控對象可以用數(shù)學模型描述,但在運行過程中,對象的特性一旦發(fā)生變化,這一確定的模型便不再適用。而神經(jīng)網(wǎng)絡的引人則在一定程度上解決和改善了這一問題。在基于神經(jīng)網(wǎng)絡的PID參數(shù)優(yōu)化方法中,神經(jīng)網(wǎng)絡一般與被控對象并列,作為一個神經(jīng)網(wǎng)絡的辨識器。</p&

17、gt;<p>  在網(wǎng)絡經(jīng)過學習后,神經(jīng)網(wǎng)絡辨識器的輸出便可以很好地跟蹤被控對象的輸出。由于神經(jīng)網(wǎng)絡辨識器具有確定的結(jié)構(gòu),學習之后,其連接權(quán)及各節(jié)點的鬧值都有確定的數(shù)值。這時,該神經(jīng)網(wǎng)絡辨識器的結(jié)構(gòu)就可以作為被控對象結(jié)構(gòu)的一個近似。用神經(jīng)網(wǎng)絡辨識器輸出與輸人的傳遞函數(shù)模型來近似地代替被控對象的模型,進而用梯度下降法,擬牛頓法優(yōu)化出PID參數(shù)。</p><p>  1.3 本論文主要工作</p&

18、gt;<p>  本論文的主要工作是研究利用單純形法對二階系統(tǒng)的PID控制器參數(shù)進行優(yōu)化,并且使用Matlab對控制系統(tǒng)進行仿真。 </p><p>  首先,對單純形法進行了介紹,包括單純形的概念,單純形算法的基本原理;其次,以二階系統(tǒng)為模型,利用單純形法對其PID控制器參數(shù)進行優(yōu)化,最后利用 Matlab對優(yōu)化后控制系統(tǒng)進行仿真研究。</p><p><b&g

19、t;  二、單純形算法</b></p><p>  2.1 單純形算法簡介</p><p>  最優(yōu)化方法按照搜索機制的不同,具體可以分為兩類:一類是解析算法,一類是直接法。解析法是最優(yōu)化問題的經(jīng)典算法,但是必須求解目標函數(shù)的導數(shù)。這時,就應該放棄求梯度的方法,而采用直接法。直接法主要是在迭代過程中直接比較目標函數(shù)值的大小,再根據(jù)一定的收斂終止條件,獲得最優(yōu)解。它的基本思想及迭

20、代過程,直觀易懂,易于為工程技術人員接受,但是它并未利用目標函數(shù)的性質(zhì)及其解析性質(zhì),故收斂速度較慢。適合用于處理低維問題。</p><p>  單純形是美國數(shù)學家家G.B.丹齊克于1947年首先提出來的。它的理論根據(jù)是:線性規(guī)劃問題的可行域是n維向量空間Rn中的多面凸集,其最優(yōu)值如果存在必在該凸集的某頂點處達到。單純形法的基本過程是:先找出一個基本可行解,對它進行鑒別,看是否是最優(yōu)解;若不是,則按照一定法則轉(zhuǎn)換到

21、另一改進的基本可行解,再鑒別;若仍不是,則再轉(zhuǎn)換,按此重復進行。因基本可行解的個數(shù)有限,故經(jīng)有限次轉(zhuǎn)換必能得出問題的最優(yōu)解。如果問題無最優(yōu)解也可用此法判別。</p><p>  2.2 單純形基本思想</p><p>  單純形尋優(yōu)算法的基本思想是:對于非線性模型中的n個待估參數(shù),以n+1個頂點構(gòu)成最簡單的圖形,并對n+1個頂點的目標函數(shù)值進行比較,從結(jié)果來判斷其變化的大致趨勢,并作為下一

22、步實驗的參考,再利用一定的換點原則,使單純形想最優(yōu)點區(qū)域推進。</p><p>  從這一點來說,單純形算法也是一種實驗最優(yōu)化算法,純粹從實驗的角度來尋找最優(yōu)目標。在每次迭代時,利用已有的單純形去尋找一個函數(shù)值更小的點,如果得到這樣的一個更好的店,則用這個新點作為一個頂點構(gòu)造新的單純形。否則的話,將已有單純形縮小重復迭代。</p><p>  2.3 單純形算法流程</p>

23、<p>  Step1:選取一組初始單純形頂點以及投影系數(shù)、放大系數(shù)和收縮系數(shù)。</p><p>  Step2:計算各個頂點的目標函數(shù)值,找出目標函數(shù)最大值點和最小值點。</p><p>  Step3:計算投影中心點,根據(jù)投影系數(shù)確定投影點。</p><p>  Step4:如果,利用代替并形成一個新的單純形,返回step2。</p>&

24、lt;p>  Step5:放大單純形。令,如果,則放大成功,用代替并形成一個新的單純形,如果,則放大失敗,仍然用代替返回step2,繼續(xù)投影過程。</p><p>  Step6:收縮單純形。如果對于除外的所有點,都有以及,則用代替并對單純形縮?。?。如果仍然縮小單純形,但不改變先前的背投影點;如果,則用來代替原來的被投影點,再繼續(xù)進行投影過程;如果,則該收縮過程失敗,此時用來代替所有的,然后繼續(xù)進行投影過程

25、。</p><p>  Step7:如果定點的相對誤差滿足給定的精度要求,則停止迭代,當前單純性的形心即為最優(yōu)點。</p><p>  2.4 單純形算法的優(yōu)缺點</p><p>  單純形算法的優(yōu)點是不用求待求函數(shù)的一次倒數(shù)矩陣和海森矩陣,不用進行復雜的矩陣運算,占用內(nèi)存小,計算工作量小,對初值的要求不嚴格,對于大型復雜的函數(shù)求機制,不會出現(xiàn)收斂性能不穩(wěn)定的現(xiàn)象。

26、但是非線性規(guī)劃單純形算法也有很多的缺點,如單純形算法的迭代次數(shù)太多,收斂速度緩慢,在迭代過程中有時會出現(xiàn)單純形退化現(xiàn)象等,這些缺點嚴重影響了飛仙線性規(guī)劃單純形算法的使用。</p><p>  單純形法并沒有很好地理論性質(zhì),即使收斂,收斂也是線性的。但它具有簡單使用的有點,計算表明單純形方法十分可靠,特別低,它能處理函數(shù)值變化劇烈的函數(shù)。</p><p>  本算法上機占用內(nèi)存很少,對變量不

27、多且精度要求不高的問題此法很方便,但當變量個數(shù)多于十個以上,此法就顯得不十分有效。</p><p>  三、二階系統(tǒng)PID控制器參數(shù)整定過程</p><p>  3.1 連續(xù)對象離散化</p><p>  由于工業(yè)領域中的被控對象一般為一階或二階環(huán)節(jié),因此,在本文里我們擬定受控對象的傳遞函數(shù)為如下:</p><p>  其中采樣時間為1s。&

28、lt;/p><p>  利用零階保持器法將化成如下:</p><p>  由于,控制量與之間的差分方程在程序可以如下實現(xiàn):</p><p>  3.2 PID控制器離散化</p><p>  理想模擬PID控制器的傳遞函數(shù)為:</p><p>  采用后向差分將上式離散化,得:</p><p>  

29、增量式PID的后向差分方程為:</p><p><b>  3.3 性能指標</b></p><p>  采用如下二次型性能指標函數(shù):</p><p>  其中為常數(shù),取值范圍為。利用單純形法不斷計算目標函數(shù)值,從而得到最優(yōu)的PID控制器的參數(shù)。</p><p>  3.4 實驗結(jié)果分析</p><p

30、>  對象原階躍響應圖如下:</p><p>  在程序中PID參數(shù)初始值選擇為:kp = 1,ki = 0.8, kd = 0.8;</p><p>  通過在MATLAB中調(diào)用程序整定PID控制器參數(shù)后,系統(tǒng)的階躍響應圖如下;</p><p>  由系統(tǒng)階躍響應圖可以看出,通過整定后系統(tǒng)的靜態(tài)指標和動態(tài)指標都達到了要求,這說明采用單純形法整定PID參數(shù)是正

31、確的、可行的。</p><p>  在單純形法程序中,選擇各個頂點與單純形的中心點的函數(shù)值的差值的平方和作為誤差,誤差限,整定過程中誤差收斂曲線如下:</p><p>  從誤差收斂曲線可以看出,單純形雖然最終誤差收斂到接近于0,但是中間卻出現(xiàn)比較大的峰值變化,這說明在峰值變化出,單純形法陷入了不利的條件,這是由于單純形法對初值的敏感性所產(chǎn)生的。</p><p> 

32、 性能指標的收斂曲線如下:</p><p>  從二次型性能指標的收斂曲線可以看出,在單純形法的迭代過程中,目標函數(shù)值是一直減小的,這說明單純形法收斂速度雖然慢,但是目標函數(shù)值是在降低的,解是在向最優(yōu)解靠近的。所以用單純形法整定PID參數(shù)是可行的。</p><p><b>  四、總結(jié)</b></p><p>  PID控制器結(jié)構(gòu)簡單,容易實現(xiàn)

33、,且魯棒性好,因此廣泛應用于各種控制領域,并取得了良好的控制效果。單純形算法是比較簡單的算法之一,它過程簡單易懂,在不需要考慮目標函數(shù)值性質(zhì)的情況下就能找到問題的最優(yōu)解。本文將單純形算法和PID控制結(jié)合起來應用于二階系統(tǒng)的整定過程,利用單純形算法來整定PID控制中的三個參數(shù)(Kp,Ki,Kd),取得了滿意的效果。單純形算法算法運用于PID的參數(shù)整定,就可以克服常規(guī)PID整定方法的缺點,使要整定的參數(shù)精確收斂,從而使控制效果最優(yōu)。<

34、/p><p><b>  參考文獻</b></p><p>  [1] 張磊,于單純形法PID控制器的最優(yōu)設計[J].信息與控制2004,33(3):55-60.</p><p>  [2] 劉曉謙,王勇,穆順勇.基于單純形法的PID控制器參數(shù)優(yōu)化設計[J].2004,21(11):163-168.</p><p>  [3

35、] 李勇,段正澄,胡倫驥.基于粒子群優(yōu)化算法的液壓伺服控制系統(tǒng)PID參數(shù)優(yōu)化[D].華中科技大學.湖北武漢2007.</p><p>  [4] 周劉喜,張興華,李緯. 基于差分進化算法的PID優(yōu)化設計[D]. 南京工業(yè)大學自動化學院,江蘇南京2000.</p><p>  [5] 郭鵬,韓濮. 基于神經(jīng)網(wǎng)絡的PID參數(shù)優(yōu)化方法研究. 華北電力大學動力系保定[D],2003.</p&

36、gt;<p><b>  程序附件:</b></p><p>  clc;clear;close all;%清除變量、窗體、及工作區(qū)間</p><p>  global rin yout timef</p><p>  %*********第一步:單純形替換法變量準備及設定***********</p><p&

37、gt;  x0 = [1 0.8 0.8];%Kp,Ti,Td初始值</p><p>  l = 1e-6;%單純形棱長</p><p>  r = 1;%反射系數(shù)Gama,通常取1</p><p>  e = 2;%延伸系數(shù),通常取2</p><p>  n = 3;%n = 3表示問題為三維空間最優(yōu)點求解</p><p

38、>  c = 0.5;%收縮系數(shù),通常取0.5</p><p>  Maxstep = 1000;%迭代最大次數(shù)</p><p>  MarginErr = 5e-13;%誤差限</p><p>  Bestv = zeros(1, 3);%最優(yōu)解</p><p>  Bestf = 0;%最優(yōu)解對應的函數(shù)值</p>&l

39、t;p>  [v, f] = Initialize(x0, n, l);%調(diào)用初始化函數(shù)</p><p>  %**第二步:單純形反射,延伸,收縮,減小棱長得到最優(yōu)點****</p><p>  Deltarecord = [];%誤差記錄矩陣</p><p>  frecord = [];%函數(shù)值記錄矩陣</p><p>  for

40、 i = 1 : Maxstep</p><p>  %調(diào)用FYSJ函數(shù)求的下一次迭代所需要的單純形</p><p>  [Nextv, Nextf, Delta, Meanf] = FYSJ(v, f, r, e, c, n);</p><p>  Deltarecord = [Deltarecord Delta];%記錄誤差</p><p&g

41、t;  if (Delta < MarginErr)</p><p>  for i = 1 : 3</p><p>  Bestv(i) = sum(Nextv(:, i)) / (n + 1);</p><p><b>  end</b></p><p>  Bestf = Targetf(Bestv);<

42、;/p><p>  frecord = [frecord Bestf];%記錄函數(shù)值</p><p><b>  break;</b></p><p><b>  else</b></p><p>  v = Nextv;</p><p>  f = Nextf;</p&g

43、t;<p>  frecord = [frecord Meanf];%記錄函數(shù)值</p><p><b>  end</b></p><p><b>  end</b></p><p>  %********第三步:做出誤差收斂曲線,函數(shù)值變化曲線*******</p><p><

44、;b>  figure;</b></p><p><b>  %誤差收斂曲線</b></p><p>  [msize, nsize] = size(Deltarecord);</p><p>  t = 1 : nsize;</p><p>  plot(t, Deltarecord, 'b&

45、#39;);</p><p>  xlabel('時間');ylabel('誤差');</p><p>  title('誤差收斂曲線');</p><p><b>  figure;</b></p><p><b>  %函數(shù)值變化曲線</b><

46、;/p><p>  [msize, nsize] = size(frecord);</p><p>  t = 1 : nsize;</p><p>  plot(t, frecord, 'b');</p><p>  xlabel('時間');ylabel('函數(shù)值');</p>&

47、lt;p>  title('二次型性能指標收斂曲線');</p><p><b>  %系統(tǒng)響應圖</b></p><p><b>  figure;</b></p><p><b>  hold on;</b></p><p>  plot(timef,

48、 yout);</p><p>  xlabel('時間');ylabel('輸出');</p><p>  title('整定后系統(tǒng)階躍響應圖');</p><p><b>  %%</b></p><p>  %此函數(shù)用來建立系統(tǒng)模型,并求解目標函數(shù)</p>

49、<p>  %Kpidi的三個參數(shù)分別為Kp,Ti,Td的值</p><p>  %J為當前目標函數(shù)值</p><p><b>  %%</b></p><p>  function J = Targetf(Kpidi)</p><p>  global rin yout timef</p>

50、<p>  ts=1; %采樣時間為1s</p><p>  num = [0.048 0.048 * 0.967];</p><p>  den = [1 -1.905 0.905];%采用零階保持器離散化傳遞函數(shù)矩陣</p><p>  rin = 1.0;%輸入為階躍輸入</p><p>  u_1

51、= 0.0;u_2 = 0.0;</p><p>  y_1 = 0.0;y_2 = 0.0;</p><p>  x = [0,0,0]';</p><p>  error_1 = 0;</p><p>  P = 500;%采樣點數(shù)</p><p>  for k = 1:1:P</p>&l

52、t;p>  timef(k) = k * ts;</p><p>  r(k) = rin;</p><p>  u(k) = Kpidi(1) * x(1) + Kpidi(2) * x(2) + Kpidi(3) * x(3); </p><p>  yout(k) = -den(2) * y_1 - den(3) * y_2 + num(1) * u_1

53、 + num(2) * u_2;</p><p>  error(k) = r(k) - yout(k);</p><p>  u_2 = u_1;</p><p>  u_1 = u(k);</p><p>  y_2 = y_1;</p><p>  y_1 = yout(k); </p><

54、p>  x(1)=error(k);% 誤差值</p><p>  x(2)=(error(k)-error_1)/ts;%誤差變化量</p><p>  x(3)=x(3)+error(k)*ts;%誤差積分</p><p>  error_1=error(k);</p><p><b>  end</b><

55、;/p><p>  J = 0;%目標函數(shù)J公式實現(xiàn)</p><p>  for i=1:1:P </p><p>  J = J + error(i)^2 + 0.5 * u(i)^2;</p><p><b>  end</b></p><p><b>  %%</b><

56、;/p><p>  %此函數(shù)用來完成單純形替換法變量準備及設定</p><p>  %其中x0為Kp,Ti,Td初始值</p><p><b>  %n為空間維度</b></p><p>  %v為單純形的n+1個頂點</p><p>  %f為單純形的n+1個頂點的函數(shù)值</p>&l

57、t;p><b>  %%</b></p><p>  function [v, f] = Initialize(x0, n, l)</p><p>  p = l * (sqrt(n + 1) + n - 1) / (sqrt(2) * n);%z矩陣參數(shù)p</p><p>  q = l * (sqrt(n + 1) - 1) / (

58、sqrt(2) * n);%z矩陣參數(shù)q</p><p>  z = zeros(n + 1, n);</p><p><b>  %初始化z矩陣</b></p><p>  for i = 2 : (n + 1)</p><p>  for j = 1 : n</p><p>  if ((i

59、- 1) == j)</p><p>  z(i, j) = p;</p><p><b>  else</b></p><p>  z(i, j) = q;</p><p><b>  end</b></p><p><b>  end</b><

60、/p><p><b>  end</b></p><p>  %初始化v1...vn,也是單純形的n+1個頂點</p><p>  v = zeros(n + 1, n);</p><p>  v(1, :) = x0;</p><p>  for i = 2 : (n + 1)</p>

61、<p>  v(i, :) = x0 + z(i, :);</p><p><b>  end</b></p><p>  %初始化頂點函數(shù)值矩陣</p><p>  f = zeros(n + 1, 1);</p><p>  for i = 1 : (n + 1)</p><p>

62、  f(i) = Targetf(v(i, :));</p><p><b>  end</b></p><p><b>  %%%</b></p><p>  %本函數(shù)根據(jù)單純性求解最優(yōu)點的法則求解最優(yōu)點</p><p>  %v,f為得到的初始單純性</p><p>  

63、%Nextv為下一個單純形</p><p>  %Nextf為下一個單純形函數(shù)值</p><p>  %Delta為本次單純形的誤差</p><p><b>  %%%</b></p><p>  function [Nextv, Nextf, Delta, Meanf] = FYSJ(v, f, r, e, c, n)

64、</p><p>  [fh, h] = max(f);%找出f中值最大的元素和其位置</p><p>  [fl, l] = min(f);%找出f中值最大的元素和其位置</p><p>  v0 = zeros(1, n);%去掉最壞頂點后的(n-1)空間中單純形的中心點</p><p>  for i = 1 : n</p>

65、<p>  v0(i) = (sum(v(:, i)) - v(h, i)) / n;</p><p><b>  end</b></p><p>  vr = zeros(1, n);</p><p>  vr = v0 + r * (v0 - v(h, :));%通過v0反射vGama</p><p>

66、  fr = Targetf(vr);</p><p>  %%%開始判斷,oh, my god, it's really terrible%%%</p><p>  if (fr < fl)</p><p>  %%%第一模塊%%%</p><p>  %如果fr<fl,則繼續(xù)延伸</p><p>

67、;  ve = v0 + e * (vr - v0);</p><p>  fe = Targetf(ve);</p><p>  if (fe <= fl)</p><p><b>  %如果fe<fl</b></p><p>  v(h, :) = ve;</p><p>  f(

68、h) = fe;</p><p>  [Delta, Meanf] = Error(v, f);</p><p><b>  else</b></p><p>  v(h, :) = vr;</p><p>  f(h) = fr;</p><p>  [Delta, Meanf] = Error

69、(v, f);</p><p><b>  end</b></p><p>  %%%第一模塊%%%</p><p><b>  else</b></p><p>  %%%第二模塊%%%</p><p>  for i = 1 : n</p><p>

70、;  if (i == h)</p><p><b>  continue;</b></p><p><b>  else</b></p><p>  if (fr < f(i))</p><p>  v(h, :) = vr;</p><p>  f(h) = fr;

71、</p><p>  [Delta, Meanf] = Error(v, f);</p><p><b>  break;</b></p><p><b>  end</b></p><p><b>  end</b></p><p><b>

72、  end</b></p><p>  %%%第二模塊%%%</p><p>  %%%第三模塊%%%</p><p>  if (fr > fh)</p><p>  vc = v0 + c * (v(h, :) - v0);</p><p>  fc = Targetf(vc);</p>

73、;<p><b>  else</b></p><p>  v(h, :) = vr;</p><p>  f(h) = Targetf(vr);</p><p>  vc = v0 + c * (v(h, :) - v0);</p><p>  fc = Targetf(vc);</p>&

74、lt;p><b>  end</b></p><p>  %%%第三模塊%%%</p><p>  %%%第三模塊%%%</p><p>  if (fc <= fh)</p><p>  v(h, :) = vc;</p><p>  f(h) = fc;</p>&l

75、t;p>  [Delta, Meanf] = Error(v, f);</p><p><b>  else</b></p><p>  for i = 1 : (n + 1)</p><p>  v(i, :) = 0.5 * (v(i, :) + v(l, :));</p><p>  f(i) = Targe

76、tf(v(i, :));</p><p>  [Delta, Meanf] = Error(v, f);</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  end</b></p><p>

77、  Nextv = v;</p><p>  Nextf = f;</p><p><b>  %%%</b></p><p>  %此函數(shù)用來求解判斷終止的誤差</p><p>  %v,f為得到的初始單純性</p><p>  %Delta為本次單純形的誤差</p><p&

78、gt;<b>  %%%</b></p><p>  function [Delta, Meanf] = Error(v, f)</p><p>  Delta = 0;</p><p><b>  %計算中心點維數(shù)</b></p><p>  [m, n] = size(v);</p>

79、<p>  if (m < n)</p><p>  Meanv = zeros(n, 1);</p><p><b>  n1 = m;</b></p><p><b>  else</b></p><p>  Meanv = zeros(m, 1);</p>&

80、lt;p><b>  n1 = n;</b></p><p><b>  end</b></p><p>  %計算中心點向量meanv</p><p>  for i = 1 : n1</p><p>  Meanv(i) = sum(v(:, i)) / (n1 + 1);</p&g

81、t;<p><b>  end</b></p><p>  %計算中心點和單純形各個頂點的差值</p><p>  for i = 1 : (n1 + 1)</p><p>  Delta = Delta + (f(i) - Targetf(Meanv)) * (f(i) - Targetf(Meanv));</p>

溫馨提示

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

評論

0/150

提交評論