一種基于粒子群算法的單頻點(diǎn)上的天線布局優(yōu)化的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種天線布局的優(yōu)化方法,更特別地說,是一種利用粒子群算法,在單 頻點(diǎn)上針對(duì)天線間隔離度的天線布局優(yōu)化方法。
【背景技術(shù)】
[0002] 隨著電子信息技術(shù)的發(fā)展,機(jī)載電子設(shè)備的種類和數(shù)量急劇增加。為了滿足現(xiàn)代 戰(zhàn)場(chǎng)環(huán)境下對(duì)通信、導(dǎo)航、目標(biāo)識(shí)別等的需要,越來越多的天線被安裝在飛機(jī)上,其電磁兼 容性設(shè)計(jì)便成為工程設(shè)計(jì)中的一個(gè)重要課題。與天線密集布置相伴的是嚴(yán)重的無線電干 擾,無線電系統(tǒng)間電磁干擾主要傳輸途徑是天線間的耦合。常用隔離度來定量表征這種耦 合的強(qiáng)弱程度,它定義為一根天線發(fā)射功率與另一根天線所接收功率之比,用dB來表示。
[0003] 飛機(jī)上由于可用空間有限,多部天線同時(shí)在很小的區(qū)域內(nèi)工作的情況不可避免, 因此,天線間的耦合和干擾非常嚴(yán)重?,F(xiàn)有技術(shù)對(duì)于一個(gè)多天線系統(tǒng)進(jìn)行電磁兼容設(shè)計(jì)時(shí), 只能保證某對(duì)天線的隔離度達(dá)到最大,而不能提高整個(gè)天線系統(tǒng)的隔離度,使得系統(tǒng)內(nèi)所 有天線間電磁兼容。
[0004] 粒子群優(yōu)化算法,縮寫為PS0,是一種為了解決多目標(biāo)優(yōu)化問題的進(jìn)化算法。粒子 群由m個(gè)粒子組成,每個(gè)粒子在η維空間中按一個(gè)速度飛行,飛行的位置就是優(yōu)化問題的潛 在解。粒子i的當(dāng)前位置可以表示為Xi⑴=(Xii,Xi2,…,xin),xin代表第i個(gè)粒子在第η 維上的坐標(biāo)。粒子i的當(dāng)前速度可以表示為vjt) = (v^vi2,…,vin),vin代表第i個(gè)粒子 在第n維上的移動(dòng)速度。粒子i根據(jù)其當(dāng)前位置可以得到當(dāng)前的適應(yīng)值A(chǔ)(t),或稱為目標(biāo) 函數(shù)值。粒子已經(jīng)經(jīng)歷的最優(yōu)位置對(duì)應(yīng)的適應(yīng)值為個(gè)體極值,用表示,此時(shí)粒子的位置 用/表示。所有粒子的個(gè)體極值中的最優(yōu)解為全局極值,用./L表示,此時(shí)粒子的位置用 戶匕來表示。每個(gè)粒子按照以下兩個(gè)公式更新它的速度和位置:
[0007] 其中:i= 1,2, "'m表示第i個(gè)粒子,j= 1,2,…,η表示粒子的第j維,Cpc2 為學(xué)習(xí)因子或加速常數(shù),ri、r2是均勻分布在(0,1)區(qū)間中的隨機(jī)函數(shù),t為迭代次數(shù)的步 長(zhǎng),w為慣性權(quán)重。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明的目的是為了解決上述問題,提高存在相互干擾隱患的機(jī)載天線間隔離 度,優(yōu)化天線布局,提出一種基于粒子群算法的單頻點(diǎn)上的天線布局優(yōu)化,本發(fā)明利用 MATLAB編寫粒子群算法(PS0)程序,采用MATLAB調(diào)用FEK0優(yōu)化機(jī)載天線隔離度。
[0009] 一種基于粒子群算法的天線布局優(yōu)化方法,具體包括以下幾個(gè)步驟:
[0010] 其中第二步到第十步均在MATLAB中進(jìn)行:
[0011] 第一步:建立天線優(yōu)化模型;
[0012] 第二步:在MATLAB中設(shè)置PS0中的參數(shù);
[0013] 第三步:設(shè)置初始迭代步長(zhǎng)t= 1,隨機(jī)初始化所有粒子的位置Xl(t)和速度 Vi(t);
[0014] 第四步:讀取第一步生成的*.pre文件,將xjt)寫入*.pre文件,每當(dāng)一個(gè)粒子 的Xi(t)被寫入*.pre文件中,就會(huì)生成一個(gè)新的*.pre文件,在此假設(shè)粒子群中共有N個(gè) 粒子,最終就生成了N個(gè)*.pre文件;
[0015] 第五步:在MATLAB中依次運(yùn)行N個(gè)*.pre文件,計(jì)算當(dāng)前優(yōu)化變量的仿真結(jié)果,生 成N個(gè)新的*.out文件;
[0016] 第六步:從*.out文件中讀取S參數(shù),計(jì)算粒子i的目標(biāo)函數(shù)值,即其適應(yīng)值 fi(t);
[0017] 第七步:更新粒子i和種群最優(yōu)值"/;L,忍,;如果,則 /L==你),=祕(mì));如果你)< /?,,則/二=/(0,尤,=切);
[0018] 第八步:更新所有粒子的速度Vl(t)和位置Xl(t),每個(gè)粒子都會(huì)根據(jù)個(gè)體極值 義^和全局極值/iL,以速度vi(t)在指定區(qū)域內(nèi)搜索最優(yōu)解和最優(yōu)位置;
[0019] 第九步:根據(jù)ii?和當(dāng)前的迭代次數(shù)進(jìn)行判斷,判斷是否完成全部迭代,或連續(xù)多 次迭代結(jié)果相同,若滿足,停止迭代,若不滿足,則設(shè)置t=t+l并返回第四步;
[0020] 第十步:迭代結(jié)束后,得到/二和。
[0021] 本發(fā)明與FEK0相比優(yōu)點(diǎn)在于:
[0022] (1)PS0算法中的參數(shù)可調(diào)。這樣可以根據(jù)具體模型,調(diào)整PS0參數(shù),使其優(yōu)化結(jié)果 更優(yōu)。在確保優(yōu)化效果前提下,提高了優(yōu)化速度。
[0023] (2)目標(biāo)函數(shù)可以自行編寫??梢愿鶕?jù)具體問題具體分析,明確了優(yōu)化的針對(duì)性, 具有更好的操作性和更高的效率。
【附圖說明】
[0024] 圖1是本發(fā)明的方法流程圖。
[0025] 圖2MATLAB中PS0算法迭代過程圖。
【具體實(shí)施方式】
[0026] 下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明。
[0027] 在FEK0中生成的*.pre和*.out可以以文本的形式打開,所以在MATLAB中可以 像處理文本那樣來處理這些文件。在MATLAB定義一個(gè)變量,該變量對(duì)應(yīng)于FEK0的*.pre 文件中某一個(gè)變量(如:工作頻率、幾何模型的尺寸變量、模型旋轉(zhuǎn)角等)。這樣,就可以用 MATLAB控制FEK0中的這個(gè)變量,每改變一次該變量的值就可以重新生成一個(gè)新的pre文 件,然后調(diào)用RUNFEK0運(yùn)行新生成的pre文件。同樣,可以應(yīng)用MATLAB像處理文本一樣 來處理FEK0的結(jié)果文件*.out,來對(duì)仿真結(jié)果進(jìn)行處理。
[0028] 在PS0算法中,實(shí)體被抽象為粒子,而粒子的位置就是所求問題的解。每個(gè)粒子都 會(huì)根據(jù)個(gè)體極值./^和全局極值,在一定隨機(jī)擾動(dòng)的情況下決定下一步的移動(dòng)方向。在 對(duì)機(jī)載天線進(jìn)行布局時(shí),天線的幾何結(jié)構(gòu)參數(shù)是固定的,只有幾何位置參數(shù)可以看作是自 變量,而隔離度實(shí)際上就成為隨天線幾何位置參量變化的因變量。如果收發(fā)天線都位于遠(yuǎn) 場(chǎng)區(qū),天線間的S參數(shù)的絕對(duì)值即為天線間的隔離度。所以,選用S參數(shù)作為參量編寫目標(biāo) 函數(shù),選取待優(yōu)化天線的位置坐標(biāo)作為優(yōu)化變量,即粒子群算法所處理的對(duì)象。
[0029] 根據(jù)天線的種類,在CADFEK0中設(shè)置優(yōu)化模型,每根天線都代表一個(gè)優(yōu)化模型。在 EDITFEK0中為每個(gè)優(yōu)化模型設(shè)置優(yōu)化變量,優(yōu)化變量即為每根天線的幾何位置參量。在 MATLAB中不斷更新FEK0中的優(yōu)化變量,直到該優(yōu)化變量使目標(biāo)函數(shù)值最小為止,即使每根 天線間的隔離度都達(dá)到最大,該優(yōu)化變量就是每根天線的最優(yōu)位置。
[0030] 本發(fā)明的一種基于粒子群算法的天線布局優(yōu)化方法,流程如圖1所示,具體包括 以下幾個(gè)步驟,其中第二步到第十步均在MATLAB中進(jìn)行:
[0031] 第一步:建立優(yōu)化模型。
[0032] 飛機(jī)上由于存在多對(duì)天線,每對(duì)天線間都存在相互干擾,因此需要對(duì)每根天線都 進(jìn)行優(yōu)化。
[0033] 首先根據(jù)天線的種類,在CADFEK0中設(shè)置優(yōu)化模型,設(shè)置每種天線的工作頻率,進(jìn) 入EDITFEK0中定義優(yōu)化變量,將天線的幾何位置設(shè)置為優(yōu)化變量,設(shè)置完成后生成一個(gè) *.pre文件,該文件用MATLAB可以讀寫。
[0034]在PS0算法中,設(shè)X; (t)=(xu,xi2,…,xin)表示第i個(gè)粒子的η維位置向量,每個(gè) 粒子的位置都代表了一種可能的解,Vi(t) = (V&vi2,…,vin)表示第i個(gè)粒子的η維速度 向量,在本發(fā)明的天線布局方案中,將優(yōu)化變量抽象為粒子的位置向量Xi (t),優(yōu)化變量和 粒子的位置向量存在一一對(duì)應(yīng)的關(guān)系,假設(shè)要優(yōu)化k根天線,可由待優(yōu)化的所有天線的位 置集合φ表示優(yōu)化變量,Pi表示第i個(gè)天線的三維位置坐標(biāo),則優(yōu)化變量φ如下:
[0035]Φ= {Ρ1;Ρ2, ···,Pk} = {(xi,Yi,Zi), (x2,y2,z2), ··· (xk,yk,zk)} (3)
[0036] 由于粒子的不同只取決于優(yōu)化變量的取值,所以對(duì)于每個(gè)粒子來說,優(yōu)化變量Φ 和每個(gè)粒子的位置向量之間的對(duì)應(yīng)關(guān)系都是一致的,就拿第i個(gè)粒子的η維位置向量Xl (t) =(Χπ,Χα,…,xin)來說,其中的每個(gè)坐標(biāo)都依次對(duì)應(yīng)Φ中的每個(gè)坐標(biāo),Xi對(duì)應(yīng)Xu,zjt 應(yīng)χιη,維數(shù)代表優(yōu)化變量的個(gè)數(shù),粒子的維數(shù)η等于3Xk,這樣就可以用粒子的位置向量 Xi(t)來代表優(yōu)化變量Φ。
[0037] 第二步:在MATLAB中設(shè)置PS0中的參數(shù)。主要有維數(shù)D、優(yōu)化變量的變化范圍 VarRange、最大速度mv、迭代次數(shù)T、粒子個(gè)數(shù)N、學(xué)習(xí)因子(^和c2、慣性權(quán)重w等等,這些參 數(shù)根據(jù)具體問題自行調(diào)整,可以提高優(yōu)化速度。
[0038] 維數(shù)代表優(yōu)化變量的個(gè)數(shù),若優(yōu)化變量Φ如式(3)所示,則維數(shù)D為3Xk。假設(shè) 每根天線都位于指定的區(qū)域內(nèi),這個(gè)區(qū)域由天線的三維位置坐標(biāo)確定,每個(gè)坐標(biāo)都有其最 大變化范圍和最小變化范圍,因此需要設(shè)置優(yōu)化變量的變化范圍VarRange。利用PS0找到 每根天線在自己區(qū)域內(nèi)的最優(yōu)位置,在此過程中每根天線會(huì)根據(jù)公式(1)、(2)來更新自己 的速度和位置,在此設(shè)置一個(gè)最大速度。最大速度mv決定當(dāng)前位置與最優(yōu)位置之間的分辨 率,如果太快,粒子有可能越過極小點(diǎn);如果太慢,則粒子不能在局部極小點(diǎn)之外進(jìn)行足夠 的探索,會(huì)陷入局部極值內(nèi)。這種限制可以達(dá)到防止計(jì)算溢出、決定問題空間搜索的力度的 問題。迭代次數(shù)和粒子的個(gè)數(shù)根據(jù)具體問題來設(shè)置,對(duì)于簡(jiǎn)單的問題,其值可設(shè)置的較小, 提高算法的收斂速度。學(xué)習(xí)因子Cl調(diào)節(jié)粒子飛向自身最好位置方向的步長(zhǎng),c2調(diào)節(jié)粒子向 全局最好位置飛行的步長(zhǎng),Cl、c2-般取默認(rèn)值2。慣性權(quán)重w使粒子保持運(yùn)動(dòng)慣性,使其 有擴(kuò)展運(yùn)動(dòng)空間的趨勢(shì),有能力探索新的區(qū)域,對(duì)全局搜索,通常的好方法是在前期有較高 的探索能力,而在后期有較高的開發(fā)能力以加快收斂速度,在此可將w設(shè)定為隨著進(jìn)化而 線性減少,例如由〇. 9到0. 4等等。
[0039] 第三步:設(shè)置初始迭代步長(zhǎng)t= 1,隨機(jī)初始化所有粒子的位置Xl(t)和速度 Vl (t)。在PS0算法中為每個(gè)粒子都隨機(jī)設(shè)置一個(gè)初始位置和初始速度,每個(gè)粒子都會(huì)在這 個(gè)初始位置的基礎(chǔ)上,以初始速度隨機(jī)的在優(yōu)化變量的變化范圍內(nèi)移動(dòng)。
[0040] 第四步:讀取第一步生成的*.pre文件,將xjt)寫入這個(gè)*.pre文件中。每當(dāng)一 個(gè)粒子的Xi(t)被寫入*.pre文件中,就會(huì)生成一個(gè)新的*.pre文件,文件的個(gè)數(shù)與粒子個(gè) 數(shù)相等,最終生成N個(gè)*.pre文件。
[0041]第五步:在MATLAB中通過dos('prefekofilename')命令,啟動(dòng)PREFEK0 模塊 對(duì)N個(gè)pre模型網(wǎng)絡(luò)刨分;通過dos('runfekofilename')命令,調(diào)用RUNFEK0模塊, 運(yùn)行這N個(gè)*.pre文件,計(jì)算當(dāng)前優(yōu)化變量的仿真結(jié)果,生成N個(gè)新的*.out文件。
[0042] 第六步:從*.out文件中讀取S參數(shù),計(jì)算粒子i的目標(biāo)函數(shù)值,即其適應(yīng)值 仁(t)。因?yàn)樵谶h(yuǎn)場(chǎng)S參數(shù)的絕對(duì)值等于天線間的隔離度,要使天線間的隔離度都達(dá)到最大, 則要求fi⑴最小。
[0043] 第七步:更新粒子i和種群最優(yōu)值尤《,/1。如果/;(〇<UJ /L= /:?,尤,故);如果/