本發(fā)明涉及一種基于改進(jìn)魚群算法的四旋翼無人機(jī)姿控參數(shù)整定方法,主要對(duì)典型四旋翼無人機(jī)自抗擾姿態(tài)控制器進(jìn)行參數(shù)整定。
背景技術(shù):
四旋翼無人機(jī)自抗擾控制器雖然具有良好的抗干擾性能,但控制器參數(shù)眾多,大量非線性函數(shù)的使用,使得控制器參數(shù)整定問題由于呈現(xiàn)多變量、非線性、多極值等問題,很難通過解析計(jì)算進(jìn)行解決,需要結(jié)合性能指標(biāo)建立問題描述模型,轉(zhuǎn)化為函數(shù)優(yōu)化問題采用具有強(qiáng)魯棒性、全局尋優(yōu)能力的智能優(yōu)化算法進(jìn)行求解。我國學(xué)者李曉磊等從魚群仿生機(jī)理出發(fā),提出了人工魚群算法(atrificialfishswarmalgorithm,asfa)[李曉磊.一種新型的智能優(yōu)化算法-人工魚群算法[d].杭州:浙江大學(xué)博士學(xué)位論文,2003],通過模擬魚在水里的游動(dòng)行為構(gòu)建一種智能優(yōu)化算法,用于解決優(yōu)化問題,是一種魯棒性強(qiáng)、收斂速度快、全局尋優(yōu)和自適應(yīng)能力強(qiáng)的新型群集智能優(yōu)化算法,該算法一經(jīng)提出,就以其概念簡(jiǎn)單、容易實(shí)現(xiàn)和需要調(diào)整的設(shè)計(jì)參數(shù)較少等優(yōu)點(diǎn)被應(yīng)用于解決面向眾多對(duì)象的控制器參數(shù)整定問題。
但標(biāo)準(zhǔn)人工魚群算法仍存在一些缺陷:前期收斂速度快,但后期收斂速度慢;尋優(yōu)結(jié)果精度不高,易陷入局部最優(yōu)。當(dāng)前針對(duì)算法缺陷的改進(jìn)研究也不斷開展,通過改變步長和擁擠度因子以提高算法效率;采用自適應(yīng)步長的方式提高后期尋優(yōu)結(jié)果的精度;借鑒小生境思想改進(jìn)人工魚群算法將小生境排擠機(jī)制引入人工魚群算法;將粒子群算法與人工魚群算法相結(jié)合,以提高收斂速度等。以上的改進(jìn)研究在一定程度上提高了人工魚群算法的優(yōu)化性能,但后期收斂速度慢、結(jié)果精度低、易陷入局部最優(yōu)等問題仍然未得到很好地解決,需要進(jìn)一步的改進(jìn)完善,以提高控制器參數(shù)整定的效率和控制效果的最優(yōu)精度。
技術(shù)實(shí)現(xiàn)要素:
要解決的技術(shù)問題
為了避免現(xiàn)有技術(shù)的不足之處,本發(fā)明提出一種基于改進(jìn)魚群算法的四旋翼無人機(jī)姿控參數(shù)整定方法,克服現(xiàn)有參數(shù)整定方法對(duì)四旋翼無人機(jī)自抗擾控制器最優(yōu)參數(shù)求解收斂精度不高、后期收斂速度嚴(yán)重降低和易陷入局部最優(yōu)的缺陷的問題。該方法在標(biāo)準(zhǔn)魚群算法的基礎(chǔ)上,通過動(dòng)態(tài)調(diào)整人工魚移動(dòng)步長,引入精英保留、魚群繁殖和外部捕魚行對(duì)標(biāo)準(zhǔn)魚群算法進(jìn)行改進(jìn),加快控制器參數(shù)整定的收斂速度、提高全局搜索能力和最優(yōu)參數(shù)的求解精度。
技術(shù)方案
一種基于改進(jìn)魚群算法的四旋翼無人機(jī)姿控參數(shù)整定方法,其特征在于步驟如下:
步驟1、建立典型四旋翼無人機(jī)俯仰姿態(tài)運(yùn)動(dòng)學(xué)模型為:
式中,p為無人機(jī)的滾動(dòng)角速度;q為無人機(jī)的俯仰角速度;
將運(yùn)動(dòng)學(xué)模型式變換為積分鏈?zhǔn)侥P托问剑?/p>
式中,
由俯仰姿態(tài)運(yùn)動(dòng)學(xué)模型階數(shù)為2,設(shè)計(jì)由三階擴(kuò)展觀測(cè)器和pid控制構(gòu)成的自抗擾控制器對(duì)四旋翼無人機(jī)俯仰姿態(tài)進(jìn)行控制,自抗擾姿態(tài)控制器為:
擴(kuò)展觀測(cè)器:
pid控制:
自抗擾控制輸出:uardc=upid-z3/b
式中,θcmd為俯仰角控制指令;e為俯仰角誤差;h為計(jì)算步長;z1、z2、z3為擴(kuò)展張觀測(cè)器3個(gè)狀態(tài);β0、β1、β2是擴(kuò)展觀測(cè)器觀測(cè)系數(shù);kp、ki、kd為比例控制增益、積分控制增益和微分控制增益;
整定的自抗擾控制器參數(shù)為:x=[kpkikdβ0β1β2]t,將控制器參數(shù)看作優(yōu)化設(shè)計(jì)變量;
選擇itae評(píng)價(jià)指標(biāo)為目標(biāo)函數(shù),
步驟2,采用動(dòng)態(tài)調(diào)整人工魚移動(dòng)步長策略,引入精英保留、魚群繁殖和外部捕魚行對(duì)標(biāo)準(zhǔn)魚群算法進(jìn)行改進(jìn),獲得改進(jìn)魚群算法,過程為:
1、采用變步長狀態(tài)更新:在聚群行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:
stepi為自適應(yīng)移動(dòng)步長;γ為速度因子;
在追尾行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:
在覓食行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:
2、在標(biāo)準(zhǔn)魚群算法單次迭代流程最后,引入精英保留、繁殖和人工捕魚行為,提高收斂速度,增加跳出局部最優(yōu)能力:
所述精英保留行為:將所有人工魚按食物濃度從大到小進(jìn)行排序,按照精英保留個(gè)數(shù)參數(shù)nelite將排序后的前nelite個(gè)人工魚直接保留到下一次迭代,不參與后續(xù)行為;
所述繁殖行為:增加繁殖概率參數(shù)prep,通過抽取隨機(jī)數(shù),判斷prep<rand()是否成立不定期的觸發(fā)繁殖行為。根據(jù)除精英個(gè)體以外的人工魚的食物濃度計(jì)算每個(gè)人工魚的選擇概率
所述外界捕魚行為:增加外部捕魚概率參數(shù)pcatch,通過抽取隨機(jī)數(shù),判斷pcatch<rand()是否成立,不定期的觸發(fā)外部捕魚行為;根據(jù)捕魚數(shù)量參數(shù)ncatch,對(duì)食物濃度排序隊(duì)列中k=n-1-ncatch,…,ncatch的人工魚狀態(tài)重新初始化,并計(jì)算各新狀態(tài)的食物濃度;
步驟3、設(shè)置魚群算法的人工魚個(gè)數(shù)n、狀態(tài)維數(shù)n、狀態(tài)變量范圍[upk,downk],i=1,2,…,n,感知距離visual、人工魚移動(dòng)的最大步長step、速度因子γ、人工魚擁擠度因子δ、人工魚搜索食物濃度的嘗試次數(shù)為try_number、最大迭代次數(shù)lmax、精英保留策略的魚群個(gè)數(shù)為nelite、繁殖概率為prep、精英保留策略的魚群個(gè)數(shù)為nelite、外界捕魚概率為pcatch、捕魚個(gè)數(shù)為ncatch、令食物濃度計(jì)算函數(shù)為y=-j(x)itae;
步驟4、執(zhí)行改進(jìn)魚群算法,進(jìn)行控制參數(shù)整定,直至達(dá)到最大迭代次數(shù),輸出公告板上的食物濃度yboard及人工魚狀態(tài)xboard;
步驟5、若目標(biāo)函數(shù)值滿足需求,則xboard即為最優(yōu)姿態(tài)控制器參數(shù);否則,返回步驟3,重新設(shè)置改進(jìn)魚群算法參數(shù),執(zhí)行改進(jìn)魚群算法,進(jìn)行控制參數(shù)整定。
有益效果
本發(fā)明提出的一種基于改進(jìn)魚群算法的四旋翼無人機(jī)姿控參數(shù)整定方法,在標(biāo)準(zhǔn)人工魚群算法的基礎(chǔ)上,提出了一種動(dòng)態(tài)調(diào)整人工魚移動(dòng)步長的策略,引入精英保留、繁殖行為和外部捕魚行為,克服現(xiàn)有技術(shù)中標(biāo)準(zhǔn)人工魚群算法存在的后期收斂速度嚴(yán)重降低、收斂精度不高和易陷入局部最優(yōu)的缺陷。該方法可用于解決飛行器設(shè)計(jì)、飛控參數(shù)整定和路徑規(guī)劃等問題,并具有較好的問題求解精度和效率。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果體現(xiàn)在:
1.變步長思想:算法在搜索過程中,前期人工魚之間的距離較大,若要快速收斂,移動(dòng)步長就需要相對(duì)大些;后期人工魚已基本收斂,人工魚之間距離較小,移動(dòng)步長就要小些,從而不會(huì)使得人工魚偏離收斂點(diǎn),以提高其收斂速度。因此本發(fā)明采用變步長策略,由相對(duì)距離對(duì)移動(dòng)步長進(jìn)行調(diào)整,前期相對(duì)距離差距較大,則采用較大的移動(dòng)步長,提高收斂速度。后期人工魚逐漸接近最優(yōu)位置,相對(duì)距離不斷縮小,則減小移動(dòng)步長,從而使人工魚可以不斷地逼近最優(yōu)解,有效地避免某些人工魚因移動(dòng)步長較大而偏離最優(yōu)解的情況,提高了算法的最優(yōu)控制器參數(shù)求解精度。
2.本發(fā)明采用了避免陷入局部最優(yōu)改進(jìn)策略。原始算法在搜索過程中,只接受最優(yōu)解,從而可能會(huì)陷入局部最優(yōu),無法達(dá)到全局最優(yōu)。本發(fā)明引入繁殖和外部捕魚行為,不僅接受最優(yōu)解,而且還以一定概率分別從人工魚內(nèi)部和外部對(duì)一部分人工魚狀態(tài)進(jìn)行重構(gòu),這樣就可以使得算法不定期的跳出局部最優(yōu)控制器參數(shù),從而達(dá)到全局最優(yōu)的控制器參數(shù),增強(qiáng)了算法的跳出局部最優(yōu)能力。
3.本發(fā)明引入了精英保留策略。在避免陷入局部最優(yōu)的同時(shí),將現(xiàn)有最優(yōu)、次優(yōu)控制器參數(shù)直接保留,可以保證前期計(jì)算的成果,避免重復(fù)搜索,浪費(fèi)計(jì)算時(shí)間,加快控制器參數(shù)的整定收斂速度。
改進(jìn)的整定方法具有更快的收斂速度、更好的控制器參數(shù)整定效率和控制器參數(shù)全局尋優(yōu)能力。下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作詳細(xì)說明。
附圖說明
圖1是本發(fā)明方法的流程圖。
圖2是本發(fā)明方法進(jìn)行四旋翼無人機(jī)姿控參數(shù)整定結(jié)構(gòu)圖。
圖3是本發(fā)明方法中改進(jìn)魚群算法流程圖。
圖4是本發(fā)明方法中改進(jìn)魚群算的人工魚聚群行為的流程圖。
圖5是本發(fā)明方法中改進(jìn)魚群算的人工魚追尾行為的流程圖。
圖6是本發(fā)明方法中改進(jìn)魚群算的人工魚覓食行為的流程圖。
圖7是本發(fā)明方法中改進(jìn)魚群算的人工魚繁殖行為的流程圖。
圖8是本發(fā)明方法中改進(jìn)魚群算的人工魚外部捕魚行為的流程圖。
圖9是使用本發(fā)明方法對(duì)實(shí)施例2中自抗擾控制器參數(shù)整定過程圖。
圖10是使用本發(fā)明方法對(duì)實(shí)施例2中自抗擾控制器參數(shù)進(jìn)行整定過程中每代最優(yōu)控制器參數(shù)控制效果圖
具體實(shí)施方式
現(xiàn)結(jié)合實(shí)施例、附圖對(duì)本發(fā)明作進(jìn)一步描述:
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案:一種基于改進(jìn)魚群算法的四旋翼無人機(jī)姿控參數(shù)整定方法,具體步驟如下:
步驟1、建立四旋翼無人機(jī)的姿態(tài)運(yùn)動(dòng)模型,設(shè)計(jì)自抗擾姿態(tài)控制器,確定待整定參數(shù)x=[kpkikdβ0β1β2]t,選擇誤差性能指標(biāo)作為優(yōu)化目標(biāo)函數(shù)j=f(x)將參數(shù)整定問題轉(zhuǎn)化為參數(shù)優(yōu)化問題。
步驟2、動(dòng)態(tài)調(diào)整人工魚移動(dòng)步長,引入精英保留、魚群繁殖和外部捕魚行對(duì)標(biāo)準(zhǔn)魚群算法進(jìn)行改進(jìn),采用改進(jìn)的魚群算法對(duì)控制器參數(shù)進(jìn)行優(yōu)化,解決控制器參數(shù)整定問題。設(shè)置改進(jìn)魚群算法參數(shù):人工魚群f中魚群個(gè)數(shù)為n,f=(x1,x2,…,xi,…,xn),1≤i≤n,每條人工魚個(gè)體的狀態(tài)x即代表一組控制器參數(shù),kpkikdβ0β1β2為優(yōu)化設(shè)計(jì)變量;xi表示魚群中的第i條人工魚的當(dāng)前狀態(tài),其由kpikiikdiβ0iβ1iβ2i組成,即為一組控制器參數(shù)值;由于人工魚群算法是求食物濃度最大,而姿控希望誤差指標(biāo)函數(shù)最小,則人工魚的食物濃度計(jì)算公式為y=-f(x),其中f(x)為控制器參數(shù)整定目標(biāo)函數(shù)值,反映了不同狀態(tài)下對(duì)的控制器參數(shù)的姿控效果;設(shè)計(jì)變量的尋優(yōu)范圍[downk,upk],k=1,2,…6,[downk,upk]為第k個(gè)設(shè)計(jì)變量的尋優(yōu)范圍,upk為范圍上界、downk為范圍下界;人工魚的視覺感知距離visual;人工魚移動(dòng)的最大步長step;速度因子γ;擁擠度因子δ。人工魚搜索食物濃度的嘗試次數(shù)try_number;最大迭代次數(shù)為lmax,lmax>0;精英保留策略的魚群個(gè)數(shù)為nelite,nelite>1;繁殖概率為prep,0<prep<1;外界捕魚概率為pcatch,0<pcatch<1,捕魚個(gè)數(shù)為ncatch,0<ncatch<n;令人工魚之間的距離計(jì)算公式為di,j=||xi-xj||;當(dāng)前迭代次數(shù)l=1。
步驟3、魚群初始化:
魚群中的每條人工魚均為一個(gè)向量,根據(jù)魚群個(gè)數(shù)和設(shè)計(jì)變量維數(shù),利用rand()隨機(jī)函數(shù)產(chǎn)生n行,n列個(gè)0~1之間的隨機(jī)數(shù),結(jié)合設(shè)計(jì)變量范圍[upk,downk]初始化n條人工魚。
xki=downk+rand()*(up-downk)(1)
式中,rand()隨機(jī)函數(shù)能生成一個(gè)0~1之間均勻分布的隨機(jī)數(shù)。
步驟4、公告板初始化:
通過y=f(x)計(jì)算每條人工魚當(dāng)前狀態(tài)的食物濃度為y=(y1,y2,…,yi,…yn),將最大濃度值yboard=max(y1,y2,…,yi,…yn)和對(duì)應(yīng)的人工魚狀態(tài)賦值xboard=xiifyi=y(tǒng)board給公告板;
步驟5、執(zhí)行單次迭代尋優(yōu):令當(dāng)前更新狀態(tài)人工魚i=1;
步驟6、執(zhí)行聚群行為:
步驟6.1、設(shè)第i條人工魚當(dāng)前狀態(tài)為xi,使用式(2)計(jì)算第i條人工魚xi與第j條人工魚之間的距離dij,得到第i條人工魚xi與魚群中所有人工魚之間的距離di=(di1,di2,…,dij,…,din);
dij=||xi-xj||1≤j≤n(2)
步驟6.2、獲得位于第i條人工魚探索視覺感知范圍內(nèi)的其他魚群數(shù)目nf,即滿足dij≤visaul的人工魚個(gè)數(shù)以及nf個(gè)人工魚當(dāng)前的狀態(tài)
步驟6.3、計(jì)算中心狀態(tài)xc的食物濃度yc=f(xc),判斷中心狀態(tài)xc的食物濃度yc是否大于第i條人工魚xi的食物濃度yi,且周圍魚群數(shù)量不太多滿足式(4),如均滿足,則執(zhí)行步驟6.4,否則執(zhí)行步驟7;
步驟6.4、利用式(5)計(jì)算朝中心狀態(tài)xc移動(dòng)的步長stepi;
在人工魚的標(biāo)準(zhǔn)算法聚群行為中,每一條人工魚采用固定步長step進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式(5),在同一次迭代中,對(duì)離更優(yōu)值狀態(tài)距離較遠(yuǎn)的個(gè)體使用較大的移動(dòng)步長,加快其收斂速度,相反,對(duì)離更優(yōu)值狀態(tài)距離較近的個(gè)體使用較小的移動(dòng)步長,避免產(chǎn)生振蕩現(xiàn)象,提高尋優(yōu)結(jié)果精度,通過速度因子γ可以控制速度隨距離變化的快慢,這種變步長選擇方式,既考慮到前期算法收斂速度,又提高了后期尋優(yōu)精度。
步驟6.5、利用式(5)計(jì)算第i條人工魚移動(dòng)后的狀態(tài)xi_next;
步驟7、執(zhí)行追尾行為:
設(shè)人工魚當(dāng)前狀態(tài)為xi,探索視覺感知范圍內(nèi)(di,j<visaul)yimax值最大的人工魚ximax,如果
步驟7.1、根據(jù)dij<visaul,得到第i條人工魚xi與魚群中所有人工魚之間的距離di=(di1,di2,…,dij,…,din)中位于第i條人工魚探索視覺感知范圍內(nèi)的其他魚群數(shù)目nf以及nf個(gè)人工魚當(dāng)前的狀態(tài)的食物濃度
步驟7.2、根據(jù)dmaxj=||xmax-xj||≤visaul,j=1,…,n,獲得所有距離位于ximax狀態(tài)人工魚探索視覺感知范圍內(nèi)的其他魚群數(shù)目m';
步驟7.3、判斷ximax人工魚所處狀態(tài)的食物濃度yc是否大于第i條人工魚xi的食物濃度yi,且周圍魚群數(shù)量不太多,即滿足式(7),如均滿足,則執(zhí)行步驟7.4,否則執(zhí)行步驟8;
步驟7.4、利用式(8)計(jì)算朝ximax移動(dòng)的步長stepi;
在人工魚的標(biāo)準(zhǔn)算法追尾行為中,每一條人工魚采用固定步長step進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式(8),在同一次迭代中,對(duì)離當(dāng)前搜索感知范圍內(nèi)最優(yōu)值狀態(tài)距離較遠(yuǎn)的個(gè)體使用較大的移動(dòng)步長,加快其收斂速度,相反,對(duì)離當(dāng)前搜索感知范圍內(nèi)最優(yōu)值狀態(tài)距離較近的個(gè)體使用較小的移動(dòng)步長,避免產(chǎn)生振蕩現(xiàn)象,提高尋優(yōu)結(jié)果精度,通過速度因子γ可以控制速度隨距離變化的快慢,這種變步長選擇方式,既考慮到前期算法收斂速度,又提高了后期尋優(yōu)精度。
步驟7.5、利用式(9)計(jì)算第i條人工魚移動(dòng)后的狀態(tài)xi_next;
步驟8、執(zhí)行覓食行為:
步驟8.1、令覓食嘗試次數(shù)t=0;
步驟8.2、利用rand()函數(shù)在第i條人工魚當(dāng)前狀態(tài)xi的視覺范圍內(nèi)隨機(jī)產(chǎn)生一個(gè)覓食狀態(tài)xrand,并計(jì)算該狀態(tài)的食物濃度yrand=f(xrand);
步驟8.3、若δy=y(tǒng)rand-yi>0,則令移動(dòng)補(bǔ)償為
在人工魚的標(biāo)準(zhǔn)算法覓食行為中,每一條人工魚采用固定步長step進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式
步驟8.4、通過式(10)計(jì)算第i條人工魚移動(dòng)后的狀態(tài)xi_next,完成覓食動(dòng)作;
步驟8.5、令t=t+1;如果滿足t<try_number,執(zhí)行步驟8.2;否者執(zhí)行步驟8.6;
步驟8.6、通過式(11),由隨機(jī)向某方向移動(dòng)最大步長,獲得第i條人工魚移動(dòng)后的狀態(tài)
步驟8.7、若yi_next>yboard,則將更新后的第i條人工魚的食物濃度yi_next和狀態(tài)xi_next更新到公告板,即yboard=y(tǒng)i_next,xboard=xi_next;
步驟9、選擇狀態(tài)更新人工魚:
令i=i+1;如果滿足i≤n,則執(zhí)行步驟4,否則執(zhí)行步驟7;
步驟10、精英保留:
將所有人工魚按食物濃度從大到小進(jìn)行排序,將排序后的前nelite個(gè)人工魚直接保留到下一次迭代,前nelite個(gè)人工魚不參與后續(xù)行為。
通過增加精英保留策略,便于后續(xù)繁殖、捕魚行為對(duì)除當(dāng)前最優(yōu)狀態(tài)的人工魚進(jìn)行影響,保證前期計(jì)算的成果,避免重復(fù)搜索,浪費(fèi)計(jì)算時(shí)間。
步驟11、繁殖行為:
步驟11.1、通過rand()函數(shù)根據(jù)繁殖概率,判斷本代是否發(fā)生繁殖,如prep<rand(),則執(zhí)行步驟11.2;否者執(zhí)行步驟12;
步驟11.2、根據(jù)排序的結(jié)果,根據(jù)除精英個(gè)體以外的人工魚的食物濃度按照式(12)計(jì)算每個(gè)人工魚的選擇概率;
步驟11.3、通過兩次rand()函數(shù)按照式(13),選擇出兩條人工魚進(jìn)行繁殖;
步驟11.4、根據(jù)選擇出的兩條人工魚當(dāng)前狀態(tài),按照式(14)進(jìn)行繁殖獲得一個(gè)新的人工魚狀態(tài)xchild,并替換當(dāng)前最差食物濃度處的人工魚狀態(tài),并計(jì)算食物濃度。
在標(biāo)準(zhǔn)魚群算法有收斂速度慢、陷入局部極值的缺陷,故在標(biāo)準(zhǔn)算法進(jìn)入下一次迭代之前,增加生物繁殖行為,以一定概率通過隨機(jī)抽取當(dāng)前魚群內(nèi)部的兩個(gè)狀態(tài)進(jìn)行組合,對(duì)當(dāng)前最差人工魚狀態(tài)進(jìn)行替換,可以基于魚群內(nèi)部狀態(tài)跳到新的狀態(tài)進(jìn)行搜索,防止陷入局部最優(yōu),進(jìn)行全局最優(yōu)搜索。
步驟12、外部捕魚行為:
步驟12.1、通過rand()隨機(jī)函數(shù)根據(jù)外界捕魚概率,判斷本代是否發(fā)生外界捕魚,如pcatch<rand(),則執(zhí)行步驟12.2;否者執(zhí)行步驟13;
步驟12.2、根據(jù)捕魚數(shù)量ncatch,對(duì)食物濃度排序隊(duì)列中k=n-1-ncatch,…,ncatch的人工魚狀態(tài)按照式(1)進(jìn)行更新,并計(jì)算各新狀態(tài)的食物濃度;
在標(biāo)準(zhǔn)魚群算法有收斂速度慢、陷入局部極值的缺陷,故在標(biāo)準(zhǔn)算法進(jìn)入下一次迭代之前,增加外部捕魚行為,以一定概率直接在整個(gè)尋優(yōu)空間中隨機(jī)產(chǎn)生若干個(gè)新的狀態(tài),對(duì)當(dāng)前若干個(gè)較差人工魚狀態(tài)進(jìn)行替換,可以使部分搜索跳到更廣闊的外部狀態(tài)進(jìn)行,從而跳出局部最優(yōu),進(jìn)行全局最優(yōu)搜索。
步驟13、若當(dāng)前迭代次數(shù)l≤lmax,則令l=l+1,并執(zhí)行步驟5;否則執(zhí)行步驟14;
步驟14、輸出公告板上的食物濃度yboard及人工魚狀態(tài)xboard,xboard即為最優(yōu)姿態(tài)控制器參數(shù)。
步驟15、若目標(biāo)函數(shù)值滿足需求,則xboard即為最優(yōu)姿態(tài)控制器參數(shù)。否則,返回步驟2,重新設(shè)置改進(jìn)魚群算法參數(shù),執(zhí)行步驟3~14。
下面結(jié)合附圖1-10及兩個(gè)實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述,此處所描述的實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
實(shí)施例1利用測(cè)試函數(shù)驗(yàn)證改進(jìn)魚群算法的求解精度和收斂性
為驗(yàn)證改進(jìn)算法在求解精度和收斂性方面的改進(jìn)效果,選擇標(biāo)準(zhǔn)測(cè)試函數(shù)二維griewank函數(shù)、schaffer函數(shù)及ackley函數(shù)對(duì)改進(jìn)前后的算法效果進(jìn)行對(duì)比,基于三種函數(shù)計(jì)算方法對(duì)于就最小值的問題,得到食物濃度計(jì)算函數(shù)為y=f(x)=-gh(x)h=g、s、a,三種函數(shù)的數(shù)學(xué)表達(dá)式及全局最優(yōu)解由表1給出。
假設(shè)人工魚群中有n條魚,f=(x1,x2,…,xi,…,xn),1≤i≤n,每條人工魚個(gè)體的狀態(tài)x可用測(cè)試函數(shù)的參數(shù)x=(x1,x2)為優(yōu)化設(shè)計(jì)變量;[downk,upk]為第k個(gè)設(shè)計(jì)變量的尋優(yōu)范圍,upk為范圍上界、downk為范圍下界;xi=(x1i,x2i,…,xni)表示魚群中的第i條人工魚的當(dāng)前狀態(tài);xki(k=1,…,n,i=1,…,n)表示第i條人工魚狀態(tài)中第k個(gè)設(shè)計(jì)變量的當(dāng)前值;人工魚當(dāng)前位置的食物濃度用y=f(x)表示,其中y為目標(biāo)函數(shù)值,反映了不同狀態(tài)下所解決問題模型的優(yōu)劣程度;人工魚之間的距離為di,j=||xi-xj||;visual表示人工魚的視覺感知距離;step表示人工魚移動(dòng)的最大步長;γ為速度因子;δ為擁擠度因子。人工魚搜索食物濃度的嘗試次數(shù)為try_number;
表1實(shí)施例測(cè)試函數(shù)具體信息表
本發(fā)明的改進(jìn)魚群方法與標(biāo)準(zhǔn)魚群算法主要改進(jìn)體現(xiàn)在:
(1)采用變步長狀態(tài)更新,在聚群行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:
在追尾行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:
在覓食行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:
在標(biāo)準(zhǔn)魚群算法的聚群、追尾、覓食行為中,每一條人工魚采用固定步長進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)方法,在同一次迭代中,對(duì)離目標(biāo)狀態(tài)距離較遠(yuǎn)的個(gè)體使用較大的移動(dòng)步長,加快其收斂速度,相反,對(duì)離目標(biāo)狀態(tài)距離較近的個(gè)體使用較小的移動(dòng)步長,避免產(chǎn)生振蕩現(xiàn)象,提高尋優(yōu)結(jié)果精度,通過速度因子γ可以控制速度隨距離變化的快慢,這種變步長選擇方式,既考慮到前期算法收斂速度,又提高了后期尋優(yōu)精度。
(2)在標(biāo)準(zhǔn)魚群算法單次迭代流程最后,引入精英保留、繁殖和人工捕魚行為,提高收斂速度,增加跳出局部最優(yōu)能力。
精英保留行為將所有人工魚按食物濃度從大到小進(jìn)行排序,按照精英保留個(gè)數(shù)參數(shù)nelite將排序后的前nelite個(gè)人工魚直接保留到下一次迭代,不參與后續(xù)行為。通過增加精英保留策略,便于后續(xù)繁殖、捕魚行為對(duì)除當(dāng)前最優(yōu)狀態(tài)的人工魚進(jìn)行影響,保證前期計(jì)算的成果,避免重復(fù)搜索,浪費(fèi)計(jì)算時(shí)間。
繁殖行為通過增加繁殖概率參數(shù)prep,通過抽取隨機(jī)數(shù),判斷prep<rand()是否成立不定期的觸發(fā)繁殖行為。根據(jù)除精英個(gè)體以外的人工魚的食物濃度計(jì)算每個(gè)人工魚的選擇概率
外界捕魚行為通過增加外部捕魚概率參數(shù)pcatch,通過抽取隨機(jī)數(shù),判斷pcatch<rand()是否成立,不定期的觸發(fā)外部捕魚行為。根據(jù)捕魚數(shù)量參數(shù)ncatch,對(duì)食物濃度排序隊(duì)列中k=n-1-ncatch,…,ncatch的人工魚狀態(tài)重新初始化,并計(jì)算各新狀態(tài)的食物濃度;在標(biāo)準(zhǔn)魚群算法有收斂速度慢、陷入局部極值的缺陷,故在標(biāo)準(zhǔn)算法進(jìn)入下一次迭代之前,增加外部捕魚行為,以一定概率直接在整個(gè)尋優(yōu)空間中隨機(jī)產(chǎn)生若干個(gè)新的狀態(tài),對(duì)當(dāng)前若干個(gè)較差人工魚狀態(tài)進(jìn)行替換,可以使部分搜索跳到更廣闊的外部狀態(tài)進(jìn)行,從而跳出局部最優(yōu),進(jìn)行全局最優(yōu)搜索。
圖3給出了改進(jìn)后魚群算法的流程圖,圖4給出了改進(jìn)后的人工魚聚群行為的流程圖。圖5給出了改進(jìn)后的人工魚追尾行為的流程圖。圖6給出了改進(jìn)后的人工魚覓食行為的流程圖。圖7給出了改進(jìn)后的人工魚繁殖行為的流程圖。圖8給出了改進(jìn)后的人工魚外部捕魚行為的流程圖。
實(shí)施例1將本發(fā)明中改進(jìn)魚群算法與標(biāo)準(zhǔn)魚群算法進(jìn)行對(duì)比,結(jié)果可參照表2。其中標(biāo)準(zhǔn)魚群算法的人工魚個(gè)數(shù)n=50、狀態(tài)維數(shù)n=2、狀態(tài)變量范圍[up1,down1]=[-20,20],[up2,down2]=[-20,20]、感知距離visual=5、人工魚移動(dòng)的最大步長step=0.1、人工魚擁擠度因子δ=0.6、人工魚搜索食物濃度的嘗試次數(shù)為try_number=5、最大迭代次數(shù)lmax=100。改進(jìn)標(biāo)準(zhǔn)魚群算法中相同的參數(shù)設(shè)置與標(biāo)準(zhǔn)魚群算法一致,新增的算法參數(shù)設(shè)置為速度因子γ=0.5,精英保留策略的魚群個(gè)數(shù)為nelite=2,nelite>1;繁殖概率為prep=0.2,0<prep<1;精英保留策略的魚群個(gè)數(shù)為nelite=2,nelite>1;外界捕魚概率為pcatch=0.1,0<pcatch<1,捕魚個(gè)數(shù)為ncatch=10,0<ncatch<n。
實(shí)施例1中,利用每種算法對(duì)各測(cè)試函數(shù)重復(fù)運(yùn)行30次得到對(duì)優(yōu)化結(jié)果進(jìn)行分析,記錄其收斂次數(shù)和收斂時(shí)的迭代次數(shù),得到它們的平均迭代次數(shù)及收斂成功率,收斂成功率=收斂成功次數(shù)/30,表3給出了收斂性結(jié)果對(duì)比。
表3實(shí)施例的不同測(cè)試函數(shù)收斂性測(cè)試結(jié)果對(duì)比表
通過實(shí)施例1的收斂性測(cè)試結(jié)果可以看出,相對(duì)于標(biāo)準(zhǔn)魚群算法,本發(fā)明中的改進(jìn)魚群算法在收斂性方面有很大提升。這也證明了本發(fā)明對(duì)標(biāo)準(zhǔn)魚群算法改進(jìn)的正確性。
在實(shí)施例1中,利用每種算法對(duì)各測(cè)試函數(shù)重復(fù)運(yùn)行30次,記錄其最優(yōu)解及對(duì)應(yīng)的人工魚狀態(tài),并計(jì)算平均優(yōu)化結(jié)果,表4給出了最優(yōu)值優(yōu)化求解結(jié)果對(duì)比。
表4實(shí)施例的不同測(cè)試函數(shù)最優(yōu)值求解結(jié)果對(duì)比表
通過實(shí)施例1的收斂性測(cè)試結(jié)果可以看出,相對(duì)于標(biāo)準(zhǔn)魚群算法,本發(fā)明中改進(jìn)魚群算法在最優(yōu)值求解結(jié)果精度上有近2個(gè)數(shù)量級(jí)的提高,在最優(yōu)解人工魚狀態(tài)求解精度上有近1個(gè)數(shù)量級(jí)的提高,在優(yōu)化求解方面有很大提升。這也證明了本發(fā)明中對(duì)標(biāo)準(zhǔn)魚群算法改進(jìn)的正確性。
實(shí)施例2改進(jìn)魚群算法四旋翼無人機(jī)參數(shù)整定可行性驗(yàn)證
參照附圖1~8,本發(fā)明方法的具體實(shí)施步驟如下:
步驟1、建立典型四旋翼無人機(jī)俯仰姿態(tài)運(yùn)動(dòng)學(xué)模型為:
式中,p為無人機(jī)的滾動(dòng)角速度;q為無人機(jī)的俯仰角速度;
某型四旋翼飛行器的轉(zhuǎn)動(dòng)慣量為:ix=0.039kgm2、iy=0.039kgm2、iz=0.078kgm2δfθ=0.01cos(0.8t)θ,,p=0.05sin(0.5t)rad/s,r=0.02cos(0.5t)rad/s,dθ=0.01rad/s
將式(1)變換為式(2)的積分鏈?zhǔn)侥P托问剑?/p>
式中,
由俯仰姿態(tài)運(yùn)動(dòng)學(xué)模型階數(shù)為2,設(shè)計(jì)由三階擴(kuò)展觀測(cè)器和pid控制構(gòu)成的自抗擾控制器對(duì)四旋翼無人機(jī)俯仰姿態(tài)進(jìn)行控制,自抗擾姿態(tài)控制器為:
擴(kuò)展觀測(cè)器:
pid控制:
自抗擾控制輸出:uardc=upid-z3/b
式中,θcmd為俯仰角控制指令;e為俯仰角誤差;h為計(jì)算步長;z1、z2、z3為擴(kuò)展張觀測(cè)器3個(gè)狀態(tài);β0、β1、β2是擴(kuò)展觀測(cè)器觀測(cè)系數(shù);kp、ki、kd為比例控制增益、積分控制增益和微分控制增益。
需整定的自抗擾控制器參數(shù)為:x=[kpkikdβ0β1β2]t,將控制器參數(shù)看作優(yōu)化設(shè)計(jì)變量。
選擇itae評(píng)價(jià)指標(biāo)為目標(biāo)函數(shù),
步驟2、設(shè)置魚群算法的人工魚個(gè)數(shù)n=50、狀態(tài)維數(shù)n=6、狀態(tài)變量范圍[up1,down1]=[10,50]、[up2,down2]=[0,10]、[up3,down3]=[5,50]、[up4,down4]=[500,2000]、[up5,down5]=[3000,8000]、[up6,down6]=[13000,16000],感知距離visual=5、人工魚移動(dòng)的最大步長step=1、速度因子γ=0.5、人工魚擁擠度因子δ=0.6、人工魚搜索食物濃度的嘗試次數(shù)為try_number=5、最大迭代次數(shù)lmax=20、精英保留策略的魚群個(gè)數(shù)為nelite=2、繁殖概率為prep=0.2、精英保留策略的魚群個(gè)數(shù)為nelite=2、外界捕魚概率為pcatch=0.1、捕魚個(gè)數(shù)為ncatch=10、令食物濃度計(jì)算函數(shù)為y=-j(x)itae。
步驟3、魚群初始化:
結(jié)合實(shí)施例函數(shù)表達(dá)式可知魚群中的每條人工魚的狀態(tài)均為一個(gè)6維向量,確定魚群個(gè)數(shù)n=50和設(shè)計(jì)變量維數(shù)n=6,利用rand()函數(shù)產(chǎn)生n=6行,n=50列個(gè)0~1之間的隨機(jī)數(shù),結(jié)合設(shè)計(jì)變量范圍[upk,downk],k=1,…,n,初始化獲得n=50條人工魚。
xki=downk+rand()*(upk-downk),k=1,…,n,i=1,…,n(1)
步驟4、公告板初始化:
通過y=f(x)計(jì)算每條人工魚當(dāng)前狀態(tài)的食物濃度為y=(y1,y2,…,yi,…yn),將最大濃度值yboard=max(y1,y2,…,yi,…yn)和對(duì)應(yīng)的人工魚狀態(tài)賦值xboard=xiifyi=y(tǒng)board給公告板;
步驟5、執(zhí)行單次迭代尋優(yōu):令當(dāng)前更新狀態(tài)人工魚i=0;
步驟6、執(zhí)行聚群行為:
步驟6.1、設(shè)第i條人工魚當(dāng)前狀態(tài)為xi,使用式(2)計(jì)算第i條人工魚xi與第j條人工魚之間的距離dij,得到第i條人工魚xi與魚群中所有人工魚之間的距離di=(di1,di2,…,dij,…,din);
dij=||xi-xj||1≤j≤n(2)
步驟6.2、獲得位于第i條人工魚探索視覺感知范圍內(nèi)的其他魚群數(shù)目nf,即滿足dij≤visaul的人工魚個(gè)數(shù)以及nf個(gè)人工魚當(dāng)前的狀態(tài)
步驟6.3、計(jì)算中心狀態(tài)xc的食物濃度yc=f(xc),判斷中心狀態(tài)xc的食物濃度yc是否大于第i條人工魚xi的食物濃度yi,且周圍魚群數(shù)量不太多滿足式(4),如均滿足,則執(zhí)行步驟6.4,否則執(zhí)行步驟7追尾行為;
步驟6.4、利用式(5)計(jì)算朝中心狀態(tài)xc移動(dòng)的步長stepi;
在人工魚的標(biāo)準(zhǔn)算法聚群行為中,每一條人工魚采用固定步長進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式(5),在同一次迭代中,對(duì)離更優(yōu)值狀態(tài)距離較遠(yuǎn)的個(gè)體使用較大的移動(dòng)步長,加快其收斂速度,相反,對(duì)離更優(yōu)值狀態(tài)距離較近的個(gè)體使用較小的移動(dòng)步長,避免產(chǎn)生振蕩現(xiàn)象,提高尋優(yōu)結(jié)果精度,通過速度因子γ可以控制速度隨距離變化的快慢,這種變步長選擇方式,既考慮到前期算法收斂速度,又提高了后期尋優(yōu)精度。
步驟6.5、利用式(5)計(jì)算第i條人工魚移動(dòng)后的狀態(tài)xi_next;
步驟7、執(zhí)行追尾行為:
設(shè)人工魚當(dāng)前狀態(tài)為xi,探索視覺感知范圍內(nèi)(di,j<visaul)yj值最大的人工魚xj,如果
步驟7.1、根據(jù)dij<visaul,得到第i條人工魚xi與魚群中所有人工魚之間的距離di=(di1,di2,…,dij,…,din)中位于第i條人工魚探索視覺感知范圍內(nèi)的其他魚群數(shù)目nz以及nz個(gè)人工魚當(dāng)前的狀態(tài)的食物濃度
步驟7.2、根據(jù)
步驟7.3、判斷ximax人工魚所處狀態(tài)的食物濃度yc是否大于第i條人工魚xi的食物濃度yi,且周圍魚群數(shù)量不太多,即滿足式(7),如均滿足,則執(zhí)行步驟7.4,否則執(zhí)行步驟8覓食行為;
步驟7.4、利用式(8)計(jì)算朝ximax移動(dòng)的步長stepi;
在人工魚的標(biāo)準(zhǔn)算法追尾行為中,每一條人工魚采用固定步長step進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式(8),在同一次迭代中,對(duì)離當(dāng)前搜索感知范圍內(nèi)最優(yōu)值狀態(tài)距離較遠(yuǎn)的個(gè)體使用較大的移動(dòng)步長,加快其收斂速度,相反,對(duì)離當(dāng)前搜索感知范圍內(nèi)最優(yōu)值狀態(tài)距離較近的個(gè)體使用較小的移動(dòng)步長,避免產(chǎn)生振蕩現(xiàn)象,提高尋優(yōu)結(jié)果精度,通過速度因子γ可以控制速度隨距離變化的快慢,這種變步長選擇方式,既考慮到前期算法收斂速度,又提高了后期尋優(yōu)精度。
步驟7.5、利用式(9)計(jì)算第i條人工魚移動(dòng)后的狀態(tài)xi_next;
步驟8、執(zhí)行覓食行為:
步驟8.1、令覓食嘗試次數(shù)t=0;
步驟8.2、利用rand()函數(shù)在第i條人工魚當(dāng)前狀態(tài)xi的視覺范圍內(nèi)隨機(jī)產(chǎn)生一個(gè)覓食狀態(tài)xrand,并計(jì)算該狀態(tài)的食物濃度yrand=f(xrand);
步驟8.3、若δy=y(tǒng)rand-yi>0,則令移動(dòng)補(bǔ)償為
在人工魚的標(biāo)準(zhǔn)算法覓食行為中,每一條人工魚采用固定步長step進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式
步驟8.4、通過式(10)計(jì)算第i條人工魚移動(dòng)后的狀態(tài)xi_next,完成覓食動(dòng)作;
步驟8.5、令t=t+1;如果滿足t<try_number,執(zhí)行步驟8.2;否者執(zhí)行步驟8.6;
步驟8.6、通過式(11),由隨機(jī)向某方向移動(dòng)最大步長,獲得第i條人工魚移動(dòng)后的狀態(tài)
步驟8.7、若yi_next>yboard,則將更新后的第i條人工魚的食物濃度yi_next和狀態(tài)xi_next更新到公告板,即yboard=y(tǒng)i_next,xboard=xi_next;
步驟9、選擇狀態(tài)更新人工魚:
令i=i+1;如果滿足i<n,則執(zhí)行步驟4,否則執(zhí)行步驟7;
步驟10、精英保留:
將所有人工魚按食物濃度從大到小進(jìn)行排序,將排序后的前nelite=2個(gè)人工魚直接保留到下一次迭代,前nelite=2個(gè)人工魚不參與后續(xù)行為。
通過增加精英保留策略,便于后續(xù)繁殖、捕魚行為對(duì)除當(dāng)前最優(yōu)狀態(tài)的人工魚進(jìn)行影響,保證前期計(jì)算的成果,避免重復(fù)搜索,浪費(fèi)計(jì)算時(shí)間。
步驟11、繁殖行為:
步驟11.1、通過rand()函數(shù)根據(jù)繁殖概率,判斷本代是否發(fā)生繁殖,如prep<rand(),則執(zhí)行步驟11.2;否者執(zhí)行步驟12;
步驟11.2、由食物濃度排序的結(jié)果,根據(jù)除精英個(gè)體以外的人工魚的食物濃度按照式(12)計(jì)算每個(gè)人工魚的選擇概率;
步驟11.3、通過兩次rand函數(shù)按照式(13),選擇出兩條人工魚進(jìn)行繁殖;
步驟11.4、根據(jù)選擇出的兩條人工魚當(dāng)前狀態(tài),按照式(14)進(jìn)行繁殖獲得一個(gè)新的人工魚狀態(tài)xchild,并替換當(dāng)前最差食物濃度處的人工魚狀態(tài),并計(jì)算食物濃度。
在標(biāo)準(zhǔn)魚群算法有收斂速度慢、陷入局部極值的缺陷,故在標(biāo)準(zhǔn)算法進(jìn)入下一次迭代之前,增加生物繁殖行為,以一定概率通過隨機(jī)抽取當(dāng)前魚群內(nèi)部的兩個(gè)狀態(tài)進(jìn)行組合,對(duì)當(dāng)前最差人工魚狀態(tài)進(jìn)行替換,可以基于魚群內(nèi)部狀態(tài)跳到新的狀態(tài)進(jìn)行搜索,防止陷入局部最優(yōu),進(jìn)行全局最優(yōu)搜索。
步驟12、外界捕魚行為:
步驟12.1、通過rand函數(shù)根據(jù)外界捕魚概率,判斷本代是否發(fā)生外界捕魚,如pcatch<rand(),則執(zhí)行步驟12.2;否者執(zhí)行步驟13;
步驟12.2、根據(jù)捕魚數(shù)量ncatch,對(duì)食物濃度排序隊(duì)列中k=n-1-ncatch,…,ncatch的人工魚狀態(tài)按照式(1)進(jìn)行更新,并計(jì)算各新狀態(tài)的食物濃度;
在標(biāo)準(zhǔn)魚群算法有收斂速度慢、陷入局部極值的缺陷,故在標(biāo)準(zhǔn)算法進(jìn)入下一次迭代之前,增加外部捕魚行為,以一定概率直接在整個(gè)尋優(yōu)空間中隨機(jī)產(chǎn)生若干個(gè)新的狀態(tài),對(duì)當(dāng)前若干個(gè)較差人工魚狀態(tài)進(jìn)行替換,可以使部分搜索跳到更廣闊的外部狀態(tài)進(jìn)行,從而跳出局部最優(yōu),進(jìn)行全局最優(yōu)搜索。
步驟13、若當(dāng)前迭代次數(shù)l<lmax,則令l=l+1,并執(zhí)行步驟5;否則執(zhí)行步驟14;
步驟14、輸出公告板上的食物濃度yboard及人工魚狀態(tài)xboard;
步驟15、若目標(biāo)函數(shù)值滿足需求,則xboard即為最優(yōu)姿態(tài)控制器參數(shù)。否則,返回步驟2,重新設(shè)置改進(jìn)魚群算法參數(shù),執(zhí)行步驟3~14。
附圖1給出了本發(fā)明方法進(jìn)行控制器參數(shù)整定的流程圖,附圖2給出了應(yīng)用本方法對(duì)四旋翼無人機(jī)自抗擾姿態(tài)控制器進(jìn)行整定的結(jié)構(gòu)圖。附圖3~8附圖1中改進(jìn)魚群算法的執(zhí)行流程圖。附圖9給出了實(shí)施例2的整定過程圖,附圖10給出了整定過程中每次當(dāng)前最優(yōu)控制器參數(shù)作用下的俯仰姿態(tài)控制曲線。
參照附圖9可知目標(biāo)函數(shù)值隨迭代次數(shù)的增加不斷減小,最終穩(wěn)定在0.8附近。附圖10中給出了每代當(dāng)前最優(yōu)控制器參數(shù)下的控制效果圖,可知隨著迭代次數(shù)的增加,最優(yōu)控制參數(shù)不斷更新,姿態(tài)控制效果不斷提高。經(jīng)過整定后獲得最優(yōu)控制器參數(shù)為:
kp=11、ki=1.2、kd=18.2、β0=1005、β1=5106、β2=15011
最優(yōu)itae指標(biāo)為:0.81,可見僅經(jīng)過20次迭代即可完成無人機(jī)自抗擾控制器參數(shù)整定。本發(fā)明方法在標(biāo)準(zhǔn)魚群算法的基礎(chǔ)上,通過動(dòng)態(tài)調(diào)整人工魚移動(dòng)步長,引入精英保留、魚群繁殖和外部捕魚行對(duì)標(biāo)準(zhǔn)魚群算法進(jìn)行改進(jìn),加快控制器參數(shù)整定的收斂速度、提高全局搜索能力和最優(yōu)參數(shù)的求解精度。