本發(fā)明涉及無(wú)人機(jī)(unmannedaerialvehicle,uav)協(xié)同任務(wù)分配領(lǐng)域,尤其是一種具有時(shí)間耦合約束下的多無(wú)人機(jī)任務(wù)分配方法。
背景技術(shù):
多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配在科學(xué)研究與工程應(yīng)用中都處于非常重要的地位。傳統(tǒng)的引力搜索算法在解決此類問題中具備突出的全局尋優(yōu)能力但也存在很多缺陷,例如容易陷入局部最優(yōu),全局最優(yōu)粒子的質(zhì)量較低。引力搜索算法(gravitationsearchalgorithm,gsa)其本質(zhì)是模擬自然界中的萬(wàn)有引力現(xiàn)象,并將其演化成隨機(jī)搜索最優(yōu)解的過程。
由于在多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配中,全局最優(yōu)粒子的計(jì)算與搜索(引導(dǎo)粒子的選取),對(duì)多目標(biāo)優(yōu)化中解的收斂性與分布性具有重要影響,具備突出的全局尋優(yōu)能力的進(jìn)化算法被應(yīng)用到多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配中。目前發(fā)展比較成熟的多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配算法主要包括基于引力搜索算法gsa的多任務(wù)分配和基于粒子群算法(particleswarmoptimization,pso)的多任務(wù)分配。由于引力搜索算法gsa具備兩個(gè)特殊的性質(zhì):(1)記憶性-用來(lái)存儲(chǔ)全局最優(yōu)粒子與個(gè)體歷史最優(yōu)值;(2)信息交流性-粒子之間依據(jù)記憶特性相互分享最優(yōu)位置的信息,使得引力搜索算法在多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配領(lǐng)域表現(xiàn)出一定的實(shí)用性。
作為一種新型進(jìn)化算法,引力搜索算法已經(jīng)成功應(yīng)用到單目標(biāo)優(yōu)化領(lǐng)域,其根本思想是基于牛頓的萬(wàn)有引力定律:“在宇宙間,每一個(gè)粒子由于萬(wàn)有引力的作用而彼此相互吸引,引力的大小與粒子的質(zhì)量成正比,與他們之間的距離成反比”,所以,通過粒子間的相互吸引,引力搜索算法保證了所有粒子向著質(zhì)量最大的粒子移動(dòng)。
但是,當(dāng)引力搜索算法運(yùn)用到多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配中時(shí),其自身的一些缺點(diǎn)導(dǎo)致該算法中全局最優(yōu)粒子的質(zhì)量較低,時(shí)序耦合任務(wù)分配的效果還有待提高。首先,在引力搜索算法中,只有當(dāng)前的位置信息在迭代更新過程中起作用,即該算法是一種缺乏記憶性的算法,這就導(dǎo)致種群上下代之間沒有信息交流,容易陷入早熟收斂。另一方面,由于引力搜索算法中粒子速度較大,全部都向質(zhì)量較大的粒子移動(dòng),收斂非常迅速,所以種群的多樣性降低快速,即多樣性迅速流失,不能保證非支配解的多樣性與分布性。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明基于上述引力搜索算法在多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配的缺點(diǎn),對(duì)引力搜索算法進(jìn)行相關(guān)改進(jìn),包括編碼與解碼設(shè)計(jì)、種群初始化以及個(gè)體更新方式的改進(jìn),提出了基于遺傳算子的離散引力搜索算法(gravitationsearchalgorithm-geneticalgorithm,gsa-ga),通過算例仿真驗(yàn)證了算法的有效性,并采用蒙特卡洛仿真方法與離散粒子群算法進(jìn)行對(duì)比,仿真結(jié)果表明gsa-ga算法具備更好的全局收斂性和更快的收斂速度。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案的詳細(xì)步驟如下:
步驟一:構(gòu)建時(shí)間耦合約束下的多無(wú)人機(jī)協(xié)同任務(wù)分配模型
對(duì)多無(wú)人機(jī)協(xié)同執(zhí)行壓制敵方防空系統(tǒng)(suppressionofenemyairdefence,sead)任務(wù)分配問題做出定義,并對(duì)適應(yīng)度函數(shù)和任務(wù)約束進(jìn)行說(shuō)明,具體定義如下:
定義1:設(shè)u={1,2,3,...i...,m}表示無(wú)人機(jī)集合,其中元素i=1,2,3,…,m,表示第i架無(wú)人機(jī),m表示無(wú)人機(jī)的數(shù)量;
定義2:t={1,2,3,...j...,n}表示目標(biāo)集合,其中元素j=1,2,3,…,n,表示第j個(gè)目標(biāo),n表示目標(biāo)的數(shù)量;
定義3:設(shè)task={t11,t12,t21.t22,...,tjh,...,tn1,tn2}表示任務(wù)集合,其中tjh表示第j個(gè)目標(biāo)上的第h種任務(wù),h=1,2,當(dāng)h=1表示打擊任務(wù),當(dāng)h=2表示毀傷評(píng)估任務(wù);
定義4:ujh表示能夠執(zhí)行任務(wù)tjh的無(wú)人機(jī)集合;
定義5:tasksequencei={task1>task2>task3>...>taskl>...taskni}表示一共i架無(wú)人機(jī)的任務(wù)序列,其中元素taskl∈task,l=1,2,3,…,ni,ni表示分配給第i架無(wú)人機(jī)的任務(wù)數(shù)量;
定義6:routei={upi,taskp1,taskp2,...,taskpk,...,taskpni,bp}表示第i架無(wú)人機(jī)的路徑序列,upi為第i架無(wú)人機(jī)的初始位置,taskpk為任務(wù)序列tasksequencei表示第k個(gè)任務(wù)的位置,k=1,2,3,…,ni,bp為基地的位置;
定義7:voyi表示第i架無(wú)人機(jī)的航程;
定義8:voymaxi表示第i架無(wú)人機(jī)的最大航程;
定義9:ri表示第i架無(wú)人機(jī)的武器載荷數(shù)量;
定義10:
定義11:stg,g∈task,表示任務(wù)g的開始被執(zhí)行時(shí)刻;
定義12:etg,g∈task,表示任務(wù)g的完成時(shí)刻;
定義13:inter_min表示打擊任務(wù)和毀傷評(píng)估任務(wù)間的最小時(shí)間間隔;
定義14:inter_max表示打擊任務(wù)和毀傷評(píng)估任務(wù)間的最大時(shí)間間隔;
定義15:定義二維決策變量
定義16:其中g(shù)(t)表示t時(shí)刻的引力常數(shù),g(t)初始值為9.8,計(jì)算公式為:
其中,t表示最大迭代次數(shù),g0和α為固定常數(shù);
定義17:best和worst分別表示在迭代中g(shù)sa個(gè)體的最大適應(yīng)度函數(shù)值和最小適應(yīng)度函數(shù)值,m表示gsa個(gè)體的質(zhì)量,a表示gsa個(gè)體的加速度;
1.構(gòu)建適應(yīng)度函數(shù)
本發(fā)明中選擇無(wú)人機(jī)最大航程最短作為任務(wù)規(guī)劃指標(biāo),即
f為本發(fā)明構(gòu)造的適應(yīng)度函數(shù);
在定義4的前提下,以勻速運(yùn)動(dòng)規(guī)律計(jì)算無(wú)人機(jī)的航程,則第i架無(wú)人機(jī)的航程為:
式(2)中,
式(3)中,xbp、ybp、
2.任務(wù)約束
本發(fā)明任務(wù)分配問題中的約束條件如下:
(1)每個(gè)任務(wù)都必須被執(zhí)行:
(2)每個(gè)任務(wù)只能被執(zhí)行一次:
(3)每架無(wú)人機(jī)至少被分配一個(gè)任務(wù),即:
(4)時(shí)序約束
公式(8)中
(5)航程約束
voyi≤voymaxi(9)
(6)武器載荷資源約束
(7)打擊任務(wù)和毀傷評(píng)估任務(wù)的時(shí)間間隔約束
ettaskj2+inter_min≤sttaskj3(11)
ettaskj2+inter_max≥sttaskj3(12)
步驟二:基于遺傳算子的引力搜索算法設(shè)計(jì)
步驟2.1:個(gè)體離散化編碼
本發(fā)明采用分段編碼方式對(duì)引力搜索算法中的個(gè)體進(jìn)行編碼,以一個(gè)1×4n維向量表示引力搜索算法的個(gè)體;
個(gè)體編碼分為兩部分:任務(wù)分配(taskallocation,ta))部分和任務(wù)排序(tasksequencing,ts)部分;
定義18:設(shè)tg=[tats]為一個(gè)1×4n維向量,表示一個(gè)引力搜索個(gè)體,tg分為兩部分,其中ta表示任務(wù)分配部分,為2n維數(shù)組,ts表示任務(wù)排序部分,為2n維數(shù)組;
(1)任務(wù)分配部分:該部分表示n個(gè)目標(biāo)共有2n個(gè)任務(wù)的分配情況,即n個(gè)目標(biāo)的2n個(gè)任務(wù)如何分配給無(wú)人機(jī)i,共有2n個(gè)元素,分別代表著2n個(gè)任務(wù),2n個(gè)元素從左往右,依次對(duì)應(yīng)任務(wù)t11、t12、t21、...、tn1、tn2,例如t21表示無(wú)人機(jī)完成第二個(gè)目標(biāo)的打擊任務(wù),t22表示無(wú)人機(jī)完成第二個(gè)目標(biāo)的毀傷評(píng)估任務(wù);
(2)任務(wù)排序部分:該部分表示所有任務(wù)的排序情況,該部分2n個(gè)元素都有目標(biāo)的編號(hào)編碼,分別代表著2n個(gè)任務(wù),2n個(gè)元素從左往右依次對(duì)應(yīng)目標(biāo)任務(wù)t11、t12、t21、...、tn1、tn2,每個(gè)目標(biāo)第一次出現(xiàn)即為打擊任務(wù),第二次出現(xiàn)即為毀傷評(píng)估任務(wù);
步驟2.2:種群初始化
本發(fā)明采用隨機(jī)產(chǎn)生的方式對(duì)個(gè)體種群進(jìn)行初始化,具體方法為使用matlab仿真軟件將一組自己設(shè)定的種群在任務(wù)約束條件下循環(huán)得出一組滿足任務(wù)約束條件的初始種群,以隨機(jī)初始化的方法對(duì)每個(gè)個(gè)體進(jìn)行初始化編碼,對(duì)于任務(wù)分配部分,每一位任務(wù)分配元素代表一個(gè)具體的任務(wù)tjh,隨機(jī)從能夠執(zhí)行任務(wù)tjh的無(wú)人機(jī)集合ujh中選取一個(gè)元素作為該位的取值,對(duì)于任務(wù)排序部分,以兩組目標(biāo)序號(hào)的隨機(jī)排序表示該部分的位置,個(gè)體的速度初始化為0;
步驟2.3:個(gè)體解碼
在任務(wù)分配部分,依次讀取每一位元素的值vajh,其中j=1,2,…,n,h=1,2,vajh∈u,表示第vajh架無(wú)人機(jī),并將任務(wù)tjh添加到第vajh架無(wú)人機(jī)的任務(wù)集中,最終得到各無(wú)人機(jī)的任務(wù)分配集合;
在任務(wù)排序部分,每一個(gè)元素的值vsd∈t,d=1,2,…,2n,表示第vsd個(gè)目標(biāo),每個(gè)目標(biāo)有兩種任務(wù),因而每個(gè)目標(biāo)會(huì)出現(xiàn)2次,第一次表示該目標(biāo)的攻擊任務(wù),即代表任務(wù)
綜上,個(gè)體解碼的具體步驟如下:
step1:對(duì)任務(wù)分配部分進(jìn)行解碼
(1)初始化各無(wú)人機(jī)的任務(wù)集合為空集,即
(2)vak1=tal(2k-1),其中tal為目標(biāo)數(shù)量,i=vak1,將任務(wù)tk1加入tasksequencei中;
(3)vak2=tal(2k),i=vak2,將任務(wù)tk2加入tasksequencei中;
(4)k=k+1,若k≤n,轉(zhuǎn)到步驟(2);否則結(jié)束;
step2:對(duì)任務(wù)排序部分進(jìn)行解碼
(a)從左至右依次讀取任務(wù)排序部分的第k位上的目標(biāo)j的值,k=1,2,…,2n,每個(gè)j代表目標(biāo)tj上的一個(gè)任務(wù),若j是第h次出現(xiàn),則表示taskjh,當(dāng)k=2n得到所有任務(wù)的排列順序tasks;
(b)將tasksequencei根據(jù)tasks重新排列任務(wù)順序:當(dāng)taskjh和taskkl都在tasksequencei中時(shí),則以從左到右的順序來(lái)比較;
至此,解碼結(jié)束,得到各無(wú)人機(jī)的任務(wù)執(zhí)行新序列tasksequencej;
步驟2.4:適應(yīng)度函數(shù)計(jì)算適應(yīng)度
依據(jù)步驟一中的適應(yīng)度函數(shù)進(jìn)行計(jì)算,即
f為本發(fā)明構(gòu)造的適應(yīng)度函數(shù);
步驟2.5:更新種群的全局最優(yōu)、局部最優(yōu)和局部最差
根據(jù)步驟2.4中求得的種群中各個(gè)粒子的適應(yīng)度函數(shù)值,更新種群的全局最優(yōu)、局部最優(yōu)和局部最差;
步驟2.6:個(gè)體更新
個(gè)體i在第l維獲得的加速度等于其受到合力與其自身慣性質(zhì)量的比值,計(jì)算公式為:
式(13)中mii(t)為個(gè)體i在t時(shí)刻的慣性質(zhì)量;fil(t)表示個(gè)體i在t時(shí)刻萬(wàn)有引力的大小,
每一次更新過程中,個(gè)體i根據(jù)引力產(chǎn)生的加速度更新自身的速度和位置,更新方式如公式(14)所示:
對(duì)更新后的個(gè)體位置
判斷整個(gè)種群的迭代次數(shù)是否達(dá)到設(shè)定的最大迭代次數(shù),若是,則結(jié)束流程;否則返回步驟2.3中的step1繼續(xù)循環(huán)求解。
對(duì)于步驟2.6的更新,本發(fā)明引入遺傳算法的交叉和變異操作進(jìn)行更新,所述的更新步驟為:
a)交叉:本發(fā)明利用pox交叉方法對(duì)個(gè)體的任務(wù)排序部分進(jìn)行交叉操作,所述的交叉操作每一次只產(chǎn)生一個(gè)新個(gè)體,具體步驟如下:
step1:從目標(biāo)集{t1,t2,…,tn}隨機(jī)抽取一個(gè)目標(biāo)子集tset;
step2:選擇需要進(jìn)行交叉操作的個(gè)體x1和x2,若x1的適應(yīng)度函數(shù)值大于x2的適應(yīng)度函數(shù)值,則將x1中包含在目標(biāo)子集tset中的目標(biāo)復(fù)制到新的個(gè)體c中,x1保持位置和順序不變;
setp3:將x2中不包含在tset中的目標(biāo)同樣復(fù)制到新的個(gè)體c中,保持個(gè)體x1和x2順序不變;
step4:若新個(gè)體c的適應(yīng)度函數(shù)值大于x2,則保存新個(gè)體c,并替代原來(lái)的個(gè)體x2;
b)變異:本發(fā)明采用基于鄰域搜索的變異方法,其具體操作步驟如下:
step1:在個(gè)體的任務(wù)排序部分隨機(jī)選擇r個(gè)位,并生成個(gè)體排序的所有鄰域;
step2:計(jì)算任務(wù)元素所有鄰域的適應(yīng)度函數(shù)值,選出適應(yīng)度函數(shù)值最大的個(gè)體作為子代,并代替原來(lái)的個(gè)體。
本發(fā)明的有益效果在于采用了在引力搜索算法中增加了遺傳算子,具有較好的普遍適用性,通過長(zhǎng)時(shí)間多次數(shù)的仿真試驗(yàn)和數(shù)據(jù)統(tǒng)計(jì)構(gòu)建更為完善的數(shù)據(jù)庫(kù),使得模型更完善;與離散粒子群算法進(jìn)行對(duì)比,混合引力遺傳搜索算法(gsa-ga)能夠更快地收斂,尋優(yōu)結(jié)果更優(yōu),迭代過程簡(jiǎn)短,收斂速度快。
附圖說(shuō)明
圖1是本發(fā)明的分段編碼示意圖。
圖2是本發(fā)明的任務(wù)分配部分編碼示意圖。
圖3是本發(fā)明的任務(wù)排序部分編碼示意圖。
圖4是本發(fā)明的完整個(gè)體編碼示意圖。
圖5是本發(fā)明的pox交叉操作示意圖,其中x1和x2為進(jìn)行交叉操作的兩個(gè)個(gè)體元素,c為交叉操作所得的新個(gè)體元素。
圖6是本發(fā)明的gsa-ga算法流程圖。
圖7是本發(fā)明的戰(zhàn)場(chǎng)態(tài)勢(shì)圖。
圖8是本發(fā)明的任務(wù)分配甘特圖。
圖9是本發(fā)明的gsa-ga收斂曲線。
圖10是本發(fā)明的gsa-ga和dpso的收斂曲線,其中,dpso為離散粒子群算法。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。
本發(fā)明要解決的技術(shù)問題是提供一種基于改進(jìn)引力搜索算法的多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配問題,它能夠有效避免多目標(biāo)優(yōu)化陷入局部極值,顯著改善引力搜索算法運(yùn)用到多無(wú)人機(jī)協(xié)同時(shí)序耦合任務(wù)分配領(lǐng)域時(shí)非支配解的收斂性、多樣性與分布性。
本發(fā)明提供一種設(shè)計(jì)方法,根據(jù)已經(jīng)獲得的情報(bào)信息、任務(wù)要求以及地形、氣象環(huán)境等因素,對(duì)多無(wú)人機(jī)制定任務(wù)規(guī)劃,也就是預(yù)先規(guī)劃。同時(shí)以多無(wú)人機(jī)協(xié)同執(zhí)行sead任務(wù)為背景,要求對(duì)任務(wù)區(qū)域中每個(gè)目標(biāo)依次執(zhí)行打擊和毀傷評(píng)估兩種子任務(wù),重點(diǎn)關(guān)注任務(wù)間的時(shí)間耦合關(guān)系,對(duì)時(shí)間耦合約束下的多無(wú)人機(jī)執(zhí)行打擊-毀傷評(píng)估任務(wù)分配問題進(jìn)行數(shù)學(xué)建模。本發(fā)明改進(jìn)的混合離散引力遺傳搜索算法(gsa-ga)是在引力搜索算法(gsa)的基礎(chǔ)上引入了遺傳算法(ga)。
步驟一:構(gòu)建時(shí)間耦合約束下的多無(wú)人機(jī)協(xié)同任務(wù)分配模型
對(duì)多無(wú)人機(jī)協(xié)同執(zhí)行壓制敵方防空系統(tǒng)(suppressionofenemyairdefence,sead)任務(wù)分配問題做出定義,并對(duì)適應(yīng)度函數(shù)和任務(wù)約束進(jìn)行說(shuō)明,具體定義如下:
定義1:設(shè)u={1,2,3,...i...,m}表示無(wú)人機(jī)集合,其中元素i=1,2,3,…,m,表示第i架無(wú)人機(jī),m表示無(wú)人機(jī)的數(shù)量;
定義2:t={1,2,3,...j...,n}表示目標(biāo)集合,其中元素j=1,2,3,…,n,表示第j個(gè)目標(biāo),n表示目標(biāo)的數(shù)量;
定義3:設(shè)task={t11,t12,t21.t22,...,tjh,...,tn1,tn2}表示任務(wù)集合,其中tjh表示第j個(gè)目標(biāo)上的第h種任務(wù),h=1,2,當(dāng)h=1表示打擊任務(wù),當(dāng)h=2表示毀傷評(píng)估任務(wù);
定義4:ujh表示能夠執(zhí)行任務(wù)tjh的無(wú)人機(jī)集合;
定義5:tasksequencei={task1>task2>task3>...>taskl>...taskni}表示一共i架無(wú)人機(jī)的任務(wù)序列,其中元素taskl∈task,l=1,2,3,…,ni,ni表示分配給第i架無(wú)人機(jī)的任務(wù)數(shù)量;
定義6:routei={upi,taskp1,taskp2,...,taskpk,...,taskpni,bp}表示第i架無(wú)人機(jī)的路徑序列,upi為第i架無(wú)人機(jī)的初始位置,taskpk為任務(wù)序列tasksequencei表示第k個(gè)任務(wù)的位置,k=1,2,3,…,ni,bp為基地的位置;
定義7:voyi表示第i架無(wú)人機(jī)的航程;
定義8:voymaxi表示第i架無(wú)人機(jī)的最大航程;
定義9:ri表示第i架無(wú)人機(jī)的武器載荷數(shù)量;
定義10:tijh表示第i架無(wú)人機(jī)執(zhí)行任務(wù)tjh消耗的執(zhí)行時(shí)間;
定義11:stg,g∈task,表示任務(wù)g的開始被執(zhí)行時(shí)刻;
定義12:etg,g∈task,表示任務(wù)g的完成時(shí)刻;
定義13:inter_min表示打擊任務(wù)和毀傷評(píng)估任務(wù)間的最小時(shí)間間隔;
定義14:inter_max表示打擊任務(wù)和毀傷評(píng)估任務(wù)間的最大時(shí)間間隔;
定義15:定義二維決策變量
定義16:其中g(shù)(t)表示t時(shí)刻的引力常數(shù),g(t)的初始值為9.8,計(jì)算公式為:
其中,t表示最大迭代次數(shù),g0和α為固定常數(shù),g(t)隨著時(shí)間的推移,迭代步數(shù)的增加不斷地減小。
定義17:best和worst分別表示在迭代中g(shù)sa個(gè)體的最大適應(yīng)度函數(shù)值和最小適應(yīng)度函數(shù)值,m表示gsa個(gè)體的質(zhì)量,a表示gsa個(gè)體的加速度;
1.構(gòu)建適應(yīng)度函數(shù)
本發(fā)明中的無(wú)人機(jī)在執(zhí)行任務(wù)時(shí)候不考慮飛行高度的變化,其速度始終不變,因而能夠通過s=v*t方便地將時(shí)間代價(jià)轉(zhuǎn)化為航程代價(jià),選擇無(wú)人機(jī)最大航程最短作為任務(wù)規(guī)劃指標(biāo),該指標(biāo)是將各無(wú)人機(jī)中的最大航程最小化,引導(dǎo)著任務(wù)分配策略朝著最小化每架無(wú)人機(jī)航程的方向進(jìn)行,本發(fā)明中選擇無(wú)人機(jī)最大航程最短作為任務(wù)規(guī)劃指標(biāo),即
f為本發(fā)明構(gòu)造的適應(yīng)度函數(shù);
根據(jù)無(wú)人機(jī)執(zhí)行sead任務(wù)過程中,可能會(huì)因?yàn)闀r(shí)間約束的關(guān)系導(dǎo)致無(wú)人機(jī)到達(dá)任務(wù)執(zhí)行點(diǎn)而不能立刻執(zhí)行任務(wù),如轟炸、毀傷評(píng)估等,這時(shí)需要無(wú)人機(jī)在目標(biāo)上空盤旋等待,直到滿足時(shí)間要求方可執(zhí)行,在這過程中,無(wú)人機(jī)由于盤旋等待而沒有離開目標(biāo)點(diǎn)去執(zhí)行其他任務(wù),但是其航程仍在增加??紤]到這種情形,在任務(wù)規(guī)劃過程中計(jì)算無(wú)人機(jī)的航程時(shí),僅僅根據(jù)無(wú)人機(jī)的路徑序列,對(duì)航路點(diǎn)間的距離進(jìn)行計(jì)算是不夠的。
在定義4的前提下,以勻速運(yùn)動(dòng)規(guī)律計(jì)算無(wú)人機(jī)的航程,則第i架無(wú)人機(jī)的航程為:
式(2)中,
式(3)中,xbp、ybp、
2.任務(wù)約束
本發(fā)明任務(wù)分配問題中的約束條件如下:
(1)每個(gè)任務(wù)都必須被執(zhí)行:
(2)每個(gè)任務(wù)只能被執(zhí)行一次:
(3)每架無(wú)人機(jī)至少被分配一個(gè)任務(wù),即:
(4)時(shí)序約束
公式(8)中
(5)航程約束
voyi≤voymaxi(9)
(6)武器載荷資源約束
(7)打擊任務(wù)和毀傷評(píng)估任務(wù)的時(shí)間間隔約束
ettaskj2+inter_min≤sttaskj3(11)
ettaskj2+inter_max≥sttaskj3(12)
步驟二:基于遺傳算子的引力搜索算法設(shè)計(jì)
步驟2.1:個(gè)體離散化編碼
在求解多無(wú)人機(jī)協(xié)同sead任務(wù)分配問題的引力搜索算法中,一個(gè)個(gè)體代表著一種分配方案,這里有兩個(gè)方面的因素需要考慮:(1)選擇哪些無(wú)人機(jī)執(zhí)行哪些任務(wù),即任務(wù)的分配情況;(2)各無(wú)人機(jī)以怎樣的順序去執(zhí)行分配到自身的任務(wù),即任務(wù)的排序情況。
本發(fā)明采用分段編碼方式對(duì)引力搜索算法中的個(gè)體進(jìn)行編碼,以一個(gè)1×4n維向量表示引力搜索算法的個(gè)體;
個(gè)體編碼分為兩部分:任務(wù)分配(taskallocation,ta)部分和任務(wù)排序(tasksequencing,ts)部分,如圖1所示。
定義18:設(shè)tg=[tats]為一個(gè)1×4n維向量,表示一個(gè)引力搜索個(gè)體,tg分為兩部分,其中ta表示任務(wù)分配部分,為2n維數(shù)組,ts表示任務(wù)排序部分,為2n維數(shù)組;
(1)任務(wù)分配部分:該部分表示n個(gè)目標(biāo)共有2n個(gè)任務(wù)的分配情況,即n個(gè)目標(biāo)的2n個(gè)任務(wù)如何分配給無(wú)人機(jī)i,共有2n個(gè)元素,分別代表著2n個(gè)任務(wù),2n個(gè)元素從左往右,依次對(duì)應(yīng)任務(wù)t11、t12、t21、...、tn1、tn2,例如t21表示無(wú)人機(jī)完成第二個(gè)目標(biāo)的打擊任務(wù),t22表示無(wú)人機(jī)完成第二個(gè)目標(biāo)的毀傷評(píng)估任務(wù);每個(gè)元素的取值為當(dāng)前元素對(duì)應(yīng)任務(wù)的可執(zhí)行無(wú)人機(jī)集合中的元素,這保證了各任務(wù)被分配給能夠執(zhí)行該任務(wù)的無(wú)人機(jī),如圖2所示。
(2)任務(wù)排序部分:該部分表示所有任務(wù)的排序情況,該部分2n個(gè)元素,每個(gè)元素都有目標(biāo)的編號(hào)編碼,分別代表著2n個(gè)任務(wù),2n個(gè)元素從左往右依次對(duì)應(yīng)目標(biāo)任務(wù)t11、t12、t21、...、tn1、tn2,每個(gè)目標(biāo)第一次出現(xiàn)即為打擊任務(wù),第二次出現(xiàn)即為毀傷評(píng)估任務(wù);
例如在定義3中t22即表示第二個(gè)目標(biāo)的第二個(gè)任務(wù)(毀傷評(píng)估任務(wù)),為目標(biāo)的編號(hào)編碼,假設(shè)每個(gè)目標(biāo)需要完成2次任務(wù)即第一次是打擊任務(wù)第二次是毀傷評(píng)估任務(wù),在本發(fā)明中為了使問題適當(dāng)簡(jiǎn)化,故簡(jiǎn)化假設(shè)每個(gè)目標(biāo)只需完成兩次任務(wù);如此編碼可保證攻擊任務(wù)和毀傷評(píng)估任務(wù)時(shí)序耦合約束,如圖3所示。
結(jié)合任務(wù)分配(ta)和任務(wù)排序(ts)兩個(gè)部分,得到個(gè)體的完整編碼,如圖4所示。
步驟2.2:種群初始化
本發(fā)明采用隨機(jī)產(chǎn)生的方式對(duì)個(gè)體種群進(jìn)行初始化,具體方法是使用matlab仿真軟件將一組自己設(shè)定的種群在任務(wù)約束條件下循環(huán)得出一組滿足任務(wù)約束條件的初始種群,以隨機(jī)初始化的方法對(duì)每個(gè)個(gè)體進(jìn)行初始化編碼,對(duì)于任務(wù)分配部分,每一位任務(wù)分配元素代表一個(gè)具體的任務(wù)tjh,隨機(jī)從能夠執(zhí)行任務(wù)tjh的無(wú)人機(jī)集合ujh中選取一個(gè)元素作為該位的取值,對(duì)于任務(wù)排序部分,以兩組目標(biāo)序號(hào)的隨機(jī)排序表示該部分的位置,個(gè)體的速度初始化為0;
步驟2.3:個(gè)體解碼
個(gè)體解碼運(yùn)算是在編碼的基礎(chǔ)上,采用和編碼相反的思維,將編碼得到的數(shù)據(jù)通過一定的方式轉(zhuǎn)換成所研究問題的解決方案,進(jìn)而可以通過解碼得到的數(shù)據(jù)計(jì)算出當(dāng)前方案的適應(yīng)度值,即適應(yīng)度函數(shù)值,并通過適應(yīng)度函數(shù)的數(shù)值大小評(píng)判當(dāng)前解決方案的優(yōu)劣。
在任務(wù)分配部分,依次讀取每一位元素的值vajh,其中j=1,2,…,n,h=1,2,vajh∈u,表示第vajh架無(wú)人機(jī),并將任務(wù)tjh添加到第vajh架無(wú)人機(jī)的任務(wù)集中,最終得到各無(wú)人機(jī)的任務(wù)分配集合;
在任務(wù)排序部分,每一個(gè)元素的值vsd∈t,d=1,2,…,2n,表示第vsd個(gè)目標(biāo),每個(gè)目標(biāo)有兩種任務(wù),因而每個(gè)目標(biāo)會(huì)出現(xiàn)2次,第一次表示該目標(biāo)的攻擊任務(wù),即代表任務(wù)
綜上,個(gè)體解碼的具體步驟如下:
step1:對(duì)任務(wù)分配部分進(jìn)行解碼
(1)初始化各無(wú)人機(jī)的任務(wù)集合為空集,即
(2)vak1=tal(2k-1),其中tal為目標(biāo)數(shù)量,i=vak1,將任務(wù)tk1加入tasksequencei中;
(3)vak2=tal(2k),i=vak2,將任務(wù)tk2加入tasksequencei中;
(4)k=k+1,若k≤n,轉(zhuǎn)到步驟(2);否則結(jié)束;
step2:對(duì)任務(wù)排序部分進(jìn)行解碼
(a)從左至右依次讀取任務(wù)排序部分的第k位上的目標(biāo)j的值,k=1,2,…,2n,每個(gè)j代表目標(biāo)tj上的一個(gè)任務(wù),若j是第h次出現(xiàn),則表示taskjm,當(dāng)k=2n得到所有任務(wù)的排列順序tasks;
(b)將tasksequencei根據(jù)tasks重新排列任務(wù)順序:當(dāng)taskjh和taskkl都在tasksequencei中時(shí),則以從左到右的順序來(lái)比較;
至此,解碼結(jié)束,得到各無(wú)人機(jī)的任務(wù)執(zhí)行新序列tasksequencej;
步驟2.4:適應(yīng)度函數(shù)計(jì)算適應(yīng)度
依據(jù)步驟一中的適應(yīng)度函數(shù)進(jìn)行計(jì)算,即
f為本發(fā)明構(gòu)造的適應(yīng)度函數(shù);
步驟2.5:更新種群的全局最優(yōu)、局部最優(yōu)和局部最差
根據(jù)步驟2.4中求得的種群中各個(gè)粒子的適應(yīng)度函數(shù)值,更新種群的全局最優(yōu)、局部最優(yōu)和局部最差;
步驟2.6:個(gè)體更新
當(dāng)個(gè)體受到其它個(gè)體的引力作用后會(huì)產(chǎn)生相應(yīng)的加速度,個(gè)體i在第l維獲得的加速度等于其受到合力與其自身慣性質(zhì)量的比值,計(jì)算公式為:
式(13)中mii(t)為個(gè)體i在t時(shí)刻的慣性質(zhì)量;fil(t)表示個(gè)體i在t時(shí)刻萬(wàn)有引力的大小,
每一次更新過程中,個(gè)體i根據(jù)引力產(chǎn)生的加速度更新自身的速度和位置,更新方式如公式(14)所示:
對(duì)更新后的個(gè)體位置
判斷整個(gè)種群的迭代次數(shù)是否達(dá)到已經(jīng)設(shè)定的最大迭代次數(shù),若是,則結(jié)束流程;否則返回步驟2.3的step1,繼續(xù)循環(huán)求解。
對(duì)于步驟2.6的更新,本發(fā)明引入遺傳算法的交叉和變異操作對(duì)該部分進(jìn)行更新,所述的更新步驟為:
a)交叉:交叉操作是利用父代個(gè)體經(jīng)過一定的操作組合后產(chǎn)生新個(gè)體,從而達(dá)到在不破壞有效模式的前提下對(duì)解空間進(jìn)行高效搜索的目的。本發(fā)明利用pox交叉方法,對(duì)個(gè)體的任務(wù)排序部分進(jìn)行交叉操作,進(jìn)而達(dá)到更新的目的,本發(fā)明所述的交叉操作每一次只產(chǎn)生一個(gè)新個(gè)體,具體步驟如下:
step1:從目標(biāo)集{t1,t2,…,tn}隨機(jī)抽取一個(gè)目標(biāo)子集tset;
step2:選擇需要進(jìn)行交叉操作的個(gè)體x1和x2,若x1的適應(yīng)度函數(shù)值大于x2的適應(yīng)度函數(shù)值,則將x1中包含在目標(biāo)子集tset中的目標(biāo)復(fù)制到新的個(gè)體c中,x1保持位置和順序不變;
setp3:將x2中不包含在tset中的目標(biāo)同樣復(fù)制到新的個(gè)體c中,保持個(gè)體x1和x2順序不變;
step4:若新個(gè)體c的適應(yīng)度函數(shù)值大于x2,則保存新個(gè)體c,并替代原來(lái)的個(gè)體x2;
如圖5所示,如含有4個(gè)目標(biāo),隨機(jī)抽取的目標(biāo)集tset={2,3},x1的適應(yīng)度函數(shù)要優(yōu)于x2的適應(yīng)度函數(shù),將x1中包含目標(biāo)2、3的位復(fù)制到新個(gè)體c中,然后將x2中去掉目標(biāo)2、3后,剩下的部分按照原來(lái)的次序依次復(fù)制到c的除去2、3所在位的其他位,從而產(chǎn)生新個(gè)體c;
b)變異:變異操作是通過隨機(jī)改變個(gè)體的某些位,從而產(chǎn)生較小擾動(dòng)生成新個(gè)體,增加種群多樣性,并在一定程度上影響著引力搜索算法的局部搜索能力。本文選擇基于鄰域搜索變異操作,在個(gè)體的任務(wù)分配部分不變的情況下,采用基于鄰域搜索的變異方法,能夠更好地通過局部范圍內(nèi)的搜索找到適合任務(wù)分配部分的任務(wù)排序,從而改善子代性能。本發(fā)明采用基于鄰域搜索的變異方法,其操作步驟如下:
step1:在個(gè)體的任務(wù)排序部分隨機(jī)選擇r個(gè)位,并生成個(gè)體排序的所有鄰域;
step2:計(jì)算任務(wù)元素所有鄰域的適應(yīng)度函數(shù)值,選出適應(yīng)度函數(shù)值最大的個(gè)體作為子代,并代替原來(lái)的個(gè)體。
改進(jìn)的混合離散引力遺傳搜索算法(gsa-ga)的流程如圖6所示。
本發(fā)明在以上定義、適應(yīng)度函數(shù)和任務(wù)約束基礎(chǔ)上,給出多無(wú)人機(jī)協(xié)同任務(wù)分配模型,其時(shí)間耦合約束下多無(wú)人機(jī)協(xié)同sead任務(wù)分配問題的數(shù)學(xué)模型如下:
已知參數(shù):假設(shè)有5架uav和9個(gè)待摧毀目標(biāo),uav相關(guān)信息如表1所示,目標(biāo)及著陸基地信息如表2所示。同樣地,假設(shè)uav執(zhí)行打擊任務(wù)的時(shí)間均為0.05h,執(zhí)行毀傷評(píng)估任務(wù)的時(shí)間均為0.1h,且毀傷評(píng)估任務(wù)和打擊任務(wù)的最小時(shí)間間隔為0.1h,最大時(shí)間間隔為0.5h。
表1無(wú)人機(jī)相關(guān)信息
表2目標(biāo)及基地位置信息
戰(zhàn)場(chǎng)態(tài)勢(shì)如附圖說(shuō)明圖7所示,方案實(shí)施過程如下:
1.基于以上作戰(zhàn)想定,采用本發(fā)明改進(jìn)的引力搜索算法進(jìn)行仿真,種群規(guī)模設(shè)為30,最大迭代次數(shù)為100次,仿真得到最優(yōu)任務(wù)分配結(jié)果如表3所示,以及各任務(wù)被執(zhí)行時(shí)刻如表4所示,如圖8所示為任務(wù)分配結(jié)構(gòu)的甘特圖,如圖9所示為gsa-ga算法求解的收斂曲線。
表3最優(yōu)分配結(jié)果
表4任務(wù)執(zhí)行時(shí)刻表
由表3看出,分配結(jié)果中各uav的資源約束和航程約束是完全滿足的,由表3看出,各目標(biāo)的打擊與評(píng)估任務(wù)是滿足任務(wù)間的時(shí)間耦合約束的。
2.針對(duì)上述問題,采用離散粒子群算法(dpso)進(jìn)行仿真驗(yàn)證,具體的參數(shù)設(shè)置為:ω=0.5,c1=0.3,c2=0.2,如圖10所示為兩種算法求解下的收斂曲線,由圖10可以看出,相對(duì)于離散粒子群算法,混合離散引力遺傳搜索算法能夠較快地收斂,但是由于兩種算法均屬于啟發(fā)式優(yōu)化算法,求得的結(jié)果往往不一定是最優(yōu)解,而是可行解,因而單一的仿真結(jié)果并不能準(zhǔn)確地比較出兩種算法在求解任務(wù)分配問題上的優(yōu)劣,現(xiàn)針對(duì)以上問題分別采用兩種算法進(jìn)行50次蒙特卡羅法仿真實(shí)驗(yàn),統(tǒng)計(jì)結(jié)果如表5所示:
表5gsa-ga與dpso算法比較
3.如表5所示,經(jīng)過50次隨機(jī)求解,改進(jìn)的gsa-ga得到的最佳適應(yīng)度為2577.8km,最差適應(yīng)度為2886.3km,平均適應(yīng)度為2621.4km,平均收斂代數(shù)為21代,相比于dpso,在最差適應(yīng)度和平均適應(yīng)度兩項(xiàng)稍弱于dpso,但是在最佳適應(yīng)度和平均收斂代數(shù)上有更好的表現(xiàn)。實(shí)驗(yàn)數(shù)據(jù)表明,改進(jìn)的gsa-ga算法能夠有效并較快地對(duì)多uav協(xié)同任務(wù)分配問題進(jìn)行求解。