1. 程式人生 > >第十五屆研究生數學建模F題(機場新增衛星廳對中轉旅客影響的評估方法)——飛機登機口優化分配問題

第十五屆研究生數學建模F題(機場新增衛星廳對中轉旅客影響的評估方法)——飛機登機口優化分配問題

簡介:

2018年9月13日到2018年9月19日舉行了第十五屆全國研究生數學建模競賽。在此次競賽中,我們選擇了第F題(優化分配問題)並最終獲得了三等獎(其實提交的時候,我本以為我們可以獲得二等獎的)。

題目大意:

在多種約束條件下,如何分配飛機登機口,使滿足1.儘可能多的飛機被安排在登機口,2.儘可能短的旅客中轉時間(儘可能少的旅客換乘緊張度)即第二和第三問題,3.儘可能少的登機口使用數量。以上的目標優先順序為1》2》3。具體問題可從網上找到,這裡不再贅述。此文主要記錄我隊對該題的求解方法。

題目分析:

相對於其他選題,該題是一個很明顯的優化分配問題,並且,數學建模比賽重在考察參賽隊員解決問題的思路,而不是耗盡所有時間去追求一個最優解。我們通過對問題的反覆閱讀,結合比賽時官方提供的論壇解答,確定瞭如下的求解策略:1.這是一個典型的NP問題,很難或者說基本不可能在短時間內求得最優的分配方案,因此,我們通過優化演算法在一定範圍內求解問題的較優值;2.對於多目標的優化分配方案,我們首先通過懲罰函式將其化為單目標的優化方案,並以此作為判斷解決方案的優劣;3.我們重點關注模型構建的合理性與可行性,論文結構的完整性與嚴謹性,而不是過分苛求結果的準確性。

在資料預處理階段:

1.我們根據題意只保留了20日到達航班或21日出發航班的資料,刪除了所有無法匹配的資料,大大簡化了後續的計算並提高了模型的合理性。

2.為方便計算和驗證,我們將諸如2018年11月12日10:20:30的時間資料統一轉換為整型資料,因此時間間隔即為兩個整型時間相減;另外,我們統一採用0,1,2等數字表示登機口型別、寬窄機型、到達/出發型別等字元資訊。

在模型構建階段:

我們根據題目要求構建目標函式,約束條件等資訊,並儘量採用統一的字元進行表示。總的來說,只要捋順了題目的各目標函式和約束條件,模型構建並不難。

在演算法求解階段:

我們採用了最簡單、最傳統的遺傳演算法求解該飛機登機口分配的NP問題。其中適應度函式即為各子問題的目標函式,染色體表示具體的解決方案(其中染色體長度即為飛機數量,如果沒記錯應該是303架次飛機),每一個基因表示一架飛機的登機口安排情況,其中數字1-N表示對應飛機被安排在1-N的登機口,數字N+1表示飛機被安排在臨時登機口。對於不合理的解決方案(即染色體不滿足約束條件),我們將該染色體的適應度降為0。在遺傳演算法初始化階段,我們採用了先到先隨機分配登機口的策略(包括隨機分配到臨時登機口),保證初始化時得到的解決方案必定為可行解(這樣可以保證演算法到最後一定會有可行解,即使該可行解並不是最優解)。我們的目標是通過多次演算法求解,儘可能地獲得近似最優解。在最終確定解決方案前,我們多次實驗調整合適的種群規模、變異率、雜交率等引數。選擇遺傳演算法求解該題的優勢在於:1.易於理解,方便編碼和解碼;2.能夠求解較優解,並在一定程度上逼近最優解;3.對於該題不同的3個小問題,主體程式碼不變,只需改變計算適應度的公式,極大地提高了編碼效率以及正確率。

在論文撰寫階段:

數學建模比賽的最終結果,需要以文件的形式呈現。因此,撰寫一篇完整的嚴謹的論文是該比賽的關鍵。我們不僅根據題目畫了對應的柱狀圖,還做了演算法的靈敏度分析,甚至做了對比實驗(以此說明增加了衛星廳的好處)。但是,我們畢竟只得到了三等獎而不是一等獎,因此一定有某些地方存在缺陷,等官方公佈優秀論文後,再加以研習。

最後:

在研究生的最後一年,參加了數學建模競賽,從另一個方面挑戰了自己,證明了自己也可以在高強度的數學建模競賽中獲得一席之地。自此,我短短的兩年半的研究生生涯獲得了學術論文、科研專案、學科競賽的大豐收。唯一遺憾的是,這是我研究生階段最後的一次機會,沒有獲得更高的獎項榮譽(畢竟提交時我以為我們二等獎還是穩的,萬一運氣好,還能拿個一等獎)。如果有興趣,歡迎大家在我的資源處下載我隊此次的論文及對應程式碼(C#)。