基本介紹
- 書名:精通MATLAB最最佳化計算
- 作者:龔純 王正林
- ISBN:9787121082511
- 出版社:電子工業出版社
- 出版時間: 2009-4-1
- 裝幀:平裝
宣傳語,內 容 簡 介,前 言,目錄,作者簡介,
宣傳語
最佳化的工具箱和自編函式實現雙管齊下算法原理→流程→編程→舉例一桿到底60餘個程式,100餘個實例一一精編精講
內 容 簡 介
精通MATLAB最最佳化計算的主要內容是套用MATLAB來解決最最佳化問題,通過將“最最佳化問題”、“MATLAB最佳化工具箱”和“MATLAB編程”這三方面有機結合進行講述,即一方面是使用工具箱來快速解決最最佳化問題,另一方面是通過算法編程深入解決最最佳化問題。 本書側重於最最佳化算法的MATLAB實現,同時精選了大量的最最佳化問題實例,通過實例的求解,生動地教會讀者掌握MATLAB在最最佳化問題方面的套用。
通過本書,讀者不僅能掌握使用MATLAB最最佳化工具箱來快速解決實際問題,而且能學會分析最佳化算法和採用MATLAB編程解決最最佳化問題,從而提高分析和解決問題的能力。
前 言
最最佳化理論和方法日益受到重視,已經滲透到生產、管理、商業、軍事、決策等各個領域,而最最佳化模型與方法廣泛套用於工業、農業、交通運輸、商業、國防、建築、通信、政府機關等各個部門及各個領域。
有了MATLAB這個強大的計算平台,既可以利用MATLAB最佳化工具箱(Optimization Toolbox)中的函式,又可以通過對算法編程實現相應的最最佳化計算。
本書由淺入深全面系統地講述MATLAB在最最佳化領域的套用。
本書導讀圖
使用指南
為了幫助讀者在遇到具體套用問題時,能夠更好更快地從本書中查找到所需內容,我們特地製作了本書的使用指南。這個指南的組織邏輯是以解決實際問題的一般思考步驟為順序的,即在遇到具體套用問題時,大致都需要經歷以下3個步驟。
明確套用領域
選擇最佳化方法
套用MATLAB
在每一步驟中又涉及若干具體問題,可進一步向下細分。從這個指南圖中也可以清楚地看出本書的知識脈絡,從而形成一幅系統化、綜合化的整體知識體系結構圖。
給讀者的建議
讀者在學習本書時可根據自己的基礎靈活安排內容,但應注意把握循序漸進的原則,穩紮穩打,逐步掌握。針對不同基礎的讀者,我們的建議如下圖:
主要特色
本書內容以算法程式為主、實例為輔,通過一個個的算法分析、MATLAB編程、算法套用實例,一步步帶領讀者進入MATLAB的強大世界,挖掘MATLAB的豐富寶庫。
本書主要的特點可以概括為以下幾點。
1.內容由淺入深、層次性強
本書採用4篇結構,從MATLAB入門篇入手,然後通過最佳化計算基礎篇和高級篇,循序漸進講述最最佳化計算,最後在綜合實戰篇中講述大量的實例收尾。本書的層次結構簡潔明了,非常適合不同層次的讀者選擇性地學習,提高了學習效率。
另一方面,講述套用MATLAB求解最最佳化問題時,也是從易到難依次講述了GUI最佳化工具、工具箱函式、自編函式這三種實現方式。
2.緊密圍繞MATLAB,系統性強
MATLAB軟體的出現,為解決實際中各種最最佳化問題提供了更新、更豐富的手段、技術和方法。一方面從快捷便利的最最佳化工具箱GUI工具,以及工具箱函式入手;另一方面從採用算法編程的方式入手。
簡言之,利用MATLAB求解最最佳化問題,既可以用快捷的GUI工具,又可以用功能強大的工具箱函式,還可以通過算法編程來實現,方式多樣,系統性強。
3.算法程式及實例豐富,實用性強
本書打破了最最佳化類書算法多、程式少的弊病,對複雜的算法推導一帶而過,重在程式、重在MATLAB實現!
精心挑選了最具代表性和實用性的60餘個最佳化算法,一一編程實現,並提供了全部原始碼,非常便於學習和參考。
同時精選100多個實例,悉數進行全面的分析和求解,並在綜合實戰篇集中講述。
4.算法編程實現,指導性強
本書的算法全部採用MATLAB編程實現,源程式注釋豐富,而且通過實例驗證了正確性,讀者通過編程練習,不但可以更深入地理解最佳化算法理論,還能夠熟練掌握MATLAB編程。
5.語言簡潔精煉,可讀性強
本書的算法儘量用直觀的方法、簡潔通俗的語言來說明其基本思想,並輔以豐富的實例與分析來說明求解的步驟,從而避免複雜的數學推導。
在算法編程中,對關鍵的代碼進行點睛式的注釋,讓讀者從程式中快速掌握最最佳化算法及其實現。
作者致謝
感謝父母和朋友們的支持與鼓勵,使得本書的創作過程得以堅持下去;感謝朱沭紅老師、王鶴揚編輯的大力支持和辛勤勞動!
由於作者水平和經驗有限,書中錯漏之處在所難免,還望得到專家、讀者和行內人士的批評指正。
編著者
2009年2月18日於清華園
目錄
目錄1 MATLAB入門篇
第 1章 MATLAB概述 2
1.1 MATLAB的產生與發展 2
1.2 MATLAB的優勢與特點 2
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 複數的繪圖 27
2.4.3 複數的操作函式 28
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 調試方法 62
4.7.3 調試工具 62
4.7.4 M檔案分析工具 65
4.8 MATLAB程式設計技巧 69
4.8.1 嵌套計算 69
4.8.2 循環計算 70
4.8.3 使用例外處理機制 71
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 小結 92
第 6章 無約束一維極值問題 93
6.1 進退法 93
6.2 黃金分割法 96
6.3 斐波那契法 99
6.4 牛頓法 102
6.4.1 基本牛頓法 102
6.4.2 全局牛頓法 104
6.5 割線法 107
6.6 拋物線法 109
6.7 三次插值法 112
6.8 可接受搜尋法 114
6.8.1 Goldstein法 114
6.8.2 Wolfe-Powell法 117
6.9 MATLAB工具箱
1.6 套用實例 120
6.9.1 套用fminbnd函式 120
6.9.2 套用fminsearch函式 124
6.9.3 套用改進的fminbnd函式 125
6.9.4 套用maple函式 127
6.10 小結 129
第 7章 無約束多維極值問題 130
7.1 直接法 130
7.1.1 模式搜尋法 130
7.1.2 Rosenbrock法 134
7.1.3 單純形搜尋法 137
7.1.4 Powell法 141
7.2 使用導數計算的間接法 144
7.2.1 最速下降法 145
7.2.2 共軛梯度法 146
7.2.3 牛頓法 149
7.2.4 修正牛頓法 150
7.2.5 擬牛頓法 152
7.2.6 信賴域法 158
7.2.7 顯式最速下降法 160
7.3 MATLAB工具箱
7.3 套用實例 162
7.3.1 套用fminsearch函式 162
7.3.2 套用fminunc函式 169
7.3.3 套用fminimax函式 171
7.4 小結 174
第 8章 約束最佳化問題 175
8.1 Rosen梯度投影法 175
8.2 罰函式法 179
8.2.1 外點罰函式法 179
8.2.2 內點罰函式法 186
8.2.3 混合罰函式法 189
8.2.4 乘子法 194
8.3 坐標輪換法 196
8.4 複合形法 200
8.5 MATLAB工具箱
8.5 套用實例 204
8.6 小結 206
第 9章 非線性最小二乘最佳化問題 207
9.1 G-N法 207
9.2 修正G-N法 210
9.3 L-M法 212
9.4 MATLAB工具箱
9.4 套用實例 215
9.5 小結 217
第 10章 線性規劃 218
10.1 單純形法 218
10.2 修正單純形法 225
10.3 大M法 229
10.4 變數有界單純形法 231
10.5 MATLAB工具箱
10.5 套用實例 233
10.6 小結 236
第 11章 整數規劃 237
11.1 割平面法 237
11.2 分支定界法 243
11.3 0-1規劃 249
11.4 MATLAB工具箱
11.4 套用實例 252
11.5 小結 253
第 12章 二次規劃 254
12.1 拉格朗日法 254
12.2 起作用集算法 256
12.3 路徑跟蹤法 260
12.4 MATLAB工具箱
11.4 套用實例 263
12.5 小結 267
目錄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 變學習因子的粒子
11.4 群算法 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 適值函式標定的遺傳算法 321
14.5 大變異遺傳算法 325
14.6 自適應遺傳算法 329
14.7 雙切點交叉遺傳算法 333
14.8 多變異位自適應遺傳算法 337
14.9 MATLAB工具箱
11.4 套用實例 341
14.10 小結 343
目錄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 無約束最佳化實例 367
15.3.1 選址問題 367
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 點到曲線的距離 375
15.4.5 曲線到曲線的距離 379
15.5 小結 380
第 16章 經濟金融最最佳化問題實例 381
16.1 最大利潤問題 381
16.1.1 不考慮銷售影響 381
16.1.2 考慮銷售影響 382
16.2 最優消費問題 384
16.3 最優投資分配問題 385
16.4 最優資金使用問題 387
16.5 最優產量問題 388
16.5.1 古諾競爭模型 388
16.5.2 斯塔克爾伯格競爭模型 389
16.6 最優投資組合問題 391
16.6.1 標準均值-方差組合 391
16.6.2 有上界均值-方差組合 392
16.6.3 有交易成本均值-方差
13.9.2 組合 393
16.6.4 自融資均值-方差組合 395
16.7 小結 396
附錄 A MATLAB最佳化工具箱
附錄 A 函式注釋 397
附錄 B 本書所編寫的最佳化算法
附錄 A 程式索引 399
參考文獻 402
實 例 目 錄
第2章 MATLAB計算基礎
例2-1 元胞數組創建與顯示實例。 20
例2-2 矩陣創建實例。 22
例2-3 特殊矩陣生成函式使用實例。 23
例2-4 矩陣基本運算實例。 24
例2-5 矩陣函式運算實例。 24
例2-6 矩陣分解運算函式使用實例。 25
例2-7 複數構造實例。 26
例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 處理函式句柄的函式使用實例。 59
例4-11 嵌套計算與直接求值的比較實例。 69
例4-12 嵌套計算與非嵌套計算的比較實例。 70
例4-13 例外處理機制使用實例。 71
例4-14 nargin函式套用實例。 72
例4-15 全局變數使用實例。 73
例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 進退法求解極值區間實例。 95
例6-2 黃金分割法求解極值實例。 98
例6-3 斐波那契法求解極值實例。 101
例6-4 基本牛頓法求解極值實例。 104
例6-5 全局牛頓法求解極值實例。 106
例6-6 割線法求解極值實例。 109
例6-7 拋物線法求解極值實例。 111
例6-8 三次插值法求解極值實例。 114
例6-9 Goldstein法求解極值實例。 117
例6-10 Wolfe-Powell法求解極值實例。 119
例6-11 fminbnd函式求解極值實例1。 121
例6-12 fminbnd函式求解極值實例2。 122
例6-13 fminbnd函式求解極值實例3。 123
例6-14 fminbnd函式求解極值實例4。 123
例6-15 fminbnd函式求解極值實例5。 124
例6-16 fminsearch函式求解極值實例。 125
例6-17 改進的fminbnd函式求解極值實例1。 126
例6-18 改進的fminbnd函式求解極值實例2。 126
例6-19 改進的fminbnd函式求解極值實例3。 126
例6-20 改進的fminbnd函式求解極值實例4。 127
例6-21 maple函式求極小值實例1。 128
例6-22 maple函式求極小值實例2。 128
例6-23 maple函式求極小值實例3。 129
第7章 無約束多維極值問題
例7-1 模式搜尋法求解無約束多維極值問題實例。 133
例7-2 Rosenbrock法求解無約束多維極值問題實例。 136
例7-3 單純形搜尋法求解無約束多維極值問題實例。 140
例7-4 Powell法求解無約束多維極值問題實例。 144
例7-5 最速下降法求解無約束多維極值問題實例。 146
例7-6 共軛梯度法求解無約束多維極值問題實例。 148
例7-7 牛頓法求解無約束多維極值問題實例。 150
例7-8 修正牛頓法求解無約束多維極值問題實例。 152
例7-9 DFP法求解無約束多維極值問題實例。 155
例7-10 BFGS法求解無約束多維極值問題實例。 157
例7-11 信賴域法求解無約束多維極值問題實例。 160
例7-12 顯式最速下降法求正定二次函式極值的套用實例。 162
例7-13 fminsearch函式求解無約束多維極值問題實例1。 163
例7-14 fminsearch函式求解無約束多維極值問題實例2。 164
例7-15 fminsearch函式求解無約束多維極值問題實例3。 168
例7-16 fminunc函式求解無約束多維極值問題實例。 169
例7-17 fminimax函式求解無約束多維極值問題實例。 174
第8章 約束最佳化問題
例8-1 Rosen梯度投影法求解約束最佳化問題實例。 178
例8-2 外點罰函式法套用實例。 181
例8-3 通用罰函式法套用實例。 183
例8-4 外點混合罰函式法套用實例。 186
例8-5 內點罰函式法求解約束最佳化問題實例。 188
例8-6 混合罰函式法求解約束最佳化問題實例。 191
例8-7 加速混合罰函式法求解約束最佳化問題實例。 193
例8-8 乘子法求解約束最佳化問題實例。 195
例8-9 坐標輪換法求解約束最佳化問題實例。 199
例8-10 複合形法求解約束最佳化問題實例。 203
例8-11 fmincon函式求解約束最佳化問題實例。 205
第9章 非線性最小二乘最佳化問題
例9-1 G-N法求解非線性最小二乘最佳化問題實例。 209
例9-2 修正G-N法求解非線性最小二乘最佳化問題實例。 211
例9-3 L-M法求解非線性最小二乘最佳化問題實例。 214
例9-4 lsqnonlin求解非線性最小二乘最佳化問題實例。 216
第10章 線性規劃
例10-1 單純形法求解線性規劃實例1。 221
例10-2 單純形法求解線性規劃實例2。 222
例10-3 修正單純形法求解線性規劃實例。 228
例10-4 大M法求解線性規劃實例。 230
例10-5 變數有界單純形法求解線性規劃實例。 231
例10-6 linprog函式求解線性規劃實例1。 234
例10-7 linprog函式求解線性規劃實例2。 234
例10-8 linprog函式求解線性規劃實例3。 235
例10-9 linprog函式求解線性規劃實例4。 235
第11章 整數規劃
例11-1 割平面法求解整數規劃實例。 243
例11-2 分支定界法求解整數規劃實例1。 248
例11-3 分支定界法求解整數規劃實例2。 249
例11-4 0-1規劃套用實例。 251
例11-5 bintprog函式求解0-1規劃實例。 252
第12章 二次規劃
例12-1 拉格朗日法求解二次規劃實例。 255
例12-2 起作用集法求解二次規劃實例。 259
例12-3 路徑跟蹤法求解二次規劃實例。 263
例12-4 quadprog函式求解二次規劃實例1。 265
例12-5 quadprog函式求解二次規劃實例2。 265
第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 基於雜交的粒子群算法套用實例。 309
例13-13 基於模擬退火的粒子群算法套用實例。 312
第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。 357
例15-6 資源利用問題套用實例。 359
例15-7 下料問題套用實例。 361
例15-8 配套問題套用實例。 362
例15-9 有限選址問題套用實例。 364
例15-10 生產組織與計畫問題套用實例。 365
例15-11 選址問題套用實例。 367
例15-12 銷售利潤最大化問題套用實例。 368
例15-13 庫存問題套用實例1。 370
例15-14 庫存問題套用實例2。 370
例15-15 庫存問題套用實例3。 371
例15-16 最大體積問題套用實例。 372
例15-17 資源分配問題套用實例。 372
例15-18 和三角形有關的極值問題套用實例1。 373
例15-19 和三角形有關的極值問題套用實例2。 374
例15-20 點到曲線距離問題套用實例1。 375
例15-21 點到曲線距離問題套用實例2。 376
例15-22 點到曲線距離問題套用實例3。 377
例15-23 曲線到曲線距離問題套用實例。 379
例16-1 未考慮銷售影響的利潤最大化問題實例。 382
例16-2 考慮銷售影響的利潤最大化問題實例。 383
例16-3 最優消費問題套用實例。 384
例16-4 最優投資分配問題套用實例。 385
例16-5 資金最優使用問題實例。 387
例16-6 古諾競爭模型套用實例。 389
例16-7 斯塔克爾伯格模型套用實例。 390
例16-8 標準均值-方差投資組合套用實例。 392
例16-9 有上界的均值-方差投資組合套用實例。 393
例16-10 有交易成本的均值-方差投資組合套用實例。 394
例16-11 自融資均值-方差投資組合套用實例。 395