?

Python在數學建模中的應用初探

2024-01-29 12:30王海龍劉飄飄王易平
邯鄲職業技術學院學報 2023年4期
關鍵詞:數據量出租車建模

王海龍 劉飄飄 王易平

(1邯鄲職業技術學院,河北 邯鄲 056005;2吉利學院,成都 641423)

作為開源免費語言,Python語言簡潔易讀、擴展性強,在科學計算、數據處理等方面功能強大,可以幫助我們解決各類數學問題,在數學建模中具有廣泛的應用,逐漸成為數學建模中的常用編程語言。Python提供了數學建模所需的豐富的工具和庫,比如NumPy、SciPy、Matplotlib、Pandas、Pulp 等,下面通過一些實際問題來探討它們在數學建模中的具體應用。

一、Python在解決線性規劃問題中的應用

線性規劃主要是利用數學方法使資源的運用最優化,是數學建模問題中的常見類型。首先看一個典型題目:有一項工作需譯成英、日、德、俄四種文字,現有甲、乙、丙、丁四人,他們翻譯成不同語種的所需時間見表1,問如何安排人員最省時間?

表1 四人翻譯不同語種的所需時間(單位:h)

由于每個人僅參與一項翻譯工作,每個語種翻譯工作僅有1人完成,因此約束條件為:

這個問題可以運用Python語言的Pulp模塊來求解。Pulp模塊不是Python的默認安裝模塊,需要使用pip安裝。具體解題步驟如下:

1.定義問題為LP,求最小值(LpMinimize):

2.定義變量x,參數cat="Binary"定義變量類型為0-1型:

3.定義目標函數,格式為“問題名+=目標函數式”:

4.添加約束條件,格式為“問題名+=約束條件表達式”:

5.求解,solve()為求解函數:

6.輸出,LP.objective是目標函數值的最優解,LP.variables為每個變量的最優解:

在以上解題中,使用了Python 語言的pulp 模塊,輸出時還使用了pandas 和numpy 模塊,因此需要在程序中先使用import來導入這三個模塊。

NumPy 支持大量的維度數組與矩陣運算,Pandas 的函數和方法可以快速處理數據,這兩個模塊都可以在數學建模中發揮重要作用。上面題目如果數據量增加,可以通過pandas的read_excel函數來讀取,并可將計算結果再輸出到excel表格中。

二、Python在數據處理和分析中的應用

數學建模就是要用數學的辦法來優化和解決實際問題,題目通常源于生產生活,原始數據樣本采集自各個領域,一般數據量較大,且數據可能存在缺失、異常等情況,因此數據的處理和分析對數學建模非常重要。Python擁有的強大數據處理和分析能力,在數據讀取與預處理、數據分析、數據可視化等方面都可以發揮重要作用。

2021 年全國大學生數學建模競賽E 題:中藥材的鑒別,題目附件1 給出的數據量為425(藥材的編號)×3348(光譜的波數),如何分析和處理這上百萬的數據是解決問題的基礎。讀取數據:由于Python讀取csv文件速度較快,可以先將所給數據另存為csv格式,再使用pandas的read_csv函數導入。數據處理:導入的數據結構為DataFrame,可以使用眾多函數處理數據,使用columns、index、values函數輸出列索引、行索引、值,使用describe函數查看數據的統計性信息,還可以通過loc、iloc函數獲取行或列的數據,Concat函數可用于拼接數據等等。繪制圖像:Matplotlib庫的pyplot函數可方便地繪制圖像。使用Python將附件1給出的數據繪制圖像如圖1所示:

圖1 各波段下藥材吸光度圖

2022 年全國大學生數學建模競賽E 題:小批量物料的生產安排,題目需首先計算各種物料需求出現的頻次、需求數量、平均價格等??梢允褂肞andas 的分組函數groupby 和聚合函數agg 很快求出:首先使用pandas的read_csv 函數讀取附件的csv文件,將數據存儲為DataFrame 對象;然后使用groupby 函數對數據按“物料編碼”列分組,并使用聚合函數agg 對“物料編碼”列計數,對“需求量”列求和,對“銷售單價”列求平均值;最后使用pandas的to_csv()函數將結果導出。導出數據表如圖2所示(部分截圖):

圖2 物料的頻次、需求數量、平均價格表

三、Python在采集網絡信息中的應用

數學建模有些題目需要參賽者自己采集網絡數據。2015 年全國大學生數學建模競賽B 題:“互聯網+”時代的出租車資源配置,就要求參賽者自己搜集相關數據,需要查找典型城市的出租車情況(數量、分布等)以及運營情況(高峰期、空載率等),從而得出出租車資源的供求關系。2019年全國大學生數學建模競賽C題:機場的出租車問題,就需要參賽者自己收集國內某一機場數據(如機場航班架次等)及其所在城市出租車的相關數據(如出租車數量等),從而研究機場乘客數量與出租車流量的關系。

Python語言功能強大,可以方便地獲取大量網絡數據。Python的requests庫可爬取網頁數據,Beautiful-Soup庫可解析網頁,正則表達式re 庫可檢索網頁,獲得需要的信息。比如在當當網搜索數學建模類圖書,檢索得到100個頁面,每個頁面有50本圖書的信息,利用Python編寫爬蟲程序,可以很快爬取這些圖書的名稱和價格等信息,并導出到excel表格中進行查看處理。導出數據表如圖3所示(部分截圖):

圖3 爬取的當當網數學建模類圖書表

除此之外還可以通過開源大數據平臺來獲取數據,比如利用Python的財經數據接口包TuShare來采集股票等金融數據,然后進行數據分析和可視化等操作。

猜你喜歡
數據量出租車建模
基于大數據量的初至層析成像算法優化
計算Lyapunov指數的模糊C均值聚類小數據量法
聯想等效,拓展建?!浴皫щ娦∏蛟诘刃鲋凶鰣A周運動”為例
乘坐出租車
高刷新率不容易顯示器需求與接口標準帶寬
寬帶信號采集與大數據量傳輸系統設計與研究
基于PSS/E的風電場建模與動態分析
不對稱半橋變換器的建模與仿真
憑什么
開往春天的深夜出租車
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合