丁立超,黃 楓,潘 偉
(陸軍炮兵防空兵學院士官學校,遼寧沈陽 110867)
炮兵火力分配是研究如何合理地下達炮兵射擊任務,在最短時間內對敵方進行最大打擊的過程。在這一過程中,炮兵火力是一定的,彈藥補給是一定的,物質基礎是一定的,如何安排火力分配問題就變成約束條件下最優化問題[1]。
由于混沌優化算法的隨機性可以克服遺傳算法容易陷入局部最優解的問題,其遍歷性可以改善遺傳算法的全局搜索能力。所以,將混沌優化算法與遺傳算法相結合可以實現優勢互補,提高遺傳算法的局部搜索能力,避免出現局部最優解,有效避免遺傳算法“早熟”問題。文獻[2]系統論述了Logistic 映射性能,認為Logistic 映射對遺傳算法初始群體算法較為有效。文獻[3]對比了三種混沌映射,分別是Logistic 映射、Cat映射和Tent 映射,對它們的遍歷性、初值敏感性和Lyapunov指數等方面進行了分析,得出Cat映射更適合于為遺傳算法產生初始值。文獻[4]把混沌擾動加入到遺傳操作的交叉算子和變異算子中,提出了混沌交叉算子和混沌變異算子。文獻[5]提出了遺傳操作結束產生子代個體之后,在群體中添加混沌擾動,以期通過混沌擾動產生的個體中有更優秀的個體出現,加快尋優進化速度,減少尋優進化代數,提高遺傳算法的搜索效率。
本文正是基于上述研究,把混沌變量應用到遺傳算法中,構建了一種基于改進混沌遺傳算法的炮兵火力分配新方法。
炮兵火力分配有諸多考慮因素,根據任務不同分配原則也會存在差異,但就普遍情況來看,以下指標必須保證。(1)最理想的打擊效果;(2)最重要的射擊目標;(3)同一時刻只能打擊一個目標,即同一時刻每個火力單位只能攻擊一個目標;(4)不同時刻,相同的火力單位可以攻擊不同目標,即從第二輪攻擊之后的多輪攻擊可以更改打擊目標;(5)當敵少我多時,火力單元優先打擊價值高的目標;(6)以上假設無條件成立。
(1)目標分配變量:xij
假設需打擊目標數目為n,我方的火力單位數目為m,第i個炮兵火力單位對第j個需打擊目標記為xij,于是可以得到

(2)目標價值變量:vj
(3)火力單位相關矩陣為

矩陣中uij表示匹配系數。
(4)目標價值矩陣:Vij
Vij表示第i個炮兵火力單位對第j個需打擊目標的價值矩陣,Vij表示為

(5)射擊毀傷概率:fij

其中,0≤fij≤1,fij為第i個炮兵火力單位對第j個需打擊目標的毀傷概率。當fij為0時,則表明沒有打擊行為。
(6)最優火力選擇模型

在編碼方式上本文采用實數編碼[6]。傳統的二進制編碼,染色體的長度與解向量是一一對應的,一個基因對應一個解向量的分量。實數編碼在基因型空間和表現型空間中是一致的,可以避免編碼解碼帶來的計算誤差和時間浪費。另外,實數編碼在不犧牲計算精度的前提下擴大了編碼范圍,對于具有約束條件的優化問題最為有效。
遺傳算法來源于達爾文的生物進化論,本身對自然界和外部環境要求較低,一切最優化的評價標準和判斷方法只需要計算適應度函數就可以得出。因此,適應度函數的選擇恰當與否,決定了算法在優化時效率上的高低。對于經典遺傳算法的適應度函數,在搜索初期,對于突出個體無法進行,導致突出個體把整個搜索過程帶入局部最優而無法突破;在搜索后期,適應度函數高度一致,交叉和變異無力跳出局部范圍,導致算法陷入局部最優。這主要是由于適應度函數直接被選中作為目標函數,雖然它們能夠直接表現出對優化變量的適應性,但帶來上述缺陷也是必然的。
對于炮兵火力分配的染色體適應度函數,應該綜合考慮需打擊目標和現有火力單位的情況來確定,因此適應度函數選擇公式(6)中最優火力選擇模型作為目標函數,然后對目標函數進行如下改進,得到新的適應度函數,即

其中,F為改進后的適應度函數值,f(X)為目標函數值,λ為特定參數。
經典遺傳算法操作使用的是輪盤賭選擇,這種方式簡單而且容易提取適應度函數值高的個體。但這種方式也有缺點,就是當種群中出現突出個體時,極易使搜索陷入局部最優解,而且由于適應值函數值高的個體選擇性強,會更多地遺傳到下一代,于是在交叉操作時,兩個相同的個體容易產生無用的交叉操作,這樣便降低了搜索的效率。本文在輪盤賭選擇的基礎之上,提出了“輪盤賭+微變異”。所謂的“微變異”是指,將復制之后的個體,進行小概率的變異,變異方式為添加混沌擾動。這樣做在一定程度上減少了由于選擇操作帶來的“早熟”,同時也降低了相同個體之間交叉的概率。“微變異”由下式確定,即

其中,X′n為新的個體,Xn為當前個體,β為混沌擾動算子,α為人工退化的影響因子,size為種群規模,L為個體長度。
本文基于文獻[7],提出一種改進的自適應交叉算子,該算子滿足搜索算法的兩個趨勢。一是隨著進化進程的推進,算法需要快速收斂,全局搜索的需求降低,此時的交叉算子應逐漸減小;二是對于適應度函數值高于當代平均適應度函數值的個體(假設優化問題求最大值),說明該個體因優秀更需要被保留,此時的交叉算子也應該逐漸減小。因此,改進的自適應交叉算子既與進化的代數有關,又與相應代中的適應度函數值有關;既要增加個體的多樣性,又要利于快速搜索尋求到最優解。
本文改進的自適應交叉算子如下:

其中,f= max (fn,fn+1),交叉算子最大值、最小值分別為Pcmax= 0.9,Pcmin= 0.6,ρ=Pcmax-Pcmin。
交叉方式為

其中,γ為系統產生的(0,1)之間隨機數。
本文提出的改進自適應變異算子的思路與上述改進自適應交叉算子一致,也是既考慮了進化代數的影響,又考慮了個體適應度函數值的大小。與進化代數有關是指由于到了搜索后期,主要是防止陷入局部最優解,此時的變異算子應隨著代數的增加而逐漸加大,以便搜索算法能跳出局部最優。與個體適應度函數值有關是指當大于平均適應度函數值時,加大變異算子,這樣就增加了個體的多樣性,解決了算法后期搜索乏力的問題。基于經典實數遺傳算法中的變異算子,本文提出了改進自適應變異算子,即

其中,變異算子最大值、最小值分別為Pmmax= 0.01

參數變異方式為

其中,β為混沌系統產生的(0,1)之間隨機數。
經過遺傳操作之后,對種群中適應度函數值高的個體進行保留,對低的個體進一步進行混沌優化處理。這樣做可以增加種群基因多樣性,使種群不易陷入局部最優解。同時,添加混沌優化可能使個體更加接近最優解,也減少了進化的代數。本文采取的混沌優化迭代公式為Tent映射,該映射公式如下:

公式(13)中的ν在(1,2) 之間時,Tent 具有混沌效應,而且混沌效果隨著ν增加而增強,故本文將ν設置為2 - 10-5(對Tent 迭代公式計算10000 次,記錄每個點所在位置)。
混沌優化的添加方式如式(14)所示:

其中,Xmax,Xmin分別表示個體上限和下限。
以經典遺傳算法的流程為基本流程,對種群選擇操作后最好的個體進行混沌“微變異”優化,以防止早期就出現適應度函數值高的個體而導致整個種群形成局部最優,再以改進自適應交叉算子和變異算子進行遺傳操作,以防止算法進化初期停滯不前,進化后期卻陷入局部最優而快速收斂的缺點,為了實現混沌優化,此處引入種群早熟判定標志ε。
經計算第t代種群適應度函數的平均值為,其中為第t代種群中第i個個體的適應度函數值,N為種群規模。最優個體的適應值函數值為,所有大于的個體適應值函數值再求平均值得到。令

因此,ε小于某一閾值ε*時,種群中最大適應度個體與大于種群平均適應度個體的平均值接近,也就是說,個體的適應度值存在高度一致性,此時存在早熟風險。
算法具體實現流程如下:
Step1設定初始參數:種群規模N,混沌優化步長的調節參數φ,最大進化代數G;
Step2計算種群中每個個體的適應度函數值及對應的早熟判定標志ε;
Step3條件判斷,當ε≤ε*且進化代數大于最大進化代數的一半,則對種群進行混沌優化;否則,轉Step4執行。
Step4選擇操作:根據式(8)完成混沌“微變異”計算;
Step5根據式(9-10)計算改進自適應交叉概率和改進自適應變異概率;
Step6進行遺傳操作;
Step7判斷是否滿足終止條件,不滿足轉Step2;否則算法終止,返回當前最優解。
當滿足最大遺傳代數G或者適應度函數值小于一個適當小的正數e時,遺傳操作終止。
停止遺傳操作后,適應度函數值最大的染色體即為所求的解,其對應的即是炮兵火力分配優化方案。
假設需打擊目標數為6,我方炮兵火力單位為4。需打擊的6個目標分別為支撐點(j1,j2)、指揮所(j3)、輕型坦克(j4)、地面雷達站(j5),車載自行火炮(j6)。根據目標的重要程度,車載自行火炮需要3 個火力單位進行打擊,其他需打擊目標只需要1個火力單位。
利用文獻[8]提供的數據,可以得到表1和表2。

表1 目標價值系數表Tab.1 Target value coefficient table

表2 火力目標相關矩陣Tab.2 Fire target correlation matrix
表1-2 中i,j分別表示我方火力單位和敵方目標。根據公式V(m×n)=U(m×n)· diag(Vt),計 算 出 目 標 價 值矩陣V(m×n)。
根據式(5)計算可得到表3。

表3 毀傷概率矩陣Tab.3 Damage probability matrix
其中,i,j分別表示我方火力單位和敵方目標。
采用本文提出的混沌遺傳算法,經過計算得到如下仿真結果,如表4所示。

表4 仿真結果Tab.4 Simulation result
從仿真結果可以看出,炮兵部隊要完成此次任務,需分兩輪進行攻擊,第一輪攻擊對象為目標j1和目標j6,第二輪攻擊對象為目標j2、j3、j4、j5。該結果是綜合了目標的性質、目標價值和毀傷概率等綜合因素的最優結果,與實際情況相符,證明了算法的有效性。
炮兵火力分配是一種約束條件下的最優化求解過程,是炮兵戰術行動的核心部分,關系到炮兵能否完成賦予的打擊任務。雖然經過多年發展,方法眾多,但各種方法各有利弊,都無法保證可以得到最優方案。基于改進混沌遺傳算法的炮兵火力分配模型,既利用了混沌算子的隨機性和遍歷性,又利用了遺傳算法的全局搜索能力,克服經典遺傳算法易陷入局部最優解的局限性,為解決炮兵火力分配問題提供新思路,對于炮兵作戰的火力規劃,快速得到較優的火力分配方案,提供了可靠的手段。