劉 森,劉 琳
(1. 黑龍江省水利水電勘測設計研究院,哈爾濱150080;2. 山東省泗水縣水利局,山東 泗水273200)
中國地域遼闊、河流眾多。洪澇災害自古以來不僅對人民生活的安全造成嚴重威脅,而且對于沿線農牧、漁業等生產造成危害,致使人民生命安全、財產得不到保障。人們對待洪澇災害最有利的方法之一便是修建堤防工程。
堤防工程較樞紐、除險加固、灌區等工程最明顯的特點便是沿線較長,工程呈線性分布。堤防工程的料場規劃,尤其是沿線集中料場,一直是施工組織設計中的重點和難點。目前部分設計師對于堤防工程沿線集中料場的規劃仍然是采用經驗估算的方法。這種方法對于沿線較短的堤防或者料場單一的情況還能受用,但是對于沿線較長和料場較多的情況就大不一樣。這不僅耗費大量時間、精力,而且對于計算的精度不能保證,對于投資控制不能給予更好的指導,造成資源的浪費和能源的消耗。目前解決堤防工程料場規劃最有效的方法之一就是線性規劃模型。
對于沿線較短和料場較少的情況,目前解法較多,比如單純形法,Matlab 軟件,Excel 自帶的規劃求解等。然而這些方法,對于沿線較長和料場較多的情況,由于決策變量較多(一般約有上百個),上述方法顯然比較困難[1-2]。
文章討論的主要問題就是針對沿線較長并且沿線集中料場較多的堤防的線性規劃模型求解,即利用Matlab 自帶的Excel-link 宏將數據輸入至Matlab程序,然后利用Matlab 程序的linprog 函數來求解。本文所用的方法仍然適用于堤防工程沿線較短和料場較少情況。
線性規劃理論與方法目前已比較成熟,其一般形式為:

其中,式(1)為目標函數,有max 和min 兩種形式;式(2)稱為約束條件,它們表示問題受到各種約束,一般有三種形式:“≥”、“≤”(這兩種約束又稱不等式約束)或“等于”(又稱等式約束);式(3)稱為非負約束,很多情況下決策變量都蘊含了這個假設。
線性規劃的模型還可以表示為下列矩陣形式:

在上述模型中,x 為決策變量;c 為目標函數系數向量或價值系數向量或費用系數向量;b 為約束右端常數向量或簡稱右端項,也稱資源常數向量;A 為約束系數矩陣或技術系數矩陣。
Mat lab 是近來年得到快速發展的數學軟件,它將高性能的數值計算和可視化集成在一起,并提供了大量的內置函數,被廣泛的應用于科學計算、控制系統、信息處理等領域的分析、仿真和設計工作[3]。
文章所用到的函數為Mat lab 自帶的linprog 函數,其數學模型為:

式中:f 為目標函數;A 為不等式約束的系數矩陣;b為不等數約束的右端項;Aeq 為等數約束的系數矩陣;beq 為等式約束的右端項;lb 為變量的下界;ub為變量的上界。
Excel-link 宏是Matlab 軟件提供的能與Excel互動操作的宏,它使得數據在Mat lab 和excel 之間隨意交換,以及在Excel 下調用Mat lab 的函數[4]。
若Excel 程序未加載Excel-link 宏,可在Excel工具上→加載宏→瀏覽(Mat lab 的安裝路徑)→toolbox 文件夾→exlink 文件夾→excllink. xla 文件(打開),即可使用此宏。如圖1 所示:
在Excel 工具條中出現startmatlab、putmatrix、getmatrix、evalstring,說明Excel-link 說明加載成功。
putmatrix:向Mat lab 中輸入數據;getmatrix:從Mat lab 中獲取數據。文章主要用到這兩個命令。
黑龍江省某堤防填筑工程,沿線長110 km,堤防每5 km分一段,共22 段各段需土量見表1。沿線共有13個料場,編號為1 ~13,儲量見表2。各個料場到各個堤防段的平均運距見表3。
本項目決策變量較多為22 ×13 =284個,命名采用堤防段(行)與料場(列)編號進行。比如堤防編號01 與料場編號01,表示從料場01 向堤防01 的供料量,用x0101表示,依此類推,x0102表示從料場02號向堤防段01 號的供料量。
根據模型1,建立數學模型如下:


表1 堤防沿線分段需土量 萬m3
為了方便Mat lab 計算,改用模型3 如下:

式中各含義與本文第三節“Matlab 程序簡介”相同。
由于系數矩陣A 與Aeq 自變量個數較多為284個,而excel2003 版本以前,表格行數僅有256 行,因此數據在輸入Mat lab 之前,需要將A 矩陣、Aeq 矩陣轉置,等輸入至Mat lab 之后再進行轉置運算即可。A 矩陣與Aeq 矩陣變為:

首先選中要輸入Mat lab 的數據源,如圖2 所示。然后點擊命令putmatrix,會彈出輸入至Mat lab變量名稱對話框,如圖3 所示,可以鍵入任意名稱,為了便于理解和下一步運算,建議輸入A。接下來分別輸入Aeq,f,b,beq,lb 至Mat lab。

圖2 AT在excel 中的部分數據源

圖3 數據輸入Mat lab 數據的對話框
在Mat lab 命令窗口中鍵入[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb,ub)


運算結果為:整理后數據見表4。

圖1 加載宏示意圖

表2 料場儲量表 萬m3

表3 各個料場至堤防段的平均運距 km

表4 運算結果整理數據列表 萬m3
1)堤防工程沿線較長,線性規劃模型能很好的解決多決策變量下的堤防工程料場規劃問題,利用現代計算機運算速度快的特點,只要給Mat lab 給予準確的模型,就能很快的得出運算結果。
2)利用Mat lab 與Excel 聯合求解多決策變量,看似步驟繁瑣,但是利用Excel 強大的表格處理功能(本文沒有介紹)能很快的將數據輸入Excel 表格中,從而很容易將數據輸入至Mat lab 程序中,思路清晰,便于理解,運算結果能較好的指導施工。
3)由表4 可以看出,運算結果一目了然,非常實用,對于更長堤防或者更多沿線料場的求解,效果更是明顯。
[1]吳祈宗.運籌學與最優化方法[M]. 北京:機械工業出版社,2003:8.
[2]焦樹鋒. 線性規劃的Excel 解法[J]. 濱州職業學院學報,2007(12):12 -16.
[3]王家文.Matlab7.0 編程基礎[M]. 北京:機械工業出版社,2005:7.
[4]吳祈宗.運籌學與最優化MAT LAB 編程[M]. 北京:機械工業出版社,2003:8.