精通MATLAB最最佳化計算(第2版)
MATLAB精品叢書
精通MATLAB最最佳化計算(第2版)龔純 王正林 編著
ISBN 978-7-121-14734-0
2012年1月出版
定價:59.00元(含光碟1張)
16開
420頁
系統、全面的科學計算內容
豐富、詳盡的MATLAB源程式
簡介、實用的精選套用實例
內容簡介
本書的主要內容是套用MATLAB來解決最最佳化問題,通過將“最最佳化問題”、“MATLAB最佳化工具箱”和“MATLAB編程”這三方面有機結合進行講述,即一方面是使用工具箱來快速解決最最佳化問題,另一方面是通過算法編程深入解決最最佳化問題。
本書側重於最最佳化算法的MATLAB實現,同時精選了大量的最最佳化問題實例,通過實例的分析與求解,切實教會讀者掌握MATLAB在最最佳化問題方面的套用。
通過本書,讀者不僅能掌握使用MATLAB最最佳化工具箱來快速解決實際問題,而且能學會分析最佳化算法和採用MATLAB編程解決最最佳化問題,從而提高分析和解決問題的能力。
本書可作為信息、數學、經濟、金融、管理、運籌、統計、計算機以及相關理工科專業的本科生和研究生作為教材、實驗或教學參考書,也可供相關工程技術與管理人員、數學建模愛好者參考。
前 言
本書第1版已被多所院校作為數學、信息、計算機、金融、運籌類課程的教材和教輔參考書,而且由於簡單易學、內容全面、講解細緻、實例豐富而深受廣大讀者的喜愛,上市兩年多以來長期占據同類書的銷售前列,得到了讀者的認可。
根據讀者的需求和軟體的升級,我們結合MATLAB軟體的最新版本,對全書的內容進行了完善與最佳化,使之更加適合讀者的需要。
新版導讀
全書分16章進行展開,分為MATLAB入門篇、最佳化計算基礎篇、最佳化計算高級篇和綜合套用篇。
1.MATLAB入門篇(第1~4章)
包括MATLAB概述、MATLAB計算基礎、MATLAB繪圖基礎、MATLAB程式設計基礎等內容。
MATLAB具有強大的計算功能和數據可視化功能,是首選的計算軟體。了解其軟體,掌握其計算和繪圖兩大功能,熟練使用MATLAB進行程式設計是套用MATLAB的基礎。
2.最佳化計算基礎篇(第5~12章)
包括MATLAB最佳化工具箱、無約束一維極值問題、無約束多維極值問題、約束最佳化問題、非線性最小二乘最佳化問題、線性規劃、整數規劃、二次規劃等內容。
從理論與實際結合的角度出發,介紹了常用的7類最佳化方法及其算法,採用簡潔明了的套路講述:(1)算法原理,(2)算法步驟,(3)算法的MATLAB實現,(4)算法舉例。
書中不僅介紹了MATLAB最佳化工具箱中這些算法的實現函式,還著重編寫了算法的MATLAB程式,並通過實例進行了驗證。
3.最佳化計算高級篇(第13~14章)
包括粒子群最佳化算法、遺傳算法等內容。
講述兩類常用的現代最佳化方法,對其中的典型最佳化算法一一通過MATLAB編程實現,拓展了MATLAB解決最佳化問題中的難解問題。
4.綜合套用篇(第15~16章)
包括工程最最佳化問題實例、經濟金融最最佳化問題實例等內容。
立足於典型、實際的工程套用問題,綜合展示套用MATLAB實現最佳化計算的全過程,即問題分析、數學模型、確定最佳化算法、運用MATLAB完成最佳化計算。
通過實戰教會讀者如何根據實際問題的特點抽象出不同類型的模型,然後選擇不同的方法進行計算並進行數值實現。而且還觸類旁通地向讀者介紹MATLAB在各個領域的最佳化問題中的套用,達到學以致用。
網路下載
本書所編的源程式,都經過了反覆的調試,讀者可在博文視點網站下載,同時,我們還製作了本書的部分課件,也放在該網站上,方便讀者使用。
本書主要由龔純、王正林編寫。其他參與編寫的人員有肖靜、劉玉芳、王曉麗、肖紹英、鄧祈、王殿祜、王偉欣、朱桂蓮、王龍躍、朱艷、彭斌武、王盤桃、劉擁軍等。在此對所有參與編寫的人員表示感謝!
再次對博文視點公司的郭立老師、張月萍老師、朱沭紅老師表示衷心的感謝!對關心、支持我們的讀者表示感謝!
由於作者水平和經驗有限,書中錯漏之處在所難免,敬請讀者指正,我們的電子信箱是:
作 者
2011年盛夏於北京
目 錄
第1部分第1篇 MATLAB入門篇
第1章 MATLAB概述 2
1.1 MATLAB的產生與發展 2
1.2 MATLAB的優勢與特點 3
1.3 MATLAB系統的構成 4
1.4 MATLAB桌面操作環境 5
1.4.1 MATLAB啟動和退出 5
1.4.2 MATLAB主選單及功能 7
1.4.3 MATLAB命令視窗 9
1.4.4 MATLAB工作空間 11
1.4.5 M檔案編輯/調試器 14
1.4.6 圖形視窗 15
1.4.7 MATLAB檔案管理 16
1.4.8 MATLAB幫助使用 17
1.5 MATLAB的工具箱 17
1.6 小結 18
第2章 MATLAB計算基礎 19
2.1 MATLAB數值類型 19
2.2 關係運算和邏輯運算 21
2.3 矩陣及其運算 22
2.3.1 矩陣的創建 22
2.3.2 矩陣的運算 23
2.4 複數及其運算 25
2.4.1 複數的表示 25
2.4.2 複數的繪圖 26
2.4.3 複數的操作函式 27
2.5 符號運算 28
2.5.1 符號運算概述 28
2.5.2 常用的符號運算 30
2.6 小結 32
第3章 MATLAB繪圖基礎 33
3.1 MATLAB繪圖的基本步驟 33
3.2 在工作空間直接繪圖 34
3.3 利用繪圖函式繪圖 35
3.3.1 二維圖形 35
3.3.2 三維圖形 36
3.4 圖形的修飾 40
3.5 小結 42
第4章 MATLAB程式設計基礎 43
4.1 MATLAB編程概述 43
4.2 MATLAB程式設計原則 44
4.3 M檔案 45
4.4 MATLAB程式流程控制 47
4.5 MATLAB的函式及調用 50
4.5.1 函式類型 50
4.5.2 函式參數傳遞 53
4.6 函式句柄 57
4.7 MATLAB程式調試 59
4.7.1 常見程式錯誤 59
4.7.2 調試方法 61
4.7.3 調試工具 62
4.7.4 M檔案分析工具 65
4.8 MATLAB程式設計技巧 68
4.8.1 嵌套計算 68
4.8.2 循環計算 70
4.8.3 使用例外處理機制 70
4.8.4 使用全局變數 72
4.8.5 通過varargin傳遞參數 74
4.9 小結 75
第2篇 最佳化計算基礎篇
第5章 MATLAB最佳化工具箱 78
5.1 工具箱概述 78
5.1.1 工具箱的功能 78
5.1.2 工具箱的特色 78
5.1.3 工具箱的結構 79
5.2 工具箱函式 79
5.3 GUI最佳化工具 82
5.3.1 GUI最佳化工具的啟動 82
5.3.2 GUI最佳化工具的界面 83
5.3.3 GUI最佳化工具使用步驟 84
5.3.4 GUI最佳化工具套用實例 85
5.4 小結 93
第6章 無約束一維極值問題 94
6.1 進退法 94
6.2 黃金分割法 97
6.3 斐波那契法 99
6.4 牛頓法 103
6.4.1 基本牛頓法 103
6.4.2 全局牛頓法 105
6.5 割線法 108
6.6 拋物線法 110
6.7 三次插值法 113
6.8 可接受搜尋法 115
6.8.1 Goldstein法 115
6.8.2 Wolfe-Powell法 118
6.9 MATLAB工具箱套用實例 120
6.9.1 套用fminbnd函式 120
6.9.2 套用fminsearch函式 126
6.9.3 套用改進的fminbnd函式 126
6.9.4 套用maple函式 128
6.10 小結 130
第7章 無約束多維極值問題 131
7.1 直接法 131
7.1.1 模式搜尋法 131
7.1.2 Rosenbrock法 135
7.1.3 單純形搜尋法 138
7.1.4 Powell法 142
7.2 使用導數計算的間接法 145
7.2.1 最速下降法 146
7.2.2 共軛梯度法 147
7.2.3 牛頓法 150
7.2.4 修正牛頓法 151
7.2.5 擬牛頓法 153
7.2.6 信賴域法 158
7.2.7 顯式最速下降法 161
7.3 MATLAB工具箱套用實例 163
7.3.1 套用fminsearch函式 163
7.3.2 套用fminunc函式 169
7.3.3 套用fminimax函式 171
7.4 小結 175
第8章 約束最佳化問題 176
8.1 Rosen梯度投影法 176
8.2 罰函式法 180
8.2.1 外點罰函式法 180
8.2.2 內點罰函式法 187
8.2.3 混合罰函式法 189
8.2.4 乘子法 194
8.3 坐標輪換法 197
8.4 複合形法 201
8.5 MATLAB工具箱套用實例 205
8.6 小結 206
第9章 非線性最小二乘最佳化問題 208
9.1 G-N法 208
9.2 修正G-N法 211
9.3 L-M法 213
9.4 MATLAB工具箱套用實例 217
9.5 小結 218
第10章 線性規劃 219
10.1 單純形法 219
10.2 修正單純形法 226
10.3 大M法 230
10.4 變數有界單純形法 232
10.5 MATLAB工具箱套用實例 234
10.6 小結 237
第11章 整數規劃 238
11.1 割平面法 238
11.2 分支定界法 244
11.3 0-1規劃 250
11.4 MATLAB工具箱套用實例 253
11.5 小結 254
第12章 二次規劃 255
12.1 拉格朗日法 255
12.2 起作用集算法 257
12.3 路徑跟蹤法 261
12.4 MATLAB工具箱套用實例 264
12.5 小結 268
第3篇 最佳化計算高級篇
第13章 粒子群最佳化算法 270
13.1 粒子群算法概述 270
13.2 基本粒子群算法 271
13.3 帶壓縮因子的粒子群算法 275
13.4 權重改進的粒子群算法 279
13.4.1 線性遞減權重法 279
13.4.2 自適應權重法 283
13.4.3 隨機權重法 286
13.5 變學習因子的粒子群算法 288
13.5.1 同步變化的學習因子 288
13.5.2 異步變化的學習因子 291
13.6 二階粒子群算法 294
13.7 二階振盪粒子群算法 296
13.8 混沌粒子群算法 299
13.9 混合粒子群算法 303
13.9.1 基於自然選擇的算法 303
13.9.2 基於雜交的算法 306
13.9.3 基於模擬退火的算法 309
13.10 小結 312
第14章 遺傳算法 313
14.1 遺傳算法概述 313
14.2 基本遺傳算法 314
14.3 順序選擇遺傳算法 318
14.4 適值函式標定的遺傳算法 322
14.5 大變異遺傳算法 326
14.6 自適應遺傳算法 330
14.7 雙切點交叉遺傳算法 333
14.8 多變異位自適應遺傳算法 337
14.9 MATLAB工具箱套用實例 341
14.10 小結 344
第4篇 綜合套用篇
第15章 工程最最佳化問題實例 346
15.1 線性規劃實例 346
15.1.1 生產任務分配問題 346
15.1.2 運輸問題 349
15.1.3 生產運輸問題 353
15.1.4 資源利用問題 359
15.2 整數規劃實例 360
15.2.1 下料問題 360
15.2.2 配套問題 362
15.2.3 有限選址問題 364
15.2.4 生產組織與計畫問題 365
15.3 無約束最佳化實例 366
15.3.1 選址問題 366
15.3.2 銷售利潤問題 368
15.3.3 庫存問題 369
15.4 約束最佳化實例 371
15.4.1 最大體積問題 371
15.4.2 資源分配問題 372
15.4.3 和三角形有關的極值問題 373
15.4.4 點到曲線的距離 374
15.4.5 曲線到曲線的距離 378
15.5 小結 380
第16章 經濟金融最最佳化問題實例 381
16.1 最大利潤問題 381
16.1.1 不考慮銷售影響 381
16.1.2 考慮銷售影響 382
16.2 最優消費問題 383
16.3 最優投資分配問題 385
16.4 最優資金使用問題 387
16.5 最優產量問題 388
16.5.1 古諾競爭模型 388
16.5.2 斯塔克爾伯格競爭模型 389
16.6 最優投資組合問題 390
16.6.1 標準均值-方差組合 391
16.6.2 有上界的均值-方差組合 392
16.6.3 有交易成本的均值-方差
組合 393
16.6.4 自融資均值-方差投資組合 394
16.7 小結 395
附錄A 396
附錄B 398
參考文獻 401
實 例 目 錄
第2章 MATLAB計算基礎
例2-1 元胞數組創建與顯示實例 20
例2-2 矩陣創建實例 22
例2-3 特殊矩陣生成函式使用實例 23
例2-4 矩陣基本運算實例 24
例2-5 矩陣函式運算實例 24
例2-6 矩陣分解運算函式使用實例 25
例2-7 複數構造實例 25
例2-8 複數矩陣構造實例 26
例2-9 複數函式繪圖實例 27
例2-10 符號表達式創建實例 29
例2-11 極限和極值的符號運算實例 31
例2-12 微積分的符號運算實例 31
例2-13 常微分方程符號運算實例 32
第3章 MATLAB繪圖基礎
例3-1 工作空間直接做圖法使用實例 34
例3-2 二維圖形繪製實例 35
例3-3 三維曲線繪製函式使用實例 38
例3-4 三維格線曲面圖繪製套用實例 38
例3-5 陰影曲面繪製函式surf使用實例 39
例3-6 繪圖命令使用實例 41
第4章 MATLAB程式設計基礎
例4-1 M檔案創建實例 46
例4-2 return語句使用實例 49
例4-3 匿名函式創建實例 51
例4-4 顯示函式輸入和輸出參數的數目實例 54
例4-5 可變數目的參數傳遞實例 55
例4-6 函式內部的輸入參數修改實例 56
例4-7 函式參數傳遞實例 56
例4-8 全局變數使用實例 57
例4-9 函式句柄創建和調用實例 58
例4-10 處理函式句柄的函式使用實例 58
例4-11 嵌套計算與直接求值的比較實例 69
例4-12 嵌套計算與非嵌套計算的比較實例 69
例4-13 例外處理機制使用實例 70
例4-14 nargin函式套用實例 71
例4-15 全局變數使用實例 72
例4-16 通過varargin傳遞參數的實例 74
第5章 MATLAB最佳化工具箱
例5-1 fminunc求解器套用實例 85
例5-2 fminsearch求解器套用實例 86
例5-3 fmincon求解器套用實例 88
例5-4 lsqnonlin求解器套用實例 89
例5-5 linprog求解器套用實例 90
例5-6 ga求解器套用實例 91
第6章 無約束一維極值問題
例6-1 進退法求解極值區間實例 96
例6-2 黃金分割法求解極值實例 99
例6-3 斐波那契法求解極值實例 102
例6-4 基本牛頓法求解極值實例 105
例6-5 全局牛頓法求解極值實例 107
例6-6 割線法求解極值實例 110
例6-7 拋物線法求解極值實例 112
例6-8 三次插值法求解極值實例 115
例6-9 Goldstein法求解極值實例 117
例6-10 Wolfe-Powell法求解極值實例 120
例6-11 fminbnd函式求解極值實例1 121
例6-12 fminbnd函式求解極值實例2 123
例6-13 fminbnd函式求解極值實例3 124
例6-14 fminbnd函式求解極值實例4 124
例6-15 fminbnd函式求解極值實例5 125
例6-16 fminsearch函式求解極值實例 126
例6-17 改進的fminbnd函式求解極值實例1 127
例6-18 改進的fminbnd函式求解極值實例2 127
例6-19 改進的fminbnd函式求解極值實例3 127
例6-20 改進的fminbnd函式求解極值實例4 128
例6-21 maple函式求極小值實例1 129
例6-22 maple函式求極小值實例2 129
例6-23 maple函式求極小值實例3 130
第7章 無約束多維極值問題
例7-1 模式搜尋法求解無約束多維極值問題實例 134
例7-2 Rosenbrock法求解無約束多維極值問題實例 137
例7-3 單純形搜尋法求解無約束多維極值問題實例 141
例7-4 Powell法求解無約束多維極值問題實例 145
例7-5 最速下降法求解無約束多維極值問題實例 147
例7-6 共軛梯度法求解無約束多維極值問題實例 149
例7-7 牛頓法求解無約束多維極值問題實例 151
例7-8 修正牛頓法求解無約束多維極值問題實例 153
例7-9 DFP法求解無約束多維極值問題實例 156
例7-10 BFGS法求解無約束多維極值問題實例 158
例7-11 信賴域法求解無約束多維極值問題實例 160
例7-12 顯式最速下降法求正定二次函式極值的套用實例 162
例7-13 fminsearch函式求解無約束多維極值問題實例1 164
例7-14 fminsearch函式求解無約束多維極值問題實例2 164
例7-15 fminsearch函式求解無約束多維極值問題實例3 169
例7-16 fminunc函式求解無約束多維極值問題實例 170
例7-17 fminimax函式求解無約束多維極值問題實例 174
第8章 約束最佳化問題
例8-1 Rosen梯度投影法求解約束最佳化問題實例 179
例8-2 外點罰函式法套用實例 182
例8-3 通用罰函式法套用實例 184
例8-4 外點混合罰函式法套用實例 186
例8-5 內點罰函式法求解約束最佳化問題實例 189
例8-6 混合罰函式法求解約束最佳化問題實例 192
例8-7 加速混合罰函式法求解約束最佳化問題實例 194
例8-8 乘子法求解約束最佳化問題實例 196
例8-9 坐標輪換法求解約束最佳化問題實例 200
例8-10 複合形法求解約束最佳化問題實例 204
例8-11 fmincon函式求解約束最佳化問題實例 205
第9章 非線性最小二乘最佳化問題
例9-1 G-N法求解非線性最小二乘最佳化問題實例 210
例9-2 修正G-N法求解非線性最小二乘最佳化問題實例 212
例9-3 L-M法求解非線性最小二乘最佳化問題實例 215
例9-4 lsqnonlin求解非線性最小二乘最佳化問題實例 217
第10章 線性規劃
例10-1 單純形法求解線性規劃實例1 222
例10-2 單純形法求解線性規劃實例2 223
例10-3 修正單純形法求解線性規劃實例 229
例10-4 大M法求解線性規劃實例 231
例10-5 變數有界單純形法求解線性規劃實例 232
例10-6 linprog函式求解線性規劃實例1 235
例10-7 linprog函式求解線性規劃實例2 235
例10-8 linprog函式求解線性規劃實例3 236
例10-9 linprog函式求解線性規劃實例4 236
第11章 整數規劃
例11-1 割平面法求解整數規劃實例 244
例11-2 分支定界法求解整數規劃實例1 249
例11-3 分支定界法求解整數規劃實例2 249
例11-4 0-1規劃套用實例 252
例11-5 bintprog函式求解0-1規劃實例 253
第12章 二次規劃
例12-1 拉格朗日法求解二次規劃實例 256
例12-2 起作用集法求解二次規劃實例 260
例12-3 路徑跟蹤法求解二次規劃實例 264
例12-4 quadprog函式求解二次規劃實例1 266
例12-5 quadprog函式求解二次規劃實例2 266
第13章 粒子群最佳化算法
例13-1 基本粒子群算法套用實例 273
例13-2 帶壓縮因子的粒子群算法套用實例 278
例13-3 線性遞減權重的粒子群算法套用實例 281
例13-4 自適應權重的粒子群算法套用實例 285
例13-5 隨機權重的粒子群算法套用實例 288
例13-6 同步變化的學習因子粒子群算法套用實例 290
例13-7 異步變化的學習因子粒子群算法套用實例 293
例13-8 二階粒子群算法套用實例 296
例13-9 二階振盪粒子群算法套用實例 299
例13-10 混沌粒子群算法套用實例 302
例13-11 基於自然選擇的粒子群算法套用實例 305
例13-12 基於雜交的粒子群算法套用實例 308
例13-13 基於模擬退火的粒子群算法套用實例 311
第14章 遺傳算法
例14-1 基本遺傳算法套用實例用 317
例14-2 順序選擇遺傳算法套用實例 321
例14-3 適值函式標定的遺傳算法套用實例 324
例14-4 大變異遺傳算法套用實例 329
例14-5 自適應遺傳算法套用實例 333
例14-6 雙切點交叉遺傳算法套用實例 336
例14-7 多變異位自適應遺傳算法套用實例 340
例14-8 最佳化工具的ga求解器套用實例1 341
例14-9 最佳化工具的ga求解器套用實例2 342
第15章 工程最最佳化問題實例
例15-1 生產任務分配問題套用實例1 346
例15-2 生產任務分配問題套用實例2 347
例15-3 運輸問題套用實例 350
例15-4 生產運輸問題套用實例1 354
例15-5 生產運輸問題套用實例2 356
例15-6 資源利用問題套用實例 359
例15-7 下料問題套用實例 360
例15-8 配套問題套用實例 362
例15-9 有限選址問題套用實例 364
例15-10 生產組織與計畫問題套用實例 365
例15-11 選址問題套用實例 366
例15-12 銷售利潤最大化問題套用實例 368
例15-13 庫存問題套用實例1 369
例15-14 庫存問題套用實例2 370
例15-15 庫存問題套用實例3 371
例15-16 最大體積問題套用實例 371
例15-17 資源分配問題套用實例 372
例15-18 和三角形有關的極值問題套用實例1 373
例15-19 和三角形有關的極值問題套用實例2 373
例15-20 點到曲線距離問題套用實例1 374
例15-21 點到曲線距離問題套用實例2 375
例15-22 點到曲線距離問題套用實例3 377
例15-23 曲線到曲線距離問題套用實例 379
第16章 經濟金融最最佳化問題實例
例16-1 未考慮銷售影響的利潤最大化問題實例 382
例16-2 考慮銷售影響的利潤最大化問題實例 383
例16-3 最優消費問題套用實例 384
例16-4 最優投資分配問題套用實例 385
例16-5 資金最優使用問題實例 387
例16-6 古諾競爭模型套用實例 389
例16-7 斯塔克爾伯格模型套用實例 390
例16-8 標準均值-方差投資組合套用實例 391
例16-9 有上界的均值-方差投資組合套用實例 392
例16-10 有交易成本的均值-方差投資組合套用實例 393
例16-11 自融資均值-方差投資組合套用實例 394