本書從簡單的組合優化問題作為MATLAB智能優化算法實戰應用的切入點,逐步深入到使用MATLAB編寫更復雜的智能優化算法求解更復雜的組合優化問題,讓讀者逐漸理解智能優化算法的實際求解過程。
本書分為10章,主要內容包括:遺傳算法求解01背包問題;變鄰域搜索算法求解旅行商問題;模擬退火算法求解旅行商問題;大規模鄰域搜索算法求解旅行商問題;蟻群算法求解容量受限的車輛路徑問題;禁忌搜索算法求解帶時間窗的車輛路徑問題;遺傳算法求解帶時間窗的車輛路徑問題;迭代局部搜索求解訂單分批問題;NSGA-II算法求解多目標01背包問題;粒子群法求解配送中心選址問題。
本書內容通俗易懂,案例豐富,特別適合MATLAB語言的入門讀者閱讀,也適合想學習智能優化算法但無從下手的編程愛好者閱讀。另外,本書也適合作為相關專業的教材使用。
曹旺,網名“隨心390”,知乎“優化算法交流地”主筆,哈爾濱工程大學碩士,現就職於船舶某研究院所,在校就曾發表多篇論文,其中被EI檢索1篇,精通MATLAB算法開發,擅長使用MATLAB編寫元啟發式算法解決組合優化問題。
本書以簡單的組合優化問題作為MATLAB智能優化算法實戰應用的切入點,逐步深入使用MATLAB編寫更復雜的智能優化算法和求解更復雜的組合優化問題,讓讀者逐漸理解智能優化算法的實際求解過程。
本書內容通俗易懂,案例豐富,實用性強,特別適合MATLAB語言的入門讀者閱讀,也適合想學習智能優化算法但無從下手的編程愛好者閱讀。另外,本書也適合作為相關專業的教材使用。
為什麼要寫這本書?
筆者在剛開始學習智能優化算法時,每天都在網上搜索和智能優化算法相關的MATLAB代碼,每次都抱著將每一行代碼都琢磨明白的心態去學習,但幾乎每次都只讀了小部分代碼後就難以進行下去。主要有兩方面原因:一是自己不了解代碼所實現算法的具體步驟;二是代碼中缺少詳細的注釋。為了克服這一困難,筆者從基本的組合優化問題開始研究,然後研究解決對應問題的智能優化算法,最後在理解問題及算法實現的步驟後親自動手編寫MATLAB代碼。經過較長時間的積累,筆者終於熟悉了智能優化算法。
目前圖書市場上關於智能優化算法的圖書很多,但大部分書籍講解的智能優化算法時間較為久遠,近10年內講解較為熱門的智能優化算法,以及給出使用熱門智能優化算法求解實際問題代碼的書籍幾乎沒有。本書便以實戰和快速教會智能優化算法初學者為主旨,通過9個常見的組合優化問題、5個經典的智能優化算法及4個新穎的智能優化算法,讓讀者全面、深入、透徹地理解智能優化算法求解問題時的算法設計思路及代碼編寫思路,進一步提高使用智能優化算法求解實際問題的實戰能力。
本書有何特色?
1. 附贈各個章節MATLAB源代碼,提高學習效率
為了便於讀者理解本書內容,提高學習效率,作者專門把本書每一章節所涉及的MATLAB源代碼都進行了詳細注釋,並將這些源代碼一起收錄於附贈資源中。
2. 章節安排由易到難,適合初學者逐步學習
本書涉及的組合優化問題依次為0-1背包問題、基本旅行商問題、多旅行商問題、容量受限的車輛路徑問題、同時取送貨的車輛路徑問題、帶時間窗的車輛路徑問題、訂單分批問題、帶時間窗和同時取送貨的車輛路徑問題、開放式車輛路徑問題,問題難度逐步提高,適合初學者逐步學習。
3. 對智能優化算法的設計思路進行詳細講解,幫助讀者快速理解
本書在每一個章節都詳細講解智能優化算法求解問題時的算法設計思路,並給出實例驗證其實現過程,幫助讀者快速理解算法設計的核心思想。
4. 論文驅動,擴展性強
本書講解了9個經典的組合優化問題,這些經典的組合優化問題是現在大量論文中研究問題的基礎。同時,本書詳細設計的5種經典智能優化算法及4種新穎的智能優化算法都可以擴展到讀者將來研究的問題中,各個章節的MATLAB源代碼擴展性強,適合讀者深入研究及完善擴展。
5. 提供完善的技術支持和售後服務
本書提供了專門的技術支持郵箱,讀者在閱讀本書過程中有任何疑問都可以通過該郵箱獲得幫助。
贈送資源
本書附贈書中案例源代碼及相關學習資料,讀者可通過微信掃一掃下方二維碼關注公眾號,輸入代碼“37251”,即可獲取下載資源。
作者簡介
曹旺,現就職於船舶某研究院所,精通MATLAB算法開發。個人公眾號為“優化算法交流地”。擅長使用MATLAB編寫元啟發式算法解決組合優化問題,尤其對車輛路徑問題和訂單分批問題有深入的研究。
合閱讀本書的讀者:
(1)想快速學習智能優化算法的本科生及研究生;
(2) 廣大MATLAB愛好者;
(3)MATLAB開發工程師;
(4) 希望提高數學建模能力的學生。
閱讀本書的建議:
(1) 沒有智能優化算法基礎的讀者,建議從第1章順次閱讀並演練每一個實例。
(2)有一定智能優化算法基礎的讀者,可以根據實際情況選擇閱讀4種新穎的智能優化算法。
(3)對於每一章的實例驗證,讀者首先思考實現的思路,然後閱讀,學習效果會更好。
(4)可以先閱讀一遍書中每一章節的算法設計思路,然後結合附贈資源中提供的MATLAB源代碼理解一遍算法的設計思路,這樣學習起來更容易,印象也會更加深刻。
第1章 遺傳算法求解0-1背包問題 1
1.1 問題描述 2
1.2 算法簡介 4
1.3 求解策略 5
1.4 MATLAB程序實現 12
1.5 實例驗證 22
1.5.1 輸入數據 22
2.1 問題描述 25
2.2 算法簡介 26
2.3 求解策略 28
2.4 MATLAB程序實現 33
2.4.1 構造初始路線函數 33
2.5 實例驗證 48
2.5.1 輸入數據 48
3.2 算法簡介 52
3.3 求解策略 57
3.5 實例驗證 70
3.5.1 輸入數據 70
4.1 問題描述 74
4.2 算法簡介 74
4.3 求解策略 76
4.5 實例驗證 96
5.1 問題描述 100
5.2 算法簡介 103
5.3 求解策略 106
5.3.1 確定下一個訪問點 107
5.3.2 構建螞蟻行走路線 110
5.3.3 將完整路徑轉換為配送方案 111
5.3.4 更新信息素濃度矩陣 111
5.4 MATLAB程序實現 112
5.4.1 確定下一個訪問點集合函數 112
5.4.2 確定下一個訪問點函數 113
5.4.3 將完整路徑轉換為配送方案函數 115
5.4.4 計算一條配送路線的距離函數 116
5.4.5 計算一個配送方案的行駛總距離 117
5.4.6 判斷函數 117
5.4.7 計算一條配送路線的裝載量函數 118
5.4.8 計算一個配送方案的總成本 118
5.4.9 輪盤賭函數 119
5.4.10 “信息素”矩陣更新函數 119
5.4.11 客量受限的車輛路徑問題配送路線圖函數 120
5.4.12 主函數 121
5.5 實例驗證 123
5.5.1 輸入數據 123
5.5.2 蟻群算法參數設置 124
5.5.3 實驗結果展示 124
第6章 模擬退火算法求解同時取送貨的車輛路徑問題 126
6.1 問題描述 127
6.2 算法簡介 130
6.3 求解策略 132
6.3.1 解的表示形式 132
6.3.2 目標函數 133
6.3.3 交換操作 135
6.3.4 逆轉操作 135
6.3.5 插入操作 136
6.3.6 接受準則 137
6.3.7 退火 137
6.4 MATLAB程序實現 137
6.4.1 將當前解轉換為配送方案函數 137
6.4.2 刪除配送方案中空路線函數 139
6.4.3 判斷函數 139
6.4.4 裝載量計算函數 140
6.4.5 違反裝載量約束之和計算函數 140
6.4.6 計算一條配送路線的距離函數 141
6.4.7 計算一個配送方案的行駛總距離 142
6.4.8 目標函數 142
6.4.9 交換操作函數 143
6.4.10 逆轉操作函數 143
6.4.11 插入操作函數 144
6.4.12 鄰域操作函數 144
6.4.13 輪盤賭函數 145
6.4.14 同時送取貨的車輛路徑問題配送路線圖函數 145
6.4.15 主函數 146
6.5 實例驗證 149
6.5.1 輸入數據 149
6.5.2 模擬退火算法參數設置 150
6.5.3 實驗結果展示 150
第7章 遺傳算法求解帶時間窗的車輛路徑問題 152
7.1 問題描述 153
7.2 算法簡介 157
7.3 求解策略 157
7.3.1 編碼與解碼 157
7.3.2 適應度函數 158
7.3.3 種群初始化 159
7.3.4 二元錦標賽選擇操作 160
7.3.5 交叉操作 160
7.3.6 變異操作 161
7.3.7 局部搜索操作 161
7.3.8 重組操作 162
7.3.9 遺傳算法求解帶時間窗的車輛路徑問題流程 163
7.4 MATLAB程序實現 163
7.4.1 構造VRPTW初始解函數 163
7.4.2 種群初始化函數 166
7.4.3 解碼函數 168
7.4.4 適應度函數 172
7.4.5 二元錦標賽選擇操作函數 175
7.4.6 交叉操作函數 176
7.4.7 變異操作函數 178
7.4.8 局部搜索操作 178
7.4.9 重組操作函數 185
7.4.10 VRPTW配送路線圖函數 186
7.4.11 主函數 187
7.5 實例驗證 189
7.5.1 輸入數據 189
7.5.2 數據預處理 190
7.5.3 遺傳算法參數設置 191
7.5.4 實驗結果展示 192
第8章 螢火蟲算法求解訂單分批問題 194
8.1 問題描述 195
8.2 算法簡介 198
8.3 求解策略 200
8.3.1 編碼與解碼 201
8.3.2 揀選路徑策略 201
8.3.3 目標函數與發光強度 203
8.3.4 種群初始化 204
8.3.5 計算兩只螢火蟲之間的距離 204
8.3.6 螢火蟲位置更新 205
8.3.7 局部搜索操作 206
8.3.8 合並操作 207
8.3.9 螢火蟲算法求解訂單分批問題流程 208
8.4 MATLAB程序實現 208
8.4.1 解碼函數 208
8.4.2 刪除訂單分批方案中空訂單批次函數 210
8.4.3 判斷函數 210
8.4.4 裝載量計算函數 211
8.4.5 一批次訂單的揀選行走距離計算函數 212
8.4.6 一個訂單分批方案的揀選行走總距離計算函數 213
8.4.7 成本函數 214
8.4.8 種群目標函數值計算函數 215
8.4.9 種群初始化函數 216
8.4.10 兩只螢火蟲之間的距離計算函數 217
8.4.11 螢火蟲位置更新函數 217
8.4.12 選擇操作函數 218
8.4.13 局部搜索操作函數 219
8.4.14 合並操作函數 226
8.4.15 主函數 227
8.5 實例驗證 229
8.5.1 輸入數據 229
8.5.2 螢火蟲算法參數設置 230
8.5.3 實驗結果展示 231
第9章 頭腦風暴優化算法求解帶時間窗和同時取送貨的車輛路徑問題 232
9.1 問題描述 233
9.2 算法簡介 239
9.3 求解策略 240
9.4 MATLAB程序實現 250
9.5 實例驗證 275
9.5.1 輸入數據 275
9.5.2 數據預處理 276
9.5.3 頭腦風暴優化算法參數設置 277
9.5.4 實驗結果展示 278
第10章 鯨魚優化算法求解開放式車輛路徑問題 280
10.1 問題描述 281
10.2 算法簡介 282
10.3 求解策略 283
10.4 MATLAB程序實現 290
10.5 實例驗證 302
參考文獻 280
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。