如何從零開始準備數學建模大賽?

一.大賽介紹

全國大學生數學建模大賽簡介:

全國大學生數學建模競賽創辦於(yu) 1992年,每年一屆,是全國高校規模最大的基礎性學科競賽,也是世界上規模最大的數學建模競賽。

全國大學生數學建模競賽作為(wei) 全國高校規模最大的課外科技活動之一,2022年高教社杯全國大學生數學建模競賽將在9月15日-9月18日舉(ju) 行!

數模國一團隊經驗分享:如何從(cong) 零開始準備數學建模大賽?

競賽麵向全國大專(zhuan) 院校的學生,不分專(zhuan) 業(ye) ,本科組競賽所有大學生均可參加。競賽采取通訊方式進行比賽,地點設在各個(ge) 高校,比賽期間規定不能與(yu) 老師交流,但可以在互聯網上查閱資料。

二.團隊簡介

段靖坤

上海交通大學電子信息與(yu) 電氣工程學院2020級微電子科學與(yu) 工程專(zhuan) 業(ye) 本科生,致遠工科榮譽計劃學生。

在本次比賽中主要負責建模和可視化部分方麵的工作。能夠使用c++,python,MATLAB等多門編程語言,對於(yu) 圖論有關(guan) 問題和算法有一定的積累,同時能夠較熟悉地運用MATLAB進行數據的可視化工作。

劉奕辰

上海交通大學電子信息與(yu) 電氣工程學院2020級測控技術與(yu) 儀(yi) 器專(zhuan) 業(ye) 本科生。

主要負責寫(xie) 作部分,用的工具是LaTeX。同時在備賽時期也對數學模型和可視化兩(liang) 部分進行相關(guan) 積累。

薛家奇

上海交通大學電子信息與(yu) 電氣工程學院2020級IEEE專(zhuan) 業(ye) 本科生。

負責編程部分,主要編程語言是python。

三.備賽方法

賽前準備:

1.組隊報名

我們(men) 小隊的組建,首先是因為(wei) 隊內(nei) 同學一關(guan) 注到了國賽的相關(guan) 信息,於(yu) 是她聯係了同學二進行組隊,同學二由於(yu) 在大一下學期與(yu) 同學三相處較多,再加上其能夠熟練運用python語言的緣故,便邀請同學三一起組隊。這樣就組成了我們(men) 現在的隊伍。

2.知識儲(chu) 備

組隊之後,我們(men) 聽從(cong) 校內(nei) 老師的安排,在指導老師的安排下在暑假的空閑時間參與(yu) 了學校組織的線下線上的培訓,對於(yu) 數學建模、數學建模國賽、以及相關(guan) 算法建模思路有了初步了解。

之後通過培訓群提供的每日推送以及往年培訓的影像資料,我們(men) 又及時補充學習(xi) 了一些建模、算法的方麵知識,例如我們(men) 後來有所使用到的聚類算法、動態規劃等等。

在假期中,我們(men) 小隊還認真完成了培訓老師要求的相關(guan) 作業(ye) ,三次作業(ye) 分別鞏固了我們(men) 論文寫(xie) 作、算法和可視化方麵的知識,讓我們(men) 對於(yu) 所學知識的運用更近了一步。

3.技能準備

在校內(nei) 培訓之餘(yu) ,我們(men) 還自己不斷鞏固自己的技能,學習(xi) 了解了更多python的庫及其應用,掌握了更多高效的算法;負責寫(xie) 作的同學進一步鞏固了自己的論文寫(xie) 作能力,同時也查閱了很多算法資料;編程同學學習(xi) 了很多可視化技巧,參考了往年的優(you) 秀論文。

4.賽前練兵

在假期過了大半之後,為(wei) 了加強隊員間的配合,同時也為(wei) 了在國賽之前進行一次預賽,我們(men) 參加了上海交通大學等三校一起舉(ju) 辦的杉數杯數學建模精英賽。

在這次比賽中,我們(men) 采用線上的形勢,經過討論確定選題,針對題目查閱相關(guan) 資料,學習(xi) 相應算法,並針對題目具體(ti) 要求,對於(yu) 算法進一步優(you) 化,實現算法解決(jue) 問題後一起打磨論文內(nei) 容。

這次比賽讓我們(men) 積累了數學建模比賽的經驗,增強了我們(men) 配合的默契,最終也取得了一等獎的好成績,為(wei) 我們(men) 迎戰國賽提供了極大的信心。

正式比賽:

剛開始拿到題目時,發現三個(ge) 題目與(yu) 我們(men) 所熟悉的類型以及之前的練習(xi) 有一定差距,所以其實對三個(ge) 題目的把握都不是很大,但是由於(yu) 有隊員比較排斥C題數據題,也有隊員較為(wei) 反感化學背景的B題,所以我們(men) 選擇A題為(wei) 主要攻破點。

然後開始資料收集,一開始在資料查找上出現一些困難,網絡上對FAST望遠鏡的相關(guan) 文獻隻停留於(yu) 基本情況的介紹,對於(yu) 如何進行連續性的相互連接的曲麵優(you) 化,以及如何盡可能滿足各種約束條件的問題也出現瓶頸。

為(wei) 了避免過多時間的浪費,我們(men) 決(jue) 定先將比較容易處理的第一問以及第二問中坐標係轉換的已有思路建模實現,同時在一個(ge) 同學敲代碼的時候,另外兩(liang) 個(ge) 人進行繼續的資料搜索與(yu) 建模思路探討。

後來同學查找到一篇關(guan) 於(yu) 望遠鏡曲麵調節的底層邏輯分析的論文,獲得可以將連續問題進行離散化的解題思路。

一開始我們(men) 嚐試將所有結點移動到理想曲麵上的情況,但後來結合實際生活經驗和查閱相關(guan) 資料,我們(men) 又認為(wei) 最好的擬合情況下,實際反射板應該是會(hui) 穿過理想拋物麵的。所以最終以兩(liang) 種解決(jue) 方案進行計算比較,選出較優(you) 結果。

在整個(ge) 過程中的人員分工較為(wei) 明確,除去最開始的討論,其餘(yu) 時間基本是每個(ge) 人負責自己擅長的那一方麵,並且及時將疑問和需求提出來。

所以在確定完建模思路後,編程手立即開始實現,寫(xie) 作手開始寫(xie) 問題重述、模型假設等前期論文準備,保持問題的解決(jue) 與(yu) 論文的寫(xie) 作同步進行,每解決(jue) 一個(ge) 問題就可以開始同步的寫(xie) 作。

我們(men) 雖然在出題當日就完成了題目的選擇,但是第一天解題的進度卻不是特別理想。一方麵由於(yu) 比賽地點選擇在圖書(shu) 館,會(hui) 有閉館時間限製,另一方麵可能大家都比較養(yang) 生(也可能是腦子亂(luan) 了不想思考),所以我們(men) 並沒有出現過度熬夜的情況,每天好好吃飯並保證一定的睡眠,第二天準時在開館的時間到圖書(shu) 館開始理清頭緒繼續工作。

這樣也使我們(men) 一直處於(yu) 頭腦清醒的狀態。當然到後期解題思路越來越明晰,三人配合緊湊,最大限度地利用好在圖書(shu) 館的所有時間,在最後一天下午便完成論文初稿。

之後三個(ge) 人一起閱讀,修改表達不到位或可以提升的地方,並且思考哪些地方可以進行可視化處理,豐(feng) 富論文內(nei) 容。在排版附件時出現了一些問題,Python輸出過程的展示在LaTeX裏會(hui) 有亂(luan) 碼,所以最終決(jue) 定將出現亂(luan) 碼的地方截圖,然後依次排版插入進去來解決(jue) 。

當然在剛開始的時候,由於(yu) 讀題不仔細,導致三個(ge) 人漏掉一些條件,並且理解錯定點的位置坐標,在第二題算完之後才發現,隻能重頭來,所以朋友們(men) 一定一定一定要好好讀題,每一個(ge) 條件和符號都是有意義(yi) 的,附件裏的東(dong) 西也要看仔細。

對於(yu) 一些條件,比如0.07%的限製,三個(ge) 人一開始因為(wei) 實在想不出解決(jue) 方案,就決(jue) 定先算著,然後進行檢驗調整,結果最後算出來有一半都不符合,第三天三個(ge) 人也沒轍了隻能在論文裏裝傻,隻在最後的模型缺點裏提了一下。

數模國一團隊經驗分享:如何從(cong) 零開始準備數學建模大賽?

獲獎論文截圖

但現在想來如果當時一直鑽牛角尖,抓住這一點不放,可能就會(hui) 有不同的結果,所以,(也許可能大概)對於(yu) 某一些(但起碼絕大多數問題都要解決(jue) )暫時解決(jue) 不了的小問題不要死摳,要學會(hui) 舍得。

遇到的困難:

1.選題

因為(wei) 有隊員討厭化學,所以盡量不要選B題(他的同伴們(men) 善解人意地同意了A題)

有同學認為(wei) B題多變量而且不熟悉評價(jia) 類的問題,相比之下A題感覺思路比較簡單。

2.理想拋物麵的方程

首先有隊員認為(wei) 拋物麵的頂點就在球麵上(潛意識裏可能是因為(wei) 這樣好算)

結果他的同伴們(men) 發現問題,後來改了(這已經是第二天的事情了)

3.代碼行數有點多

每新開一個(ge) .py文件就複製一次要用的之前的代碼而沒有import,後來代碼多的時候高亮有點跑不動了

當然自己看著也有點費勁了,不過幸好最後不算太多

數模國一團隊經驗分享:如何從(cong) 零開始準備數學建模大賽?

4.不同python第三方庫的應用

為(wei) 了要讀他給的那個(ge) .csv文件,先是去學openpyxl,結果發現這個(ge) 東(dong) 西隻能讀寫(xie) .xlsx文件,再去看xlrd,也不行……最後隻能用之前從(cong) 來沒用過的pandas來讀,(之前居然從(cong) 來沒用過pandas,所以說還是要多積累)

在比賽前一天剛知道了numba的用法,他就在寫(xie) 的時候一直用,可能能快上幾倍吧(也激發了將重複過程當作函數拿出來的熱情)

用sympy計算可以算出來的表達式,比scipy每次數值求解應該要更快。

要寫(xie) .xlsx文件,還是用openpyxl吧(三種文件類型三個(ge) 庫唄,無奈)

5.平板與(yu) 球麵之爭(zheng)

在三個(ge) 整天裏的第一天結束的時候,我們(men) 終於(yu) 算出了接受比,但卻發現這個(ge) 數低得可憐,於(yu) 是就找問題,發現三角形的平板太大了,接受的地方太小了,如果用的是平麵的話,接受比就上不去。

這對於(yu) 我們(men) 來說可以是滅頂之災了,認為(wei) 一天的工作全部白費,這次比賽也要以失敗告終了。

第二天再改的時候,發現之前的部分並不是全然不能用,隻需要進行少部分修改,就能把它從(cong) 平麵變成球麵。這可真是意料之外的狂喜。

6.附錄排版的困難

由於(yu) 問題二答案的表格較長,用常用的方式插入表格導致表格是以一個(ge) 無限長的表出現在一頁之上,後來大家查資料發現可以用longtable來解決(jue) ,這也讓大家明白積累這種東(dong) 西越多越好。

7.最終也沒有解決(jue) 的困難

"變化幅度不超過 0.07%",因為(wei) 對作出題目,尤其是在0.07%限製條件下的題目不抱有希望,因此,我們(men) 決(jue) 定先把這個(ge) 條件放過去,等算完了之後再來檢驗這個(ge) 限製條件。

然而,在最後一天,當我們(men) 檢驗時,發現幾乎有一半的數據不滿足這個(ge) 約束條件。對此沒有解決(jue) 辦法,隻能靜靜地等待著截至時間的到來。

想分享的經驗經驗教訓:

1. 不要放棄希望

2. 良好的,模塊化的編程是很重要的,這可以盡量降低意外造成的損失。

數模國一團隊經驗分享:如何從(cong) 零開始準備數學建模大賽?

以上就是我們(men) 的全部分享。

【競賽報名/項目谘詢+微信:mollywei007】

上一篇

2022年教育部認證中外合辦碩士項目大盤點

下一篇

名校到底要錄取什麽樣的學生?

你也可能喜歡

  • 暫無相關文章!

評論已經被關(guan) 閉。

插入圖片
返回頂部