崔若愚,牛調明,梅中磊
(蘭州大學 信息科學與工程學院,甘肅 蘭州 730000)
傳統(tǒng)的天線設計及優(yōu)化是采用計算機的微波EDA(Electronic Design Automation)仿真軟件進行的,多是采用數值求解的方法精確計算和分析電磁特性[1-2],計算量大、計算時間長,且沒有一個高效率的參數優(yōu)化方法,科研人員利用自己的專業(yè)知識和經驗來確定等效場路模型,并通過全局優(yōu)化的形式對天線進行參數更新與選擇[3]。如果天線的模型過于復雜,很難用公式及理論對其尺寸和電磁特性的關系進行推導。近些年,得益于機器學習的飛速發(fā)展,不少學者逐漸將機器學習相關的最優(yōu)化算法與天線優(yōu)化設計相結合,形成了各有優(yōu)勢的參數優(yōu)化方式[4]。其中,粒子群(Particle Swarm Optimization,PSO)算法[5]因為參數簡單、更加符合社會行為的特性被廣泛應用于求解連續(xù)優(yōu)化問題中[6]。一些研究表明,在天線設計過程中,使用PSO算法優(yōu)化天線,能夠顯著降低計算機全波仿真軟件的計算次數,極大地提升天線設計的效率[7-9]?,F有的天線聯合仿真主要依靠Matlab工具箱與VBS腳本搭配使用,對軟件的版本依賴較高,可移植性不強,底層效率不高,而Python作為一種廣泛應用于工程領域的腳本語言,具有高效的底層數據結構和程序移植性。
本文主要研究了一種帶修正系數的改進型的適應度值預測粒子群(Fitness Estimate Particle Swarm Optimization,FEPSO)算法,并對比了基于研究算法與基于傳統(tǒng)PSO算法的聯合仿真技術在天線優(yōu)化中的運用。算法側重于提升天線優(yōu)化的效率,因此選擇了一種經典的微帶八木天線進行優(yōu)化與驗證。與基于傳統(tǒng)PSO算法的聯合仿真相比,所提算法有較大的效率提升,對其他天線中的尺寸結構優(yōu)化也具有普適性與工程實踐意義。例如,在對某些不規(guī)則形狀的復雜天線進行設計時,由于缺少人工經驗無法推導天線的尺寸參數,而且使用純粹的軟件仿真又會消耗大量的時間,此時使用FEPSO算法,只需要給出尺寸范圍和算法參數設置,就可以節(jié)省科研人員的精力與時間來自動化地進行尋優(yōu)。這種聯合仿真并不依賴于天線的具體形狀和結構,同樣可以運用于分型結構天線、超表面天線及陣列天線相位控制等其他器件的設計當中。這種預測方法通過前代的粒子行為與信息對粒子的適應度值進行預測,對于其他領域中的具有昂貴的適應度值計算代價的優(yōu)化問題也具有借鑒意義。
微帶八木天線結構如圖1所示。微帶八木天線以微帶天線為基礎,介質板正面是通過微帶線與饋線相連的有源振子的一臂,另一臂則反方向地印制在介質板的底面。貼片排布用八木天線的形態(tài)排列得到。此微帶八木天線由激勵振子、引向振子和反射振子組成。對天線性能影響較大的參數均已在圖中標出,L和W分別對應介質板的長和寬,dr為激勵振子的長度,d1為引向振子的長度,W1和W2為激勵振子和引向振子的寬度,ɡ1為激勵端到激勵振子的間距,ɡ2為激勵振子與引向振子的間距,ɡ3為引向振子之間的距離。
圖1 微帶八木天線結構Fig.1 Microstrip Yagi-antenna structure
文獻[10]介紹了經典微帶八木天線的經驗公式并進行了天線設計,這也是常用的天線分析與綜合的流程,一般步驟是:
① 根據設計要求,先確定所需天線的工作頻率、形狀、材料以及磁導率等具體數值;
② 通過已知天線的用途及特性,確定所設計天線的具體類型;
③ 查經驗公式,通過計算得到目標天線的各項參數;
④ 利用HFSS或者CST等微波EDA軟件進行仿真;
⑤ 根據仿真結果人為地進行參數微調,最終得到設計目標天線。
然而,一些經典天線的經驗公式對于一些復雜拓撲形狀的天線不具有指導意義。在一些對于經典天線的開槽、彎折和加寄生貼片等改進中也已經不能起到輔助設計的作用。本文介紹了一種基于PSO算法進行Python-HFSS天線聯合仿真的方法,提出了一種天線綜合和分析的新途徑,以滿足復雜拓撲結構天線的設計與分析,并在天線設計效率上有較大提高。
在天線建立模型無誤后,腳本錄制的位置如圖2所示,通過Tools→Record Script to File,選擇腳本文件存儲位置開始進行腳本的錄制,它可以將用戶點擊按鈕之后對于模型、參數和設置等操作記錄下來。當設置參數的操作完成后,在同樣位置點擊Tools→Stop Script Recording,會終止錄制操作,最終將生成一個py后綴的腳本文件,通過VSCode編譯器運行此文件,即可在Python中自動復現剛才進行的所有操作。
圖2 腳本錄制的位置Fig.2 Script recording position
本文采用的是HFSS 2020(R2)版本,Python則使用VSCode為編譯器的Python3.7版本。相比于Matlab,Python是一種更輕量化的腳本語言,在HFSS 16之后就已經開始支持Python腳本的錄制功能,具有更為高效的底層數據結構以及工程應用場景,適用于大批量數據的分析處理[11]。PSO算法的一般公式是:
(1)
(2)
式(1)和式(2)分別稱為速度更新公式和位置更新公式。式中,i為粒子的數目;d為粒子的維數;k為當前迭代次數;v,x為粒子的速度和位置;pbest為此粒子本身能得到的最優(yōu)解,稱之為個體極值;ɡbest為整個種群目前能找到的最優(yōu)解,稱為全局極值。當選擇PSO算法模型的影響系數時,需要對3個變量進行設置,分別是ω,c1,c2(慣性權重與學習因子)。
選擇圖1給出的天線作為優(yōu)化目標天線,依據文獻[12],選擇的慣性權重ω為0.729 8,學習因子c1=c2=1.496 18。天線的基板采用常用的FR4材料,其介電常數為4.4。粒子x的維度數d即想要優(yōu)化天線參數的個數。選擇dr,ɡ1,ɡ2三個參數作為參數優(yōu)化的目標,將3個參數組成的粒子作為待優(yōu)化的搜索粒子,2.5 GHz處的S11參數作為優(yōu)化的目標,優(yōu)化邏輯為2.5 GHz處的S11參數越低,越符合最優(yōu)解。式(3)給出了適應度值fitness的選擇邏輯:
fitness=min(S11(fi)),i=0,1,…,NP,
(3)
式中,NP為種群規(guī)模;S11(fi)為規(guī)定頻率處的S11值。
這3個參數的范圍以及其他參數的值如表1所示。值得一提的是,本文的算法在初始化過程中,為了在盡可能小的PSO情況下取到具有代表性的點,采用了正交法測試 (Orthogonal Arrays Testing Strategy,OATS)作為初始化種群的優(yōu)化方式[13],這種方式相比于傳統(tǒng)的隨機均勻分布能夠取得更有標志性的點,且相比于全組合的笛卡爾積能夠節(jié)省粒子的數目。采用的生成正交表形式為L16(43),即生成了16個粒子,3個參數代表了3個因素數,每個因素數的水平均為4,為了避免PSO飛出方向向邊界收斂,將初始化的點有意避開了邊界值。其水平劃分為dr(24,28,32,36),ɡ1(12,14,16,18),ɡ2(12,14,16,18)。正交表可以通過因素數與水平數查表得到,具體生成表因篇幅有限,本文不再贅述。
表1 微帶八木天線參數Tab.1 Microstrip Yagi-antenna parameters 單位:mm
Python-HFSS聯合仿真PSO算法如下所示。將在HFSS中錄制的py腳本文件中的非導包部分復制到偽代碼圖示中的第6行,即可在Python中完成HFSS程序的調用工作。
算法:Python-HFSS聯合仿真PSO算法程序內置參數設置:慣性參數ω,學習因子c1和c2;輸入:種群代數G;種群規(guī)模NP;粒子維度Dim;輸出:最佳適應度值fitness;取得最佳適應度值的粒子位置dr,ɡ1 和 ɡ2。1.g ← 1(initialization);2.初始化粒子位置:xki,Dim=rand()(xmax_bondary,Dim-xmin_bondary,Dim);3.初始化粒子速度:vki,Dim=rand()NP;4.while (g ≤ G)do5. fori=1 to NPdo6. f(xki,Dim) ← 代入HFSS中計算xki,Dim處的適應度值(S11參數值);7. 更新粒子i的局部最優(yōu)位置pbestki,Dim;8. 更新整個種群的全局最優(yōu)位置ɡbestkDim;9. fori=1 to NPdo10. 更新粒子的速度和位置;11. vk+1i,Dim=ωvki,Dim+c1rand()(pbestki,Dim-xki,Dim)+c2rand()(ɡbestkDim-xki,Dim);12. xk+1i,Dim=xki,Dim+vk+1i,Dim;13. g++;14.returnfitness,ɡbestGDim;
在聯合仿真算法運行時,Python與HFSS中的計算、預測或仿真的相關進程是按順序串行執(zhí)行的,Python軟件線程與HFSS軟件線程交替執(zhí)行,在一個軟件執(zhí)行時,另一個軟件處于線程等待狀態(tài)。由于輕量化的Python的CPU占有率比HFSS軟件仿真低,聯合仿真算法全時段的CPU占有率相應地也會更低,所以對計算機的配置與算力要求并不高。
使用16 GB內存,主頻2.9 GHz,處理器為i5-9400F的主機進行聯合仿真,該天線進行仿真計算的頻帶范圍為2~3 GHz,求解步長為0.05 GHz。收斂過程的部分代數的粒子分布如圖3所示,坐標軸由左至右分別代表dr,ɡ1,ɡ2的取值,可以清晰地看到粒子種群從均勻分布到逐漸收斂的優(yōu)化過程。初始化種群中的粒子的分布相當均勻,相比于隨機均勻分布,給粒子的搜索提供了極大的范圍,經過30代的收斂后,粒子聚集在了dr=32.40 mm,ɡ1=15.71 mm,ɡ2=16.02 mm附近。經測試,此處附近各參數誤差為0.5 mm的S11值均在-20 dB以下,以此參數設計的天線具有較好的魯棒性,在一定的加工誤差范圍內也可以正常工作。
天線的S11參數圖與增益方向圖如圖4所示,可以看到,在2.5 GHz處的S11參數已經達到了-43 dB左右,遠超過一般天線的設計要求。得益于微帶八木天線良好的方向性,其最大增益方向始終朝向引向陣子方向。天線參數設計的結果符合實際需要。
在算法效率方面,傳統(tǒng)PSO算法下的適應度值變化趨勢如圖5所示。圖5(a)反映了種群尋優(yōu)及收斂的情況,圖5(b)則能清晰地反映出粒子變化的規(guī)律,當整個種群的平均適應度值不再下降時,可以認為整個尋優(yōu)過程找到了最佳區(qū)域[14]。結合適應度值的變化規(guī)律以及粒子的分布狀況,算法在第5代到第10代就已經趨于收斂了,相當于只需要100次左右的仿真,就可以得到S11參數為-40 dB以下的不錯結果,這是蒙特卡羅方法[15]仿真無法做到的。在算法運行時間方面,Python中整個程序的執(zhí)行時間在30 s左右,HFSS仿真一次的時間約100 s,30代的仿真共需要48 030 s。
n
(a) 最佳適應度值變化趨勢
(a) 最佳適應度值變化趨勢
通過算法邏輯的構建,可以看到除了對其初始化過程進行OATS改進外,還可以對算法的各個過程根據需要進行針對性的改進,常見的改進有改進粒子的進化策略[16]、在取值邊界改變觸界邏輯[17]及采用小生境技術[18]等。本文引出一種改變粒子進化策略的FEPSO算法,其思想是將某些代數的適應度值預測過程由仿真變?yōu)轭A測,以節(jié)省仿真的時間[19],在天線優(yōu)化設計中能夠節(jié)省大量的時間。下面將給出簡略的公式推導過程。
首先,給出由式(1)和式(2)整理得到的新的位置更新式:
(4)
(5)
將這2個公式進一步整合,可以得到粒子xi的k+1代位置的表示:
(6)
(7)
由于不同天線目標值隨參數變化產生的峰值函數各有不同,收斂速度以及尋優(yōu)快慢也有所不同,式(7)中的β為特定天線下的修正系數,最佳適應度值前期變化迅速而后期趨于穩(wěn)定,預測適應度值算法的修正系數隨代數不斷降低。c為一個與具體天線有關的常數(為了展示方便,本文取1),由于天線參數的峰值函數略有不同,預測算法對適應度值的預測程度有整體的偏移,當其劣于計算適應度時,應當取略大于1的數,反之則小于1。于是,可以通過第k-1代與k代粒子i的適應度值推測出下一代的適應度值。使用改進FEPSO算法優(yōu)化天線的一般步驟如下:
① 在HFSS中對待優(yōu)化的天線進行建模。
② 確定包括基于OATS的種群位置、慣性因子、認知及社會因子等,完成PSO算法的初始化設置。
③ 將 HFSS 模型作為PSO的適應度值函數,以生成的種群初始值計算各個粒子的適應度值,依次按式(1)和式(2)更新粒子的速度和位置。
④ 使用預測適應度值的方式。在使用預測的代數,根據粒子的前代位置和適應度值等,利用式(7)預測下一代的粒子適應度值,同時通過式(6)更新粒子位置。
⑤ 使用仿真計算適應度值的方式。重復一次或多次步驟④后,再次以 HFSS 模型作為PSO的適應度函數計算每個粒子的適應度值,按式(1)和式(2)更新一次粒子的速度和位置,降低預測可能帶來的錯誤。
⑥ 重復步驟④和步驟⑤,直到達到迭代次數上限或滿足預設條件則結束算法。
在規(guī)定代數使用適應度值預測算法,可以節(jié)約在HFSS中仿真所消耗的時間,使用預測代數越多,節(jié)省的時間也越多,但相應地,連續(xù)多次的預測會使算法的精度下降。本文在第2代之后的偶數代使用預測方法來優(yōu)化本文圖1所示的微帶八木天線參數,參數設置和種群初始化方式依然與表1相同。在進行了同樣30代的仿真之后,最終得到的參數粒子收斂后聚集在dr=32.25 mm,ɡ1=15.58 mm,ɡ2=16.07 mm處,此處S11參數的最小值為-46 dB,與傳統(tǒng)PSO算法所得到的結果相差極小,這種微小的差異是由程序的隨機性導致的,程序優(yōu)化的目標是一個多峰函數,且由于預測算法中歐氏距離不可以為0,所以最終收斂的點不會完全重合。
FEPSO算法的最佳適應度值變化曲線與種群平均適應度值變化曲線如圖6所示??梢钥闯?,其適應度值變化曲線與傳統(tǒng)PSO相差不大,由于天線的修正系數β為默認值1(未修正),預測代數的種群平均適應度值會優(yōu)于真實值,收斂曲線呈現鋸齒狀,此時只需要將此值減少即可。而程序運行時間方面,FEPSO算法中第3代以后的偶數代計算均在Python中運行,即在30代的迭代中節(jié)約了共計14代HFSS中的仿真時間,整個程序運行用時約26 000 s,在優(yōu)化結果準確度基本不變的情況下,算法效率較改進前提升了40%以上。
在機器學習技術迅速發(fā)展的今天,計算機輔助設計方法與各學科的交叉結合已經是大勢所趨。而在天線設計愈加小型化、精細化的大趨勢之下,利用傳統(tǒng)的蒙特卡羅方法和全波仿真結合的策略所帶來的計算量的要求往往是快速迭代的商業(yè)應用和微波系統(tǒng)所無法承受的。本文以經典微帶貼片八木天線作為切入點,通過引入Python-HFSS聯合仿真的技術,詳細介紹了聯合仿真的細節(jié)以及原理,將算法思維與天線設計相結合起來,設計了一款傳統(tǒng)的微帶八木天線。本文研究了一種能夠預測適應度值的帶修正系數的FEPSO算法,通過對傳統(tǒng)PSO算法的改進,對相同天線的參數進行重新優(yōu)化,以更高的優(yōu)化效率得到了相似的效果,良好的優(yōu)化結果表明了該算法與天線結合的高效性,對于其他復雜天線的尺寸優(yōu)化同樣具有一定的泛用能力。
本文提出的 FEPSO 算法預測模型依賴于種群前代的收斂情況,在前期仿真次數不夠多、樣本量不夠大的情況下,隨著代數的增多,預測精度會有一定程度的下降。在之后的工作中,擬加入預測值精度判斷算法模塊,在精度不足的情況下模塊將調用HFSS進行仿真以保證整個算法的精度不會損失太大。