亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于改進(jìn)魚群算法的四旋翼無人機(jī)姿控參數(shù)整定方法與流程

文檔序號(hào):12304591閱讀:536來源:國知局
基于改進(jìn)魚群算法的四旋翼無人機(jī)姿控參數(shù)整定方法與流程

本發(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ī)的俯仰角速度;為無人機(jī)的俯仰角加速度;r為無人機(jī)的偏航角速度;;iy為無人機(jī)在y軸上的轉(zhuǎn)動(dòng)慣量;τy為無人機(jī)在y軸上的力矩;

將運(yùn)動(dòng)學(xué)模型式變換為積分鏈?zhǔn)侥P托问剑?/p>

式中,δfθ為模型不確定性項(xiàng);dθ為外部干擾項(xiàng);x1=θ為無人機(jī)的俯仰角;

由俯仰姿態(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ù),設(shè)置控制器仿真步長,計(jì)算時(shí)間,俯仰角初始狀態(tài)和俯仰角控制指令;

步驟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ī)則:xc第i條人工魚探索視覺感知范圍內(nèi)的其他人工魚所處的中心狀態(tài);xi_next為第i條人工魚朝xc移動(dòng)后的狀態(tài)改為變步長狀態(tài)更新規(guī)則:

stepi為自適應(yīng)移動(dòng)步長;γ為速度因子;

在追尾行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:ximax為在第i條人工魚探索視覺感知范圍內(nèi)食物濃度值最大的人工魚所處狀態(tài)。改為變步長狀態(tài)更新規(guī)則:

在覓食行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:xrand為第i條人工魚當(dāng)前狀態(tài)xi的視覺范圍內(nèi)隨機(jī)產(chǎn)生一個(gè)覓食狀態(tài)。改為變步長狀態(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è)人工魚的選擇概率隨機(jī)抽取滿足的兩條人工魚執(zhí)行繁殖行為獲得一個(gè)新的人工魚狀態(tài)xchild,并替換當(dāng)前最差食物濃度處的人工魚狀態(tài),并計(jì)算食物濃度;

所述外界捕魚行為:增加外部捕魚概率參數(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)通過式(3)計(jì)算中心狀態(tài)xc:

步驟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,如果表明人工魚xj的狀態(tài)中心位置的食物濃度較大,且周圍魚群數(shù)量不太多,則朝人工魚xj的方向前進(jìn)一步;否則進(jìn)行覓食。

步驟7.1、根據(jù)dij<visaul,得到第i條人工魚xi與魚群中所有人工魚之間的距離di=(di1,di2,…,dij,…,din)中位于第i條人工魚探索視覺感知范圍內(nèi)的其他魚群數(shù)目nf以及nf個(gè)人工魚當(dāng)前的狀態(tài)的食物濃度找到其中最大食物濃度及食物濃度最大的人工魚狀態(tài)ximax=xuifyiu=y(tǒng)imaxwhereu=1,…,nf;

步驟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ǔ)償為然后執(zhí)行步驟8.4;否者執(zhí)行步驟8.5;

在人工魚的標(biāo)準(zhǔn)算法覓食行為中,每一條人工魚采用固定步長step進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式在同一次迭代中,對(duì)離覓食狀態(tài)xrand距離較遠(yuǎn)的個(gè)體使用較大的移動(dòng)步長,加快其收斂速度,相反,對(duì)離覓食狀態(tài)xrand距離較近的個(gè)體使用較小的移動(dòng)步長,避免產(chǎn)生振蕩現(xiàn)象,提高尋優(yōu)結(jié)果精度,通過速度因子γ可以控制速度隨距離變化的快慢,這種變步長選擇方式,既考慮到前期算法收斂速度,又提高了后期尋優(yōu)精度。

步驟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ī)則:xc第i條人工魚探索視覺感知范圍內(nèi)的其他人工魚所處的中心狀態(tài);xi_next為第i條人工魚朝xc移動(dòng)后的狀態(tài)改為變步長狀態(tài)更新規(guī)則:stepi為自適應(yīng)移動(dòng)步長;γ為速度因子。

在追尾行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:ximax為在第i條人工魚探索視覺感知范圍內(nèi)食物濃度值最大的人工魚所處狀態(tài)。改為變步長狀態(tài)更新規(guī)則:

在覓食行為中,將標(biāo)準(zhǔn)魚群算法中采用固定步長step進(jìn)行狀態(tài)更新的規(guī)則:xrand為第i條人工魚當(dāng)前狀態(tài)xi的視覺范圍內(nèi)隨機(jī)產(chǎn)生一個(gè)覓食狀態(tài)。改為變步長狀態(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è)人工魚的選擇概率隨機(jī)抽取滿足的兩條人工魚執(zhí)行繁殖行為獲得一個(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)搜索。

外界捕魚行為通過增加外部捕魚概率參數(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ī)的俯仰角速度;為無人機(jī)的俯仰角加速度;r為無人機(jī)的偏航角速度;;iy為無人機(jī)在y軸上的轉(zhuǎn)動(dòng)慣量;τy為無人機(jī)在y軸上的力矩;

某型四旋翼飛行器的轉(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>

式中,δfθ為模型不確定性項(xiàng);dθ為外部干擾項(xiàng)。x1=θ為無人機(jī)的俯仰角。

由俯仰姿態(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ù),設(shè)置控制器仿真步長h=0.01,設(shè)置計(jì)算時(shí)間為[010]秒,無人機(jī)俯仰角初始值為5°,θcmd=0°。

步驟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)通過式(3)計(jì)算中心狀態(tài)xc:

步驟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,如果表明人工魚xj的狀態(tài)中心位置的食物濃度較大,且周圍魚群數(shù)量不太多,則朝人工魚xj的方向前進(jìn)一步;否則進(jìn)行覓食。

步驟7.1、根據(jù)dij<visaul,得到第i條人工魚xi與魚群中所有人工魚之間的距離di=(di1,di2,…,dij,…,din)中位于第i條人工魚探索視覺感知范圍內(nèi)的其他魚群數(shù)目nz以及nz個(gè)人工魚當(dāng)前的狀態(tài)的食物濃度找到其中最大食物濃度及食物濃度最大的人工魚狀態(tài)ximax=xuifyiu=y(tǒng)imaxwhereu=1,…,nz;

步驟7.2、根據(jù)獲得所有距離位于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ǔ)償為然后執(zhí)行步驟8.4;否者執(zhí)行步驟8.5;

在人工魚的標(biāo)準(zhǔn)算法覓食行為中,每一條人工魚采用固定步長step進(jìn)行移動(dòng),若固定步長較大,則可能導(dǎo)致后期人工魚跳離最優(yōu)解,出現(xiàn)收斂速度慢、精度低問題。若固定步長較小,結(jié)果精度較高,但收斂速度太慢。本發(fā)明提出變步長改進(jìn)公式在同一次迭代中,對(duì)離覓食狀態(tài)xrand距離較遠(yuǎn)的個(gè)體使用較大的移動(dòng)步長,加快其收斂速度,相反,對(duì)離覓食狀態(tài)xrand距離較近的個(gè)體使用較小的移動(dòng)步長,避免產(chǎn)生振蕩現(xiàn)象,提高尋優(yōu)結(jié)果精度,通過速度因子γ可以控制速度隨距離變化的快慢,這種變步長選擇方式,既考慮到前期算法收斂速度,又提高了后期尋優(yōu)精度。

步驟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ù)的求解精度。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1