目錄
- 1.摘要
- 2.回溯搜索算法BSA原理
- 3.模型定義
- 4.增強回溯搜索算法EBSA
- 5.結果展示
- 6.參考文獻
- 7.算法輔導·應用定制·讀者交流
1.摘要
利用無人機進行商業包裹投遞可以顯著推動物流行業的轉型升級,這得益于節省了人力資源成本,而無人機正在成為智能交通運輸系統的新組成部分。然而,由于電池容量有限,無人機的飛行距離通常受到限制。為應對這一挑戰,本文設計了一種多無人機協作的商業包裹投遞系統,該系統通過廣義服務網絡(GSN)支持長距離投遞。GSN 的每個節點都配備有充電樁,為無人機提供充電服務。考慮到每個節點充電樁數量有限以及無人機電池容量有限,為了確保系統的高效運行,將無人機的飛行規劃問題轉化為一個基于優先級編碼機制的大規模優化問題。為解決這一問題,本文提出了一種增強回溯搜索算法(EBSA),該算法受到所研究飛行規劃問題特點的啟發,并針對回溯搜索算法易陷入局部最優的弱點,增強了其逃逸能力,其核心組件是設計了綜合學習機制和局部逃逸算子。
2.回溯搜索算法BSA原理
【智能算法】回溯搜索算法(BSA)原理及實現
3.模型定義
多無人機輔助商業包裹投遞系統
圖中展示了多無人機協作的商業包裹投遞系統,該系統包括一個倉庫、三架無人機、三個投遞取貨站(DPS)和11個服務站(SS)。倉庫和DPS配備有限數量的充電樁,而每個SS則提供充電服務,所有設施共同構成了一個包含15個節點的廣義服務網絡(GSN),這一網絡使無人機能夠執行長距離投遞任務。
以無人機1為例,其飛行規劃(FP)分為三個階段:
- 階段1:無人機1從倉庫起飛,達到設定高度后進入恒速飛行狀態;
- 階段2:無人機1從SS 1飛行至SS 11,并在SS 1、SS 2、SS 7和SS 11充電;
- 階段3:無人機1從SS 11起飛,并完成投遞任務后降落在DPS 1。
盡管GSN支持長距離投遞,但充電樁數量的限制給系統帶來了挑戰。SS7為無人機1和無人機2提供充電服務,這使得無人機2的飛行規劃可能會影響到無人機1的任務。隨著無人機數量的增加,SS7的充電樁壓力加大,進而影響整個系統的運行效率。
飛行規劃數學模型
首先做出以下五個假設:
- 所有用于執行投遞任務的無人機完全相同,且電池在倉庫已完全充電;
- 每架無人機執行獨立任務,不與飛行中的其他障礙物發生碰撞;
- 無人機有三種飛行狀態,起飛、著陸和正常飛行。無人機的起飛和著陸是垂直進行的,分別從起飛點和著陸點開始。無人機以恒定的速度和高度從一個節點飛行到另一個節點;
- 影響無人機能量消耗的因素包括起飛、著陸、充電和正常飛行;
- 影響無人機運行時間的因素包括起飛、著陸、正常飛行、充電及等待時間;
- 未考慮包裹重量對無人機性能的影響。
充電函數
GSN中的每個節點都可以為無人機提供充電服務,無人機的充電速度通常遵循慢-快-慢的規則,充電函數定義為:
E=E01+exp?(6?t/5)E=\frac{E_0}{1+\exp(6-t/5)} E=1+exp(6?t/5)E0??
其中,ttt是充電時間,E0E_0E0?是電池的總能量容量,EEE是電池的剩余能量。為了計算充電時間,計算方式:
t=30?5ln?(E0E?1)t=30-5\ln\left(\frac{E_0}{E}-1\right) t=30?5ln(EE0???1)
設 Ec,k,iE_{c,k,i}Ec,k,i? 和 Er,k,iE_{r,k,i}Er,k,i? 分別為無人機kkk在節點iii的當前電量和所需電量,充電時間:
tc,k,i=5ln?(E0Ec,k,i?1)?5ln?(E0Er,k,i?1),k∈[1,n]t_{c,k,i}=5\ln(\frac{E_0}{E_{c,k,i}}-1)-5\ln(\frac{E_0}{E_{r,k,i}}-1),\quad k\in[1,n] tc,k,i?=5ln(Ec,k,i?E0???1)?5ln(Er,k,i?E0???1),k∈[1,n]
連接圖
為了描述GSN中節點之間的空間關系,每個節點都有一個編號。設np為倉庫數量,ns為服務站數量,nd為投遞取貨站數量,Sn為所有節點的編號序列。Sn可表示為:
Sn=[1,2,…,np,np+1,np+2,…,np+ns,np+ns+1,np+ns+2,…,np+ns+nd]\begin{aligned} S_{\mathrm{n}}=[1,2,\ldots,n_{\mathrm{p}},n_{\mathrm{p}}+1,n_{\mathrm{p}}+2,\ldots,n_{\mathrm{p}}+n_{\mathrm{s}},n_{\mathrm{p}} & +n_\mathrm{s}+1,n_\mathrm{p}+n_\mathrm{s}+2,\ldots,n_\mathrm{p}+n_\mathrm{s}+n_\mathrm{d}] \end{aligned} Sn?=[1,2,…,np?,np?+1,np?+2,…,np?+ns?,np??+ns?+1,np?+ns?+2,…,np?+ns?+nd?]?
倉庫的節點編號為1到np;服務站的節點編號為np + 1到np + ns;投遞取貨站的節點編號為np + ns + 1到np + ns + nd,每個節點都有唯一的編號。設m為GSN中節點的總數,m滿足m = np + ns + nd。為了衡量GSN中兩個節點的空間關系,定義連接距離Dc為:
Dc=(1?θ)×Lmax?D_{\mathfrak{c}}=(1-\theta)\times L_{\max} Dc?=(1?θ)×Lmax?
其中,θ\thetaθ為連接因子,Lmax為無人機的最大飛行范圍。如果兩個節點之間的距離小于Dc,則這兩個節點是連接的(無需充電即可飛行);否則,兩個節點不可連接(沒有充電的情況下無人機無法飛行)。
充電樁狀態圖
在GSN中,每個節點配備有限數量的充電樁為無人機提供充電服務。設nc為某個節點的充電樁數量。使用充電樁的規則如下:所有需要充電的無人機按到達順序排隊。當排隊的無人機數量超過nc時,一些無人機必須等待空閑的充電樁。為描述充電樁的狀態,設計了充電樁狀態圖:
Si,j=[ts,i,jte,i,j],i∈[1,ns+nd+np],j∈[1,nc]S_{i,j}=[t_{\mathrm{s},i,j}t_{\mathrm{e},i,j}],\quad i\in[1,n_\mathrm{s}+n_\mathrm{d}+n_\mathrm{p}],j\in[1,n_\mathrm{c}] Si,j?=[ts,i,j?te,i,j?],i∈[1,ns?+nd?+np?],j∈[1,nc?]
目標函數
無人機kkk的FP可以用GSN中的一個節點序列來表示。設λk\lambda_kλk?表示無人機kkk的FP所對應的序列的節點數,lkl_klk?表示λk\lambda_kλk?中的節點數。λk\lambda_kλk?表示為:
λk=[λk,1,λk,2,…,λk,lk],lk≥3,λk,p∈Sn,p∈[1,lk].\begin{aligned} \lambda_{k} & =[\lambda_{k,1},\lambda_{k,2},\ldots,\lambda_{k,l_{k}}],\quad l_{k}\geq3, \\ \lambda_{k,p} & \in S_{\mathrm{n}},\quad p\in[1,l_{k}]. \end{aligned} λk?λk,p??=[λk,1?,λk,2?,…,λk,lk??],lk?≥3,∈Sn?,p∈[1,lk?].?
設 td,kt_{d,k}td,k? 表示無人機k在包裹投遞過程中的旅行時間。td,kt_{d,k}td,k? 可以表示為:
td,k=ttl,k+ttf,k+ttc,k+ttw,kt_{d,k}=t_{tl,k}+t_{tf,k}+t_{tc,k}+t_{tw,k} td,k?=ttl,k?+ttf,k?+ttc,k?+ttw,k?
FP問題的目標函數可以定義為:
min?Tatt=f(λ1,λ2,…,λn)=1n∑k=1ntd,k.\min T_{att}=f(\lambda_1,\lambda_2,\ldots,\lambda_n)=\frac{1}{n}\sum_{k=1}^nt_{d,k}. minTatt?=f(λ1?,λ2?,…,λn?)=n1?k=1∑n?td,k?.
4.增強回溯搜索算法EBSA
綜合學習機制
第一種學習策略與BSA的相同;第二種策略通過隨機交換信息來改進解,并引導無人機朝著全局最優解前進;第三種策略通過使用種群信息來提高算法的整體性能,結合了種群均值和局部信息。
Mw=?4×(?5×xi+(1??5)×xj)+(1??4)×1N∑i=1NxiM_w=\phi_4\times(\phi_5\times x_i+(1-\phi_5)\times x_j)+(1-\phi_4)\times\frac{1}{N}\sum_{i=1}^Nx_i Mw?=?4?×(?5?×xi?+(1??5?)×xj?)+(1??4?)×N1?i=1∑N?xi?
xi=xi+?6×(x??Mw)x_i=x_i+\phi_6\times(x^*-M_w) xi?=xi?+?6?×(x??Mw?)
局部逃逸算子
利用標準正態分布的隨機數,隨機替換解 x?x^{*}x? 中部分模塊的元素。設 γ?\gamma^{*}γ? 表示在 x?x^{*}x? 中被選中模塊的數量:
γ?=?n×?7?\gamma^*=\lceil n\times\phi_7\rceil γ?=?n×?7??
被選中模塊內被替換的元素數量用hs?h_s^*hs??表示:
hs?=?m×?8?,s∈[1,γ?]h_s^*=\lceil m\times\phi_8\rceil,\quad s\in[1,\gamma^*] hs??=?m×?8??,s∈[1,γ?]
其中,hs?h_s^*hs??是第sss個被選中模塊中被替換元素的數量,?8\phi_8?8?是[0,1]之間的隨機數。令xe,s,j?x_{e,s,j}^*xe,s,j??表示第sss個被選中
模塊中第jjj個被選中的元素,則局部逃逸算子的定義為:
xe,s,j?=μ×xe,s,j?,j∈[1,hs?]x_{e,s,j}^*=\mu\times x_{e,s,j}^*,\quad j\in[1,h_s^*] xe,s,j??=μ×xe,s,j??,j∈[1,hs??]
5.結果展示
6.參考文獻
[1] Zhang Y, Zhou G, Hang P, et al. An enhanced backtracking search algorithm for the flight planning of a multi-drones-assisted commercial parcel delivery system[J]. IEEE Transactions on Intelligent Transportation Systems, 2023, 24(10): 11396-11409.