學(xué)建模到工程實(shí)踐:無人機(jī)救災(zāi)路徑優(yōu)化核心算法全解析)
1. 從一道競(jìng)賽題到實(shí)戰(zhàn)無人機(jī)救災(zāi)優(yōu)化的核心邏輯最近在整理過往的競(jìng)賽和項(xiàng)目資料翻到了第十四屆“中關(guān)村青聯(lián)杯”全國研究生數(shù)學(xué)建模競(jìng)賽的A題。這道題目的場(chǎng)景非常經(jīng)典也極具現(xiàn)實(shí)意義如何優(yōu)化運(yùn)用無人機(jī)進(jìn)行搶險(xiǎn)救災(zāi)。雖然題目本身是一個(gè)封閉的數(shù)學(xué)建模問題但其背后涉及的資源調(diào)度、路徑規(guī)劃、多目標(biāo)決策等核心思想在真實(shí)的應(yīng)急響應(yīng)、物流配送、乃至工業(yè)巡檢中都有著廣泛的應(yīng)用。今天我們不打算復(fù)現(xiàn)那道具體的賽題而是想以它為引子深入聊聊在類似“無人機(jī)救災(zāi)”這樣的復(fù)雜場(chǎng)景下一個(gè)從業(yè)者是如何從問題定義一步步走到方案落地的。你會(huì)發(fā)現(xiàn)數(shù)學(xué)建模不僅僅是寫公式和代碼更是一套嚴(yán)謹(jǐn)?shù)?、可?fù)用的系統(tǒng)工程思維。這道題的核心簡(jiǎn)而言之就是在災(zāi)害發(fā)生后面對(duì)有限的無人機(jī)資源數(shù)量、續(xù)航、載重、分散的受災(zāi)點(diǎn)位置、物資需求、緊迫程度、不確定的環(huán)境因素天氣、地形以及多個(gè)相互沖突的目標(biāo)如最快覆蓋所有點(diǎn)、總飛行距離最短、滿足最緊急需求設(shè)計(jì)出一套最優(yōu)或近似最優(yōu)的調(diào)度與飛行方案。這聽起來像是一個(gè)標(biāo)準(zhǔn)的運(yùn)籌學(xué)問題但在實(shí)際動(dòng)手時(shí)你會(huì)遇到比教科書上復(fù)雜得多的細(xì)節(jié)。比如無人機(jī)的續(xù)航并不是一個(gè)固定值它會(huì)受到載重、風(fēng)速、爬升高度的影響受災(zāi)點(diǎn)的“緊迫程度”如何量化是單純按時(shí)間還是結(jié)合了傷亡預(yù)估這些細(xì)節(jié)的打磨才是區(qū)分一個(gè)“紙上模型”和一個(gè)“可用方案”的關(guān)鍵。接下來我將結(jié)合這類問題的通用解決框架拆解幾個(gè)核心環(huán)節(jié)并分享一些從理論到實(shí)踐過程中容易踩坑的地方和思考邏輯。無論你是正在備戰(zhàn)相關(guān)競(jìng)賽的學(xué)生還是對(duì)運(yùn)籌優(yōu)化、無人機(jī)應(yīng)用感興趣的工程師希望這些內(nèi)容都能帶來一些啟發(fā)。2. 問題拆解與建模把模糊的需求變成清晰的數(shù)學(xué)語言接到一個(gè)“優(yōu)化運(yùn)用”的任務(wù)第一步也是最容易出錯(cuò)的一步就是問題拆解。你不能一上來就想著用遺傳算法或者線性規(guī)劃而是要先回答到底要優(yōu)化什么在什么約束下優(yōu)化2.1 定義決策變量與核心參數(shù)這是建模的基石必須清晰無歧義。通常我們需要定義以下幾類變量無人機(jī)相關(guān)變量假設(shè)有K架無人機(jī)每架無人機(jī)k有最大續(xù)航時(shí)間T_k_max、最大載重量C_k_max、巡航速度v_k、起降機(jī)場(chǎng)位置通常是一個(gè)或多個(gè)固定基地。任務(wù)點(diǎn)相關(guān)變量假設(shè)有N個(gè)受災(zāi)點(diǎn)任務(wù)點(diǎn)每個(gè)點(diǎn)i有地理位置坐標(biāo)(x_i, y_i)可能還有海拔z_i、物資需求量d_i、服務(wù)時(shí)間窗[e_i, l_i]最早和最晚服務(wù)時(shí)間、以及一個(gè)緊迫度權(quán)重w_i。這個(gè)權(quán)重w_i的設(shè)定就是第一個(gè)需要深思的地方。在競(jìng)賽中它可能直接給出在現(xiàn)實(shí)中它可能需要根據(jù)傷亡報(bào)告等級(jí)、交通中斷情況、醫(yī)療資源匱乏程度等多個(gè)指標(biāo)綜合評(píng)定這本身可能就是一個(gè)小的評(píng)估模型。核心決策變量這是模型的靈魂。通常包括x_{ijk}一個(gè)0-1變量表示無人機(jī)k是否從點(diǎn)i飛往點(diǎn)j。這是描述路徑最常用的方式。s_{ik}無人機(jī)k到達(dá)點(diǎn)i的時(shí)間。q_{ik}無人機(jī)k在離開點(diǎn)i時(shí)剩余的載重量或已配送的物資累計(jì)量。注意不要試圖用一個(gè)變量描述所有事情。比如不要定義一個(gè)“無人機(jī)k的完整路徑序列”作為變量這會(huì)讓模型變得極其復(fù)雜且難以求解。用x_{ijk}這種“邊”變量配合流平衡約束是描述路徑問題的標(biāo)準(zhǔn)手法。2.2 構(gòu)建目標(biāo)函數(shù)多目標(biāo)之間的權(quán)衡單一目標(biāo)的優(yōu)化往往是理想化的。在救災(zāi)中我們通常面臨多個(gè)目標(biāo)時(shí)間最短化最小化所有無人機(jī)完成所有任務(wù)的總時(shí)間或最后一架無人機(jī)返回的時(shí)間。這追求的是整體效率。緊迫度最大化最大化被優(yōu)先服務(wù)的任務(wù)點(diǎn)權(quán)重之和。這追求的是公平性與災(zāi)情響應(yīng)的人道主義原則。成本最小化最小化總飛行距離或總能耗。這關(guān)乎運(yùn)營的經(jīng)濟(jì)性。這些目標(biāo)通常是相互沖突的。讓一架無人機(jī)飛很遠(yuǎn)去服務(wù)一個(gè)高權(quán)重但偏遠(yuǎn)的地點(diǎn)會(huì)增加總時(shí)間和距離。因此我們很少尋求一個(gè)“同時(shí)最優(yōu)”的解而是采用以下策略之一主次目標(biāo)法將一個(gè)目標(biāo)作為主要目標(biāo)進(jìn)行優(yōu)化將其他目標(biāo)轉(zhuǎn)化為約束條件。例如“在滿足所有任務(wù)點(diǎn)最晚服務(wù)時(shí)間l_i的前提下最小化總飛行距離”。這時(shí)時(shí)間窗約束就體現(xiàn)了對(duì)時(shí)間的考量。加權(quán)求和法為每個(gè)目標(biāo)賦予一個(gè)權(quán)重合并成一個(gè)單一目標(biāo)函數(shù)。例如Minimize α * 總時(shí)間 β * (1/緊迫度得分) γ * 總距離。關(guān)鍵在于權(quán)重α, β, γ的設(shè)定這需要與領(lǐng)域?qū)<胰缇葹?zāi)指揮人員反復(fù)溝通確認(rèn)反映了對(duì)不同目標(biāo)的重視程度。一個(gè)常見的技巧是進(jìn)行歸一化處理避免因量綱不同導(dǎo)致某個(gè)目標(biāo)被數(shù)值“淹沒”。比如將總時(shí)間除以一個(gè)估計(jì)的最大可能時(shí)間將緊迫度得分除以理論最大值將距離除以最大可能距離。帕累托前沿法這是更高級(jí)的做法即尋找一組“非支配解”。在這些解中你無法在不損害另一個(gè)目標(biāo)的情況下改進(jìn)某一個(gè)目標(biāo)。然后由決策者從中選擇一個(gè)最符合當(dāng)前情況的方案。這在學(xué)術(shù)研究和復(fù)雜系統(tǒng)決策中很常見。在初步建模時(shí)我建議從加權(quán)求和法開始因?yàn)樗鄬?duì)直觀且大多數(shù)優(yōu)化求解器都能直接處理。你可以通過調(diào)整權(quán)重來觀察方案的變化從而理解不同目標(biāo)間的權(quán)衡關(guān)系。2.3 確立約束條件讓模型貼近現(xiàn)實(shí)約束條件是將天馬行空的解拉回現(xiàn)實(shí)地面的繩索。對(duì)于無人機(jī)救災(zāi)問題約束通常包括流平衡約束每架無人機(jī)從基地出發(fā)最終返回基地或某個(gè)集合點(diǎn)。對(duì)于每個(gè)任務(wù)點(diǎn)如果有一架無人機(jī)到達(dá)就必須有一架無人機(jī)離開除非它是終點(diǎn)。這保證了路徑的連續(xù)性。∑_{j} x_{0jk} 1, ?k (從基地0出發(fā)) ∑_{i} x_{i0k} 1, ?k (返回基地0) ∑_{i} x_{ihk} ∑_{j} x_{hjk}, ?h∈任務(wù)點(diǎn), ?k (中間點(diǎn)流入等于流出)容量約束無人機(jī)在任何時(shí)候的載重不能超過其最大容量。這需要引入輔助變量q_{ik}來追蹤載重變化。q_{0k} 0, ?k (從基地空載出發(fā)) q_{ik} d_j C_k_max M*(1 - x_{ijk}), ?i,j,k (如果從i飛往j則在i點(diǎn)的剩余載重加上j點(diǎn)的需求量不能超限M是一個(gè)很大的數(shù))時(shí)間窗約束無人機(jī)到達(dá)任務(wù)點(diǎn)i的時(shí)間必須在[e_i, l_i]內(nèi)。這引入了時(shí)間變量s_{ik}和旅行時(shí)間t_{ij}與距離、風(fēng)速有關(guān)。s_{ik} t_{ij} - s_{jk} M*(1 - x_{ijk}), ?i,j,k (時(shí)間連續(xù)性) e_i s_{ik} l_i, 如果點(diǎn)i被無人機(jī)k服務(wù)續(xù)航約束無人機(jī)從出發(fā)到返回的總飛行時(shí)間包括服務(wù)時(shí)間不能超過其最大續(xù)航。這需要計(jì)算每條路徑的總時(shí)間。s_{0k} ∑_{i}∑_{j} t_{ij} * x_{ijk} ∑_{i} service_time_i T_k_max, ?k這些約束一加上一個(gè)完整的混合整數(shù)線性規(guī)劃MILP模型就初具雛形了。但請(qǐng)注意這個(gè)模型隨著問題規(guī)模無人機(jī)數(shù)K、任務(wù)點(diǎn)N增大會(huì)變得非常龐大變量和約束數(shù)量呈平方或立方增長(zhǎng)直接求解可能非常困難甚至不可能。這時(shí)我們就需要進(jìn)入下一個(gè)環(huán)節(jié)算法選型與求解策略。3. 算法選型與求解精確解與啟發(fā)式的博弈當(dāng)你把數(shù)學(xué)模型丟給標(biāo)準(zhǔn)的優(yōu)化求解器如Gurobi, CPLEX時(shí)對(duì)于小規(guī)模問題比如N20, K3它可能能在可接受時(shí)間內(nèi)給出全局最優(yōu)解。但面對(duì)競(jìng)賽或?qū)嶋H中動(dòng)輒上百個(gè)任務(wù)點(diǎn)、十幾架無人機(jī)的情況精確算法往往力不從心。這時(shí)我們需要借助啟發(fā)式或元啟發(fā)式算法。3.1 精確算法分支定界與割平面對(duì)于MILP模型求解器內(nèi)部的核心是分支定界法。它通過松弛整數(shù)約束讓0-1變量可以取0到1之間的小數(shù)得到一個(gè)線性規(guī)劃問題更容易求解。這個(gè)松弛問題的解提供了一個(gè)目標(biāo)函數(shù)的下界對(duì)于最小化問題。然后算法開始“分支”比如選擇一個(gè)取小數(shù)的整數(shù)變量x_{ijk}0.6分別創(chuàng)建兩個(gè)子問題x_{ijk}0和x_{ijk}1。通過不斷分支、求解松弛問題、更新上下界并利用“定界”剪掉那些不可能包含更優(yōu)解的分支最終找到最優(yōu)解。實(shí)操心得即使你決定主要使用啟發(fā)式算法也強(qiáng)烈建議先用精確求解器跑一下小規(guī)模實(shí)例。這有兩個(gè)好處第一驗(yàn)證你的模型邏輯是否正確解是否合理第二得到的小規(guī)模最優(yōu)解可以作為基準(zhǔn)用來評(píng)估你后續(xù)設(shè)計(jì)的啟發(fā)式算法的質(zhì)量比如你的啟發(fā)式解比最優(yōu)解差多少百分比。3.2 啟發(fā)式與元啟發(fā)式算法在可行時(shí)間內(nèi)尋找滿意解當(dāng)精確求解不可行時(shí)我們就需要妥協(xié)尋找“足夠好”的解。這類算法很多需要根據(jù)問題特點(diǎn)選擇。構(gòu)造型啟發(fā)式從零開始一步步構(gòu)建一個(gè)可行解。對(duì)于車輛路徑問題VRP無人機(jī)救災(zāi)是其一個(gè)變種最經(jīng)典的是節(jié)約算法。其思想是最初假設(shè)每個(gè)任務(wù)點(diǎn)都由一架單獨(dú)的無人機(jī)從基地服務(wù)再返回這顯然成本很高。然后計(jì)算任意兩點(diǎn)i和j合并到一條路線中所“節(jié)約”的距離節(jié)約值 d(0,i) d(0,j) - d(i,j)。優(yōu)先合并節(jié)約值最大的點(diǎn)直到違反約束容量、時(shí)間窗等。這種方法速度快能快速得到一個(gè)不錯(cuò)的初始解。元啟發(fā)式算法這類算法提供了一種在高維解空間中搜索的通用框架不依賴于問題的具體結(jié)構(gòu)但效果往往很好。遺傳算法模擬自然選擇。將一條完整的無人機(jī)調(diào)度方案所有路徑的編碼作為一個(gè)“染色體”。通過選擇保留優(yōu)秀個(gè)體、交叉交換不同方案的部分路徑、變異隨機(jī)改變某條路徑中的點(diǎn)序來迭代進(jìn)化種群。關(guān)鍵點(diǎn)在于編碼設(shè)計(jì)。一種常見編碼是“基于任務(wù)的編碼”用一個(gè)染色體表示所有任務(wù)點(diǎn)的訪問順序然后用一個(gè)解碼器根據(jù)容量、時(shí)間窗等約束將其拆分成多條無人機(jī)路徑。這種編碼的交叉變異操作容易產(chǎn)生非法解違反約束需要精心設(shè)計(jì)修復(fù)機(jī)制。模擬退火算法模擬固體退火過程。從一個(gè)初始解開始隨機(jī)產(chǎn)生一個(gè)“鄰居解”例如隨機(jī)交換兩個(gè)任務(wù)點(diǎn)的位置或者將某個(gè)點(diǎn)從一條路徑移到另一條。如果新解更好則接受如果更差則以一個(gè)概率接受這個(gè)概率隨著“溫度”的降低而減小。這給了算法跳出局部最優(yōu)的能力。關(guān)鍵在于鄰域結(jié)構(gòu)的設(shè)計(jì)和退火計(jì)劃的設(shè)置初始溫度、降溫速率、終止溫度。蟻群算法模擬螞蟻覓食的信息素機(jī)制。人工“螞蟻”根據(jù)信息素濃度和啟發(fā)式信息如距離倒數(shù)概率性地選擇下一個(gè)要訪問的點(diǎn)。完成一次遍歷后根據(jù)路徑質(zhì)量更新信息素好的路徑增強(qiáng)信息素差的路徑信息素?fù)]發(fā)。它特別適合解決旅行商問題TSP這類路徑問題對(duì)于VRP需要做適配。算法選型經(jīng)驗(yàn)沒有一種算法在所有問題上都是最好的。對(duì)于帶時(shí)間窗的無人機(jī)路徑問題我的經(jīng)驗(yàn)是問題規(guī)模較小且約束嚴(yán)格優(yōu)先嘗試用商業(yè)求解器求精確解或采用大規(guī)模鄰域搜索這類高級(jí)啟發(fā)式它在局部搜索中結(jié)合了精確求解子問題的能力。問題規(guī)模中等需要快速得到一個(gè)可行解節(jié)約算法或插入法是非常好的起點(diǎn)它們的解可以作為更復(fù)雜算法的初始解。問題規(guī)模大求解時(shí)間充裕且對(duì)解質(zhì)量要求高遺傳算法和模擬退火是常用的選擇。遺傳算法并行性好能探索較大范圍模擬退火實(shí)現(xiàn)相對(duì)簡(jiǎn)單調(diào)參直觀??梢詢烧呓Y(jié)合比如用遺傳算法生成初始種群再用模擬退火對(duì)每個(gè)個(gè)體進(jìn)行局部?jī)?yōu)化。如果問題非常強(qiáng)調(diào)“路徑”本身的特性蟻群算法值得一試它在構(gòu)造路徑方面有天然優(yōu)勢(shì)。在實(shí)際編程實(shí)現(xiàn)時(shí)我強(qiáng)烈建議使用成熟的優(yōu)化庫或框架如Python的ortoolsGoogle的運(yùn)籌優(yōu)化工具包內(nèi)置了強(qiáng)大的VRP求解器、DEAP遺傳算法框架、pymoo多目標(biāo)優(yōu)化框架。它們能幫你處理很多底層細(xì)節(jié)讓你更專注于問題建模和算法設(shè)計(jì)本身。4. 模型細(xì)化與仿真驗(yàn)證從“數(shù)學(xué)解”到“可行方案”得到一個(gè)優(yōu)化結(jié)果比如一組無人機(jī)路徑和時(shí)刻表遠(yuǎn)不是終點(diǎn)。在數(shù)學(xué)建模競(jìng)賽中這可能就是最終答案。但在實(shí)際項(xiàng)目中這只是第一步。我們需要把這個(gè)“紙面方案”放到更接近真實(shí)的環(huán)境中去檢驗(yàn)和打磨。4.1 引入更現(xiàn)實(shí)的飛行模型之前的模型通常假設(shè)無人機(jī)勻速直線飛行續(xù)航是固定值?,F(xiàn)實(shí)中需要細(xì)化能耗模型無人機(jī)的能耗與速度、載重、風(fēng)速風(fēng)向高度相關(guān)。一個(gè)簡(jiǎn)化的模型是能耗率 基礎(chǔ)功耗 載重系數(shù) * 載重 風(fēng)阻系數(shù) * (空速-風(fēng)速)^2。這樣飛行時(shí)間t_{ij}就不再是簡(jiǎn)單的距離除以速度而是需要根據(jù)當(dāng)前載重和風(fēng)速動(dòng)態(tài)計(jì)算的一段航段的能耗再與剩余電量比較。動(dòng)態(tài)環(huán)境風(fēng)場(chǎng)、天氣是變化的。我們可以引入一個(gè)簡(jiǎn)化的概率模型比如將風(fēng)速設(shè)為隨機(jī)變量或者將某些區(qū)域如山谷的飛行時(shí)間設(shè)為一個(gè)區(qū)間值。這時(shí)我們的優(yōu)化目標(biāo)可能要從“最小化總時(shí)間”變?yōu)椤白钚』倳r(shí)間的期望值”或“最大化在給定時(shí)間內(nèi)完成任務(wù)的概率”魯棒優(yōu)化。起降與懸停能耗垂直起降型無人機(jī)如多旋翼在起降和懸停投放物資時(shí)能耗遠(yuǎn)大于平飛。在計(jì)算點(diǎn)對(duì)點(diǎn)時(shí)間t_{ij}時(shí)需要加上起降時(shí)間并在續(xù)航約束中考慮懸停能耗。實(shí)操技巧在初期不必追求極度復(fù)雜的模型??梢韵仍诤?jiǎn)單的勻速直線模型下得到基準(zhǔn)方案然后用這個(gè)基準(zhǔn)方案作為輸入代入更精細(xì)的能耗模型進(jìn)行仿真計(jì)算。如果仿真發(fā)現(xiàn)某架無人機(jī)電量不足則說明原方案不可行需要將“電量安全裕度”作為一個(gè)新的約束例如要求任務(wù)結(jié)束時(shí)剩余電量不低于20%反饋到優(yōu)化模型中重新求解。這是一個(gè)“優(yōu)化-仿真-反饋”的迭代過程。4.2 可視化與方案解讀再好的方案如果無法被指揮人員理解和使用也是失敗的。可視化至關(guān)重要。甘特圖展示每架無人機(jī)的時(shí)間線何時(shí)從基地出發(fā)何時(shí)到達(dá)哪個(gè)任務(wù)點(diǎn)服務(wù)多久何時(shí)返回。一目了然地看出整體任務(wù)時(shí)序、是否存在資源沖突、哪架無人機(jī)是瓶頸。路徑地圖在地圖上繪制出每架無人機(jī)的飛行軌跡用不同顏色區(qū)分。可以疊加地形高程、禁飛區(qū)、天氣圖層。這能直觀檢查路徑的合理性比如是否穿越了已知的危險(xiǎn)區(qū)域。關(guān)鍵指標(biāo)面板實(shí)時(shí)顯示方案的整體指標(biāo)總飛行距離、總耗時(shí)、任務(wù)點(diǎn)覆蓋率、緊迫任務(wù)完成率、平均無人機(jī)利用率等。這些可視化輸出不僅是交付物更是我們調(diào)試和驗(yàn)證模型的工具。通過觀察甘特圖你可能會(huì)發(fā)現(xiàn)某架無人機(jī)中間有很長(zhǎng)的空閑等待這提示你可能需要調(diào)整時(shí)間窗約束或嘗試允許無人機(jī)在基地外“待命點(diǎn)”懸停充電如果模型支持。通過觀察路徑地圖你可能會(huì)發(fā)現(xiàn)路徑交叉嚴(yán)重增加了碰撞風(fēng)險(xiǎn)這提示你可能需要在模型中加入避免路徑交叉的軟約束或事后進(jìn)行路徑平滑處理。4.3 仿真與敏感性分析在最終定稿前必須進(jìn)行仿真和敏感性分析。蒙特卡洛仿真隨機(jī)生成多組不同的任務(wù)點(diǎn)需求、位置甚至無人機(jī)性能參數(shù)模擬部分無人機(jī)性能下降用你的優(yōu)化算法分別求解。統(tǒng)計(jì)關(guān)鍵指標(biāo)如任務(wù)完成率、平均延遲的分布情況。這能評(píng)估你方案的魯棒性。一個(gè)只在特定數(shù)據(jù)下表現(xiàn)良好但數(shù)據(jù)稍有擾動(dòng)就崩潰的方案是沒有實(shí)用價(jià)值的。敏感性分析系統(tǒng)性地改變某個(gè)輸入?yún)?shù)觀察輸出結(jié)果的變化。例如增加或減少一架無人機(jī)總?cè)蝿?wù)完成時(shí)間如何變化這有助于決策資源投入放寬所有任務(wù)點(diǎn)的時(shí)間窗總飛行距離能減少多少這有助于評(píng)估時(shí)間緊迫性帶來的成本提高某類任務(wù)的緊迫度權(quán)重方案會(huì)如何向這些任務(wù)傾斜 這種分析能讓你理解模型中各個(gè)因素的影響力為決策者提供“如果…那么…”的洞見這比單純給出一個(gè)最優(yōu)解更有價(jià)值。5. 從競(jìng)賽到實(shí)戰(zhàn)還需要考慮什么競(jìng)賽題目通常將問題抽象和簡(jiǎn)化而實(shí)戰(zhàn)則充滿了“臟活累活”。如果你要將這套方法應(yīng)用于實(shí)際系統(tǒng)以下幾個(gè)環(huán)節(jié)必不可少5.1 數(shù)據(jù)預(yù)處理與不確定性處理真實(shí)數(shù)據(jù)往往是混亂的。任務(wù)點(diǎn)的坐標(biāo)可能來自不精確的災(zāi)情報(bào)告物資需求量可能是個(gè)估計(jì)值無人機(jī)的實(shí)際續(xù)航可能比標(biāo)稱值低。因此數(shù)據(jù)清洗與融合需要建立數(shù)據(jù)管道整合來自不同源頭衛(wèi)星圖像、地面報(bào)告、社交媒體的信息去重、糾偏、補(bǔ)全。不確定性建模將關(guān)鍵參數(shù)如飛行時(shí)間、需求量視為隨機(jī)變量或區(qū)間數(shù)采用隨機(jī)規(guī)劃或魯棒優(yōu)化的框架。例如目標(biāo)可以設(shè)為“最小化期望總成本”約束可以設(shè)為“電量不足的概率小于5%”。實(shí)時(shí)數(shù)據(jù)接入真正的救災(zāi)是動(dòng)態(tài)的。新的任務(wù)點(diǎn)隨時(shí)可能出現(xiàn)已有任務(wù)點(diǎn)的需求可能更新無人機(jī)可能突發(fā)故障。這就需要你的系統(tǒng)能夠支持在線重規(guī)劃。一種策略是采用滾動(dòng)時(shí)域優(yōu)化每隔一段時(shí)間如15分鐘基于當(dāng)前的最新狀態(tài)無人機(jī)位置、電量、剩余任務(wù)重新運(yùn)行一次優(yōu)化生成下一階段的指令。這對(duì)算法的求解速度提出了極高要求。5.2 與飛行控制系統(tǒng)的集成優(yōu)化模塊輸出的是一系列高級(jí)指令任務(wù)序列、目標(biāo)點(diǎn)、預(yù)計(jì)時(shí)間而無人機(jī)飛控系統(tǒng)需要的是更低層的控制指令航點(diǎn)、速度、高度。這中間需要一個(gè)任務(wù)管理層來橋接航點(diǎn)生成與路徑平滑將優(yōu)化輸出的任務(wù)點(diǎn)序列結(jié)合高精度地圖和空域信息生成具體的、安全的飛行航點(diǎn)。可能需要避開建筑物、高壓線并滿足民航法規(guī)的高度要求。指令下發(fā)與狀態(tài)監(jiān)控通過數(shù)據(jù)鏈4G/5G、無線電專網(wǎng)將航點(diǎn)任務(wù)下發(fā)給指定的無人機(jī)并實(shí)時(shí)監(jiān)控其狀態(tài)位置、電量、健康狀態(tài)。異常處理與重規(guī)劃當(dāng)監(jiān)測(cè)到無人機(jī)偏離航線、電量過低、或遇到突發(fā)禁飛區(qū)時(shí)任務(wù)管理層需要能觸發(fā)告警并可能調(diào)用優(yōu)化模塊進(jìn)行局部重規(guī)劃例如命令該無人機(jī)立即返航并將其未完成的任務(wù)分配給其他無人機(jī)。5.3 人機(jī)交互與決策支持再智能的算法最終也應(yīng)該為人服務(wù)而不是取代人。一個(gè)優(yōu)秀的系統(tǒng)應(yīng)該是一個(gè)決策支持系統(tǒng)方案對(duì)比可以同時(shí)運(yùn)行幾種不同權(quán)重配置的優(yōu)化模型一個(gè)偏向速度一個(gè)偏向公平一個(gè)偏向成本將多個(gè)方案及其關(guān)鍵指標(biāo)并排展示給指揮員。人工干預(yù)與調(diào)整允許指揮員在地圖上手動(dòng)拖拽任務(wù)點(diǎn)、調(diào)整優(yōu)先級(jí)、甚至直接修改某條無人機(jī)的路徑。系統(tǒng)應(yīng)能快速評(píng)估人工調(diào)整后的方案是否滿足所有硬約束并計(jì)算出調(diào)整后的性能指標(biāo)變化。推演與沙盤提供“如果…那么…”的模擬推演功能。指揮員可以設(shè)置各種想定如“如果3號(hào)無人機(jī)現(xiàn)在故障會(huì)怎樣”系統(tǒng)快速模擬并給出影響評(píng)估和應(yīng)對(duì)建議。說到底無人機(jī)救災(zāi)優(yōu)化系統(tǒng)是一個(gè)典型的“人在環(huán)路”的復(fù)雜系統(tǒng)。數(shù)學(xué)模型和優(yōu)化算法是它的“大腦”負(fù)責(zé)快速計(jì)算各種可能性而數(shù)據(jù)、仿真、可視化、人機(jī)交互構(gòu)成了它的“感官”和“四肢”確保這個(gè)大腦能感知真實(shí)世界并將其思考的結(jié)果有效執(zhí)行。從一道競(jìng)賽題目出發(fā)深入思考其背后的每一個(gè)環(huán)節(jié)并嘗試用工程化的方法去實(shí)現(xiàn)和增強(qiáng)它這個(gè)過程本身就是一次絕佳的學(xué)習(xí)和成長(zhǎng)。