[發明專利]一種改進螢火蟲算法的多無人機協同耦合任務分配方法有效
| 申請號: | 201710281909.2 | 申請日: | 2017-04-26 |
| 公開(公告)號: | CN107219858B | 公開(公告)日: | 2020-04-03 |
| 發明(設計)人: | 張耀中;謝松巖;胡波;張建東;史國慶;李飛龍 | 申請(專利權)人: | 西北工業大學 |
| 主分類號: | G05D1/10 | 分類號: | G05D1/10;G06N3/00 |
| 代理公司: | 西北工業大學專利中心 61204 | 代理人: | 金鳳 |
| 地址: | 710072 *** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 改進 螢火蟲 算法 無人機 協同 耦合 任務 分配 方法 | ||
1.一種改進螢火蟲算法的多無人機協同耦合任務分配方法,其特征在于包括下述步驟:
步驟1:構建特殊耦合下的任務分配模型
在該步驟中,存在如下定義:
定義1:U={U1,U2,…,Ui,…,UM}為無人機集合,其中Ui表示第i架無人機,M表示無人機總數;
定義2:T={T1,T2,…,Tj,…,TN}為目標集合,其中Tj表示第j個目標,N為目標總數;
定義3:Taskjh為目標Tj的第h種任務,h=1,2,3,當h=1為確認,h=2為打擊,h=3為毀傷評估;
定義4:Ujh為能夠執行任務Taskjh的無人機集合;
定義5:TaskSequencei={task1>task2>task3>…>taskni}為無人機Ui的任務序列;其中ni表示分配給無人機Ui的任務數量,taskni表示無人機Ui需要執行的任務;
定義6:Routei={UPi,taskP1,taskP2,…,taskPni,B}為無人機Ui的路徑序列,taskPni表示無人機Ui執行任務n時所在的位置,UPi表示無人機i的初始位置,B表示無人機返回基地的位置;
定義7:Voyi為無人機Ui的航程,其中i=1,2,…,M;
定義8:Voymaxi為無人機Ui的最大航程;
定義9:Ri為無人機Ui的武器載荷數量;
定義10:tijh為無人機Ui執行任務Taskjh消耗的執行時間;
定義11:sTk為任務k的開始被執行時刻;
定義12:eTk為任務k的完成時刻;
定義13:Inter_min為打擊任務和毀傷評估任務間的最小時間間隔;
定義14:Inter_max為打擊任務和毀傷評估任務間的最大時間間隔;
定義15:決策變量:
確認目標函數:選擇無人機最大航程最短作為任務規劃指標,該任務規劃指標是將各無人機中的最大航程最小化,即目標函數為:
確認特殊耦合約束:特殊耦合約束指在任務執行過程中的某一時刻,有兩個目標需要同時被打擊,則特殊耦合約束如下式(2)所示,同時在任務執行時有兩個目標具有被處理的優先級關系,則特殊耦合約束如下式(3)所示:
(1)任務同時執行約束:目標Ti和目標Tj必須同時打擊,則有約束:
式(2)中,和inter分別表示目標Ti的開始打擊時刻、目標Tj的開始打擊時刻和打擊目標Ti和Tj的時間間隔;
(2)任務優先級約束:目標Tk必須在Tl被確認之前被毀傷評估,則有約束:
式中,分別表示目標Tk的毀傷評估結束時刻和目標Tl的確認開始時刻;
具有復雜耦合約束下的多無人機任務分配數學模型:
步驟2:螢火蟲編碼
將螢火蟲表示為1×2Nt維數組,Nt為所有任務數量,Nt=3×N,采用整數編碼的形式,每個螢火蟲分為兩部分,前Nt維表示任務分配部分,從左至右分別表示第i個目標的確認、打擊和毀傷評估任務,即第1、2、3維代表第1個目標的確認、打擊和毀傷評估任務,第4、5、6維代表第2個目標的確認、打擊和毀傷任務,并以此類推,i=1,2,…,N,每一維的取值由數組中每一維所對應任務的可執行無人機集合中的元素數量決定決定;后Nt維表示任務排序部分,由3組所有目標的編號組成,從左至右,目標Tj第h次出現分別對應該目標的確認、打擊和毀壞評估任務,即目標Tj第1次出現表示無人機i的確認,目標Tj第2次出現表示無人機i的打擊,目標Tj第3次出現表示無人機i的毀傷評估;
步驟3:種群初始化
比較螢火蟲之間的余弦相似度,當任意兩只螢火蟲余弦相似度超過設定的閾值ξ,則對其中一個螢火蟲重新初始化,即對該螢火蟲的數值隨機化,其中閾值ξ取值在0.6-0.7之間,余弦相似度公式為:
其中,Xi和Xj分別指螢火蟲i和螢火蟲j所對應的向量;
步驟4:螢火蟲位置更新
1)螢火蟲位置進行β更新,具體步驟如下:
Setp1:計算螢火蟲Xi和Xj的海明距離Hij,海明距離為兩個螢火蟲個體的位置向量中互相對應的數不相等的對數,并找到Xi和Xj中對應相等的元素;
Setp2:計算Xi對Xj相對吸引度βij,其中Hij為螢火蟲i與螢火蟲j的海明距離,γ是移動步長,β0表示在γ=0處螢火蟲的初始吸引力;
Setp3:對于Xi和Xj中每一個不對應相等的元素ta,取隨機數r,若r<βij,則ta取Xi和Xj中對應元素的值,若r≥βij,則取Xi和Xj中本身對應元素的值;
2)在進行β更新后,螢火蟲個體Xj的任務排序部分TSj存在非法解,對螢火蟲個體進行修正,具體修正步驟為:
a)令S1=TSj、S2=TSi、L=length(S1)、p=1、q=1,TSi為螢火蟲Xi的任務排序部分,TSj為螢火蟲Xj的任務排序部分,L取螢火蟲個體任務排序部分的長度,即任務總數;
b)找出S2中第一個等于S1(p)的元素的索引值p1,令S1(p)=0,S2(p1)=0,其中S1(p)為p值對應的S1;
c)令p=p+1,若p≤L,則返回執行步驟b),否則執行步驟d);
d)若S1(q)不等于0,則在S2找到第一個非零元素的位置索引值p2,令S1(q)=S2(p2),S2(p2)=0,其中S1(q)為q值對應的S1;
e)令q=q+1,若q≤L,則執行步驟d),否則結束;
3)進行α更新
在螢火蟲算法中,α為步長因子,其公式為:
tai=int(tai+α(rand-1/2)) (5)
式(5)中,tai表示螢火蟲任務分配部分某個元素的值,int是對參數取整操作,rand為隨機因子;
4)對α更新后的編碼進行非法修正,非法修正即為對每一位元素進行可行性判斷:若元素的值在元素的取值范圍內,則不用修正,若元素的值超出取值范圍,則以距離邊界值最近的點代替元素值;
步驟5:螢火蟲個體重構
1)對于螢火蟲個體的TS部分,采用基于鄰域搜索的變異方法,其操作步驟如下:Step1:在個體的任務排序部分隨機選擇r個位,并生成其排序的所有鄰域;
Step2:計算所有鄰域的目標函數,選出目標函數值最高的個體作為最佳個體,并代替原來的個體;
2)交叉操作
采用隨迭代次數指數遞增的交叉概率因子:
Cr=Crmin+(Crmax-Crmin)×exp(-a×(1-t/T)b) (6)
式(6)中,Cr為交叉概率因子,Crmin和Crmax分別為最小交叉率和最大交叉率,且Crmin=0.4,Crmax=0.6;a=40,b=4,T為設定的最大迭代次數,t為當前迭代次數,交叉操作得到的新個體的取值為:
其中,為交叉操作得到的新個體,是需要交叉操作的個體,為不需要進行交叉操作的個體,jrand為隨機數;
3)選擇操作
在原始個體和經交叉操作后得到的新個體之間選擇目標函數值大的個體保留到下一代,選擇操作為:
其中,Xti是第t代的第i個個體,Uti是第t代經交叉后得到的個體,fitness為目標函數;
步驟6:特殊耦合約束的處理
用矩陣Ts∈R3N×3N表示目標或任務間存在的特殊耦合約束關系,表示任務i與任務j的特殊耦合約束,其取值規則為:
步驟7:螢火蟲個體解碼與目標函數的計算
具體的解碼步驟如下:
Step1:對任務分配部分進行解碼
(1)初始化各無人機的任務集合為空集,即
(2)從左至右依次讀取螢火蟲個體第k位上的值i,k=1,2,…,2N,通過j=fix(i/2)+1和h=mod(i/2)分別得到j和h的值,將Taskjh加入到TaskSequencei中;
Step2:對任務排序部分進行解碼
(1)從左至右依次讀取螢火蟲個體第k位上的值j,k=1,2,…,2N,每個j為目標Tj上的一個任務,若j是第h次出現,則表示Taskjh,當k=2N得到所有任務的排列順序TaskS;
(2)將TaskSequencei根據TaskS重新排列任務順序,當Taskjh和Taskkl均在TaskSequencei中時,則以從左到右的順序,若Taskjh在TaskS中的位置在Taskkl前面,則yijhkl=1,若Taskjh在TaskS中的位置在Taskkl后面,則yijhkl=-1;否則yijhkl=0;
至此,解碼結束,得到各無人機的任務執行序列TaskSequencei。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西北工業大學,未經西北工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710281909.2/1.html,轉載請聲明來源鉆瓜專利網。





