本書首先介紹MATLAB的基本使用方法和程序設計基礎,然后將MATLAB與*化計算相結合,基于*化理論與方法,講解如何使用MATLAB求解*化領域的實際問題。這些問題涵蓋*化理論與方法中的線性規劃問題、整數規劃問題、非線性規劃問題、二次規劃問題、多目標規劃問題、圖與網絡優化問題,以及現代智能優化問題。本書內容循序漸進、由淺入深,并結合大量實例幫助讀者理解和掌握*化問題的建模方法與求解技巧。
案例翔實,MATLAB*化計算的經典之作。 提供MATLAB教學視頻免費下載。
前 言
人們在處理生產過程、金融投資、工程應用、機械設計、經營管理等實際問題時,都希望以最優的方式求得人力、物力和財力的合理運用。如何運用數學和工程的方法獲取這個最佳處理結果的問題稱為最優化問題。而針對最優化問題,如何確定一系列可行方案,然后從可行方案中通過分析、比較和判斷使所得結果最佳的方法稱為最優化方法。
最優化理論和方法自古就有,最典型的實例就是黃金分割,最優化方法成為科學方法則在17世紀以后。牛頓和萊布尼茨所創建的微積分理論為最優化問題的解決提供了理論基礎,而后產生的變分法和簡單的庫存模型等精確的解析方法可以稱為古典最優化方法。
古典最優化方法雖然出現得比較早,但是由于計算手段的限制導致這些方法在解決實際問題時遇到了瓶頸。到了20世紀40年代末期,第二次世界大戰前后,由于軍事上的需要產生了運籌學,此后,因為計算機的興起和日益普及,使得原來根本制約優化設計方法的大運算量問題得以解決,為數值優化方法的發展提供了有效的手段,于是最優化技術突飛猛進,得到了廣泛的應用并創造了巨大的經濟效益和社會價值。這個技術熱點也促使了近代最優化理論的建立,它主要以數學規劃法為基礎,研究各種系統的優化途徑及方案,為決策者提供科學決策的依據。
與此同時,隨著計算機應用技術的發展,各種可用于最優化方法設計與實現的軟件層出不窮,豐富了科研技術人員的開發研究手段,提高了解決實際問題的效率,MATLAB就是其中的一種。MATLAB是美國MathWorks公司出品的商業數學軟件,與Mathematica、Maple并稱為三大數學軟件。MATLAB以其強大的科學計算功能和覆蓋面廣、專業性強的工具箱發展成為適合多學科、跨平臺的大型實用科學計算軟件,也為最優化計算問題的解決提供了有力的工具。
在筆者的教學過程中,發現許多非數學專業的學生在學習數學規劃、運籌學等與最優化理論和方法相關的課程時,往往覺得這些數學理論晦澀難懂,且由于拘泥于某些細節,很難形成對最優化理論和方法的全面了解,阻礙了其分析和解決實際問題的能力。因而筆者一直想撰寫這么一本書,讓讀者覺得最優化方法是有趣而且實用的,并且能夠運用科學計算的方法,跳出艱深數學理論的囹圄,利用MATLAB這個強大的工具實現并驗證自己的想法,加深對最優化理論的理解。故本書以工程應用為基礎,將最優化理論和方法與MATLAB相結合,幫助讀者從理論和實踐兩個方面提高解決最優化問題的能力,讓即便是數學基礎不夠深厚的讀者也同樣能夠利用MATLAB解決較難的最優化數學問題,為讀者能夠快速進入這個領域、設計高效可行的最優化方案奠定扎實的基礎。
本書的內容以最優化理論為主線,以最優化方法與實際應用相結合的實例為基礎,并結合筆者多年的教學實踐經驗,介紹各種最優化理論和方法在MATLAB中的實現方法。本書的內容涵蓋了最優化理論與方法中的杰出成果,例如線性規劃、整數規劃、非線性規劃、二次規劃、多目標規劃、圖與網絡優化等,還兼顧了新近發展的近代智能優化方法,例如遺傳算法、模擬退火、禁忌搜索等,使讀者有機會結合MATLAB去接觸解決較為復雜最優化問題的啟發式搜索方法,通過探索提高讀者的自我學習能力。
本書由淺入深、循序漸進地讓讀者從整體上把握最優化計算的實質,進而可以將實際的問題抽象成易于理解的數學模型,同時轉換成MATLAB語言進行求解。書中的實例是筆者多年教學中理解和思想的凝練,內容經過精心的考量和裁剪,相信會受到讀者的認可。
本書分為11章,第1章主要講解MATLAB的應用基礎,包括MATLAB的基本使用方法、MATLAB的數據類型和各種運算、MATLAB的圖形功能及工具箱的使用;第2章介紹MATLAB的控制流程、M文件等基礎編程技術及MATLAB的接口知識,并結合VC 講解如何將MATLAB和其他高級編程語言相結合,高效地解決實際應用開發問題;第3章針對本書探討的核心問題最優化計算,首先介紹最優化問題的概念、最優化理論和方法的產生與發展,然后歸納總結出最優化問題的建模方法;第4章至第10章將MATLAB和最優化理論相結合,分別介紹如何使用MATLAB解決線性規劃、整數規劃、非線性規劃、二次規劃、多目標規劃、圖與網絡優化和智能優化等最優化領域的實際問題,分析和總結各種最優化問題的建模方法與求解算法,并給出MATLAB優化工具箱中相應函數的使用方法,通過大量的實例幫助讀者理解最優化計算是如何應用于實際問題的。本書對各種最優化方法的講解均注重專業知識和MATLAB實踐應用的結合,都給出了基本的推導和結論,分析了各種最優化問題的理論求解方法和MATLAB求解方法,方便讀者比照和理解。值得一提的是,筆者在數學理論的完整性和可讀性之間作了大量權衡,使得廣大讀者可以各取所需,既滿足了希望深入了解最優化理論的讀者的需求,又兼顧了在復雜數學理論上有所困擾的讀者在應用方面的需求。第11章給出各種最優化方法的綜合實例及其MATLAB求解方法。
筆者在撰寫本書的過程中,得到很多同事、同行和朋友的幫助,他們為本書的編寫提供了許多寶貴的意見和建議,使得本書的思路和內容臻于完善,在此表示深深的謝意。本書還從使用者的角度出發,將筆者自身教學和科研中豐富的經驗融入書中知識點的講解,并將MATLAB工具箱與最優化實際問題相結合,使讀者在學習理論知識的同時可以嘗試設計各種最優化方案以解決各領域的實際問題,提高讀者將知識轉化為能力的水平。
本書在第1版的基礎上,將MATLAB軟件平臺升級到了MATLAB R2014a版本。本書可供最優化領域的研究人員參考,也可作為高校該類課程高年級本科生和研究生的教材,還可作為其他科技工作者在科學計算等方面的參考書。
本書提供案例的源代碼及MATLAB R2014a基礎教學視頻下載,讀者可登錄華信教育資源網(www.hxedu.com.cn),注冊成會員后查找本書所在頁面免費下載。
本書主要由李明編著,同時參加編寫工作的還有張玉蘭、高克臻、張云霞、許小榮、王東、王龍、張銀芳、周新國、蔡娜、胡書敏、李爽、蘇靜、張秀梅、賈東永。
由于筆者水平所限,加之時間緊迫,書中疏漏、不當甚至謬誤之處在所難免,在此懇請廣大讀者、同行和各界人士批評和指正。
編 著 者
2017年8月
李明,中國科技大學自動化專業博士,廣東工業大學副教授;《運籌學學報》特約編輯。精通MATLAB、最優化計算、C/C 。主持的科研項目曾獲科技部三等獎1項,省級優秀項目1項。具備豐富的實踐經驗和寫作經驗,編寫的圖書通俗易懂,指導性強。
目 錄
第1章 MATLAB語言基礎1
1.1 MATLAB簡介1
1.1.1 MATLAB的產生與發展1
1.1.2 MATLAB語言的優勢1
1.2 MATLAB入門2
1.2.1 MATLAB工作環境2
1.2.2 MATLAB中的數據類型8
1.2.3 MATLAB語言中的常量與變量11
1.2.4 MATLAB中的矩陣13
1.2.5 符號運算20
1.2.6 關系與邏輯運算22
1.3 MATLAB中的矩陣運算22
1.3.1 矩陣的代數運算22
1.3.2 矩陣的關系與邏輯運算25
1.3.3 矩陣分析25
1.4 MATLAB中的圖形功能28
1.4.1 二維圖形29
1.4.2 三維圖形33
1.5 MATLAB工具箱的使用35
1.5.1 MATLAB工具箱的特點35
1.5.2 MATLAB工具箱的使用方法36
1.6 本章小結37
第2章 MATLAB程序設計38
2.1 MATLAB程序設計方法38
2.1.1 MATLAB中的控制結構38
2.1.2 MATLAB中的M腳本文件和M函數文件46
2.1.3 MATLAB程序的調試53
2.2 MATLAB擴展編程55
2.2.1 調用MATLAB引擎56
2.2.2 調用動態鏈接庫65
2.3 本章小結73
第3章 最優化計算問題概論74
3.1 引言74
3.1.1 最優化問題的提出74
3.1.2 最優化理論和方法的產生與發展75
3.2 最優化問題的典型實例76
3.2.1 資源利用問題76
3.2.2 分派問題77
3.2.3 投資決策問題79
3.2.4 多目標規劃問題80
3.3 最優化問題的數學描述81
3.3.1 最優化問題三要素81
3.3.2 最優化問題分類82
3.4 最優化問題的解決方案83
3.5 本章小結84
第4章 線性規劃85
4.1 引言85
4.2 線性規劃問題的一般提法85
4.3 線性規劃問題的標準型87
4.3.1 線性規劃問題的一般標準型87
4.3.2 線性規劃問題的矩陣標準型87
4.3.3 線性規劃問題的向量標準型88
4.3.4 非標準型的標準化88
4.4 線性規劃問題中解的概念89
4.4.1 基本解90
4.4.2 可行解、可行域91
4.4.3 基本可行解91
4.4.4 最優解91
4.4.5 實例91
4.5 線性規劃問題的求解92
4.5.1 圖形解法93
4.5.2 單純形法94
4.5.3 人工變量單純形法102
4.6 線性規劃問題的MATLAB求解方法107
4.6.1 線性規劃問題的MATLAB標準型107
4.6.2 線性規劃問題求解的MATLAB函數調用108
4.7 線性規劃實例114
4.7.1 生產計劃問題115
4.7.2 連續投資問題117
4.7.3 配料問題119
4.7.4 運輸問題120
4.7.5 絕對值問題122
4.8 本章小結124
習題124
第5章 整數規劃127
5.1 引言127
5.2 整數規劃的數學模型127
5.2.1 典型的整數規劃問題127
5.2.2 整數規劃問題的數學模型131
5.3 整數規劃的求解131
5.3.1 理論基礎131
5.3.2 分枝定界法132
5.3.3 隱枚舉法136
5.3.4 匈牙利算法141
5.4 整數規劃問題的MATLAB求解方法145
5.4.1 用MATLAB求解一般混合整數規劃問題145
5.4.2 用MATLAB求解0-1規劃問題150
5.4.3 已給出實例的MATLAB求解153
5.5 整數規劃的應用實例157
5.5.1 計劃排班問題157
5.5.2 合理下料問題159
5.5.3 生產計劃問題162
5.5.4 背包問題166
5.6 本章小結168
習題168
第6章 非線性規劃171
6.1 引言171
6.2 非線性規劃問題的數學模型171
6.2.1 典型的非線性規劃問題171
6.2.2 非線性規劃問題的數學模型173
6.3 理論基礎173
6.3.1 全局最優解和局部最優解174
6.3.2 凸函數和凸規劃174
6.3.3 無約束非線性規劃問題的極值條件177
6.3.4 多維有約束非線性規劃問題的極值條件179
6.4 非線性規劃問題的求解183
6.5 一維搜索185
6.5.1 一維搜索的基本思想185
6.5.2 試探法黃金分割法188
6.5.3 插值法牛頓法190
6.5.4 拋物線法192
6.5.5 一維搜索的MATLAB求解192
6.6 多維無約束非線性優化196
6.6.1 最速下降法196
6.6.2 牛頓法198
6.6.3 共軛方向法201
6.6.4 Powell算法210
6.6.5 多維無約束優化的MATLAB求解函數fminunc213
6.6.6 多維無約束優化的MATLAB求解函數fminsearch223
6.7 多維約束非線性優化226
6.7.1 拉格朗日乘子法226
6.7.2 序列無約束極小化法228
6.7.3 近似規劃法234
6.7.4 多維約束優化的MATLAB求解236
6.8 綜合實例252
6.8.1 商品最優存儲方法253
6.8.2 產銷量的最佳安排256
6.9 本章小結258
習題258
第7章 二次規劃262
7.1 二次規劃問題的數學模型262
7.2 等式約束的二次規劃問題262
7.2.1 直接消去法263
7.2.2 拉格朗日乘子法264
7.3 有效集方法266
7.4 Wolfe算法270
7.5 Lemke算法273
7.6 二次規劃問題的MATLAB求解277
7.6.1 輸入參數和輸出參數278
7.6.2 控制參數設置278
7.6.3 命令詳解279
7.6.4 綜合實例281
7.7 本章小結284
習題284
第8章 多目標規劃286
8.1 多目標規劃問題的數學模型286
8.2 多目標規劃問題的解集和象集288
8.2.1 多目標規劃的解集288
8.2.2 多目標規劃的象集291
8.3 處理多目標規劃的方法292
8.3.1 約束法292
8.3.2 評價函數法293
8.3.3 功效系數法297
8.3.4 多目標規劃的MATLAB求解300
8.4 線性目標規劃306
8.4.1 線性目標規劃的數學模型309
8.4.2 線性目標規劃的求解方法316
8.4.3 線性目標規劃的MATLAB求解326
8.5 綜合實例333
8.6 本章小結337
習題338
第9章 圖與網絡優化340
9.1 引言340
9.2 基本概念341
9.2.1 圖的基本概念341
9.2.2 樹的基本概念348
9.3 最短路徑問題353
9.3.1 兩個指定頂點之間的最短路徑353
9.3.2 任意兩個頂點之間的最短路徑356
9.3.3 最短路徑問題的MATLAB求解359
9.4 網絡最大流問題363
9.4.1 基本概念與基本定理363
9.4.2 最大流問題的求解366
9.5 最小費用最大流373
9.5.1 基本概念373
9.5.2 最小費用最大流問題的求解374
9.5.3 最小費用最大流的MATLAB求解375
9.6 本章小結379
習題380
第10章 現代智能優化算法簡介382
10.1 引言382
10.2 遺傳算法382
10.2.1 概述383
10.2.2 基本要素383
10.2.3 遺傳算子385
10.2.4 遺傳算法的基本步驟387
10.2.5 遺傳算法的MATLAB實現391
10.3 模擬退火算法397
10.3.1 模擬退火算法的基本思想397
10.3.2 模擬退火的算法步驟397
10.3.3 模擬退火算法的參數控制問題400
10.3.4 模擬退火的MATLAB工具箱求解405
10.4 禁忌搜索409
10.4.1 局部鄰域搜索簡介409
10.4.2 禁忌搜索的基本原理410
10.4.3 禁忌搜索的關鍵技術411
10.4.4 禁忌搜索的MATLAB實現414
10.5 本章小結419
第11章 綜合案例420
11.1 線性規劃農業改造問題420
11.1.1 農業改造問題的建模420
11.1.2 農業改造問題的求解423
11.2 整數規劃組件配套問題426
11.2.1 組件配套問題的建模426
11.2.2 組件配套問題的求解427
11.3 非線性規劃廣告問題428
11.3.1 廣告問題的建模429
11.3.2 廣告問題的求解432
11.4 多目標規劃投資問題433
11.4.1 投資問題的建模434
11.4.2 投資問題的求解435
11.5 圖與網絡優化通信網問題437
11.5.1 通信網問題的建模438
11.5.2 通信網問題的求解438