2019“華爲杯”第十六屆研究生數模競賽F題一等獎7/2790方案

2019“華爲杯”第十六屆研究生數模競賽F題一等獎7/2790方案


“華爲杯”第十六屆研究生數模競賽最近頒獎也結束了,總結一下,(* /ω\*)防止以後不知道忘到哪裏去了。

題目

F題:飛行器航跡快速規劃.
論文.

問題1

給定2個場地的校正點數據,規劃路徑。需要滿足最基本的水平,垂直限制高度,屬於引導上手的問題。

方案

把限制條件和目標量化以後直接使用搜索算法搜索即可,這裏會涉及到一個矯正點數量與總路程長度的trade off。

結果

在這裏插入圖片描述

場景一路線:A→50369237115338457555436→B
長度:104898

在這裏插入圖片描述

場景二路線:A→163114830930512345160929361292→B
長度:109342

問題2

在問題1的基礎上增加了轉彎半徑的路線限制。

方案

在問題1當中,由於不考慮轉彎半徑的問題,因此路徑規劃只需知道出發點和目的地點的座標,即可輕易模擬出飛行軌跡,計算飛行的代價等相關數據,這個小題增加了對轉彎半徑的約束,使得飛行器不能在點與點直接以直線的軌跡飛行。第一個思路想到的是泛函,求導相關的思路,轉彎半徑問題就可以轉化爲限制導數的大小的問題,但是後來由於數學菜雞有很多地方想不明白,並且算法實現起來非常有難度。
這個小題是我們隊當時花費時間最久的一個小題,甚至我們是先完成的第三小題,在解決的第二小題。
本着寫不來,就查論文的指導方針,找了很久論文,還真找到了一個非常切合問題的解決技術,Dubins曲線

在1957年, Lester Eli Dubins (1920–2010)
證明任何路徑都可以由最大麴率和/或直線段組成(兩點之間的路徑必須存在)。
換句話說,連接兩點的最短路徑將通過最大麴率的曲的圓弧和直線段的構成。 後來Pontryagin的最大原則證明了相同的結果。

因此藉助dubins的相關理論,轉彎的地方出現的弧線要使距離最短,出現的弧線的曲率要最大,即最小的轉彎半徑的圓。因此可以不用考慮是否曲線是不是爲圓弧或者曲率是否合適等問題,需要轉彎的地方,直接用最大麴率的圓弧代替即可,這樣問題就被簡化爲已知入射角和出射角,利用已知圓弧的一部分將角度轉過來的問題。
在這裏插入圖片描述
dubins曲線研究的是二維平面的性質,我們利用投影的實現,將xyz空間上的一系列校正點,分別投影到xOy平面(底面)和zOy平面(後面),將三維空間的路徑規劃分解爲兩個正交的二維的平面的優化問題。分別計算出xOy平面和zOy平面的軌跡之後,統一x座標,取對應的y,z座標,即可合併爲一條三維的路線。

結果

在這裏插入圖片描述

場景一路線:A→50369237233598561448485→B
長度:104935

在這裏插入圖片描述

場景二路線:A→163114830930512345160929361292→B
長度:109411

由於最小轉彎半徑爲200m,圖示的距離卻在100000m的維度,因此拐角十分不明顯,不過由於增加了這個限制,在第一問中原本規劃的路徑由於在某幾個校正點之前十分極限(誤差僅僅相差零點零幾米),導致原本路徑規劃無法正常通過,從而重新規劃了對第一小題來說的次優路徑(誤差相對寬鬆)

問題3

在第一問的基礎上增加了校正成功的概率問題。

方案

這個小題我感覺我們的解法存在相當大的問題,非常之暴力(太菜了沒辦法╮(╯▽╰)╭)。我們這邊採用了一種說起來非常高大上的方法來解決概率問題,蒙特卡洛方法求解概率。說穿了就是一遍又一遍的模擬,然後統計成功和不成功的次數來逼近真實的概率。這導致我們第三問的算法非常低效,因爲前兩問沒有變量一個路徑只要跑一次,第三問因爲有概率,因此我們設定了一旦路徑中包含含有概率的矯正點,就讓他模擬跑k次,來算這條路徑成功的概率( ′ 3`) 。

結果

在這裏插入圖片描述

場景一路線:A → 5784178023760733194450448485302612 → B
航跡長度爲 108439 m,誤差校正點 12,成功抵達終點概率 100%

在這裏插入圖片描述

場景一路線:A → 1693221001371941902962502437382442113212793013828799326 → B
航跡長度爲 147271 m,誤差校正點 19,成功抵達終點概率 64.01%

由於我們秉持成功抵達優先(其實是因爲路徑包含不穩定點的話要進行重複模擬太費時間╮(╯▽╰)╭),因爲不穩定點的關係,饒了很多遠路,但是場景一還是能繞出來,場景二因爲點設置的非常極限,必須要經過不穩定點(主辦方應該也不想我們可以完全繞過吧,不然就退化成減少了校正點的第一問了),導致最後成功率只有65%。這個已經比第一問的時候的場景二的路線多繞了將近4w米了,可以看到路線十分曲折╥﹏╥

寫在最後

本次比賽我是負責代碼的構建與數值解的求解過程,(這裏說的是我求解的思路,並且過去有點久了,有可能和文章中的描述有些許的出入)另外兩位隊友分別負責問題的數學公式化和文章的寫作。感覺數模分工明確還是挺重要的(有全能大佬的除外),不然一個人肯定是來不及的。
順便說一句,我們比賽幾天做下來,竟然沒有通宵(≧∇≦)ノ,簡直不敢相信,有可能太菜,有很多要注意的點沒有注意到吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章