本書以理論結合編程開發(fā)為原則,使用Python作為開發(fā)語言,講解*優(yōu)化算法的原理和應用,詳細介紹了Python基礎、Gurobi優(yōu)化器、線性規(guī)劃、整數規(guī)劃、多目標優(yōu)化、動態(tài)規(guī)劃、圖與網絡分析、智能優(yōu)化算法。對于算法部分的每一種算法都包含原理和編程實踐,使讀者對*優(yōu)化算法的認識更加深入。
本書分為3篇共9章。第1篇(第1~3章)是*優(yōu)化算法與編程基礎:第1章介紹了什么是*優(yōu)化算法及其在生產和生活中的應用;第2章介紹Python編程基礎和Python數據分析庫及繪圖庫;第3章講解Gurobi優(yōu)化器的基礎和高級特性。第2篇(第4~6章)是數學規(guī)劃方法:第4章詳細講解線性規(guī)劃的知識,包括單純形法、內點法、列生成法、拉格朗日乘子法、對偶問題;第5章講解整數規(guī)劃解法的分支定界法和割平面法;第6章講解多目標優(yōu)化的概念及基于單純形法的目標規(guī)劃法。第3篇(第7~9章)是啟發(fā)式算法:第7章介紹動態(tài)規(guī)劃算法;第8章講解圖與網絡分析,介紹最小生成樹、最短路徑、網絡流、路徑規(guī)劃等問題的建模;第9章講解了粒子群算法和遺傳算法求解各種類型優(yōu)化算法問題的方法。
本書內容豐富,實例典型,實用性強,適合各個層次從事*優(yōu)化算法研究和應用的人員,尤其適合有一定算法基礎而沒有編程基礎的人員閱讀。
蘇振裕,廈門大學金融學碩士,現(xiàn)任SHEIN 智慧供應鏈資深算法工程師。知乎專欄《從推公式到寫代碼》作者,運籌優(yōu)化論壇(optimize.fun)的創(chuàng)建人。在大數據、人工智能、運籌優(yōu)化和供應鏈方面,具有多年的相關算法研究及應用經驗。
| 第1篇 最優(yōu)化算法與編程基礎 |
第1章 最優(yōu)化算法概述 2
1.1 最優(yōu)化算法簡介 3
1.2 最優(yōu)化算法的內容 4
1.2.1 規(guī)劃論 4
1.2.2 庫存論 5
1.2.3 圖論 6
1.2.4 排隊論 7
1.2.5 可靠性理論 8
1.2.6 對策論 8
1.2.7 決策論 8
1.2.8 搜索論 9
1.3 本章小結 9
第2章 Python編程方法 10
2.1 開發(fā)環(huán)境安裝 11
2.2 編程基礎:Python語法 17
2.2.1 基礎數據結構與基本運算 18
2.2.2 關于Python的列表、元組、字典、集合 18
2.2.3 程序控制語句 21
2.2.4 函數 21
2.2.5 類與實例 22
2.2.6 迭代 23
2.3 數據分析:NumPy基礎 24
2.3.1 NumPy基礎數據結構 24
2.3.2 NumPy的隨機數 26
2.3.3 NumPy矩陣運算 28
2.3.4 NumPy線性代數 31
2.4 Pandas基礎 32
2.4.1 Pandas基礎數據結構 32
2.4.2 Pandas基礎統(tǒng)計函數 35
2.4.3 Pandas基礎數據處理 37
2.4.4 分組統(tǒng)計 39
2.4.5 apply函數 41
2.5 Python繪圖 42
2.5.1 常用圖形 43
2.5.2 圖形屬性 47
2.5.3 組合圖和子圖 49
2.5.4 三維圖 51
2.5.5 動態(tài)圖 55
2.6 本章小結 57
第3章 Gurobi優(yōu)化器 58
3.1 Gurobi的數據結構 59
3.1.1 Multidict 59
3.1.2 Tuplelist 60
3.1.3 Tupledict 61
3.1.4 應用范例 62
3.2 Gurobi的參數和屬性 65
3.2.1 參數類型 65
3.2.2 修改參數 75
3.2.3 修改參數的例子 75
3.2.4 屬性類型 77
3.2.5 查看修改屬性 85
3.2.6 修改屬性的例子 85
3.3 Gurobi線性化技巧 85
3.3.1 最大值max 86
3.3.2 最小值min 88
3.3.3 絕對值abs 89
3.3.4 邏輯與and 90
3.3.5 邏輯或or 90
3.3.6 指示函數indicator 90
3.3.7 帶固定成本約束 91
3.3.8 分段線性函數 91
3.4 Gurobi多目標優(yōu)化 92
3.5 callback函數 96
3.5.1 回調函數callback定義 97
3.5.2 狀態(tài)where與值what 97
3.5.3 callback函數的功能 98
3.6 本章小結 102
| 第2篇 數學規(guī)劃方法 |
第4章 線性規(guī)劃 104
4.1 線性規(guī)劃的標準型 105
4.2 單純形法 105
4.2.1 單純形法的原理 106
4.2.2 單純形法的過程 106
4.2.3 單純形法代碼 111
4.3 單純形的數學規(guī)范型 113
4.4 內點法 114
4.4.1 內點法的原理 114
4.4.2 內點法過程 115
4.4.3 內點法代碼 118
4.5 列生成法 120
4.5.1 列生成法的原理 120
4.5.2 列生成的過程 123
4.6 對偶問題 126
4.6.1 對偶問題的形式 127
4.6.2 對稱形式對偶 128
4.6.3 對偶單純形 129
4.6.4 對偶問題的應用 130
4.7 拉格朗日乘子法 130
4.7.1 無約束優(yōu)化 131
4.7.2 等式約束優(yōu)化 131
4.7.3 不等式約束優(yōu)化 132
4.7.4 拉格朗日對偶 134
4.8 本章小結 137
第5章 整數規(guī)劃 138
5.1 快速掌握Gurobi整數規(guī)劃 139
5.2 分支定界法 140
5.3 割平面法 142
5.4 本章小結 147
第6章 多目標優(yōu)化 148
6.1 多目標優(yōu)化的一般形式 149
6.2 Pareto最優(yōu)解 149
6.3 多目標優(yōu)化求解方法 151
6.4 目標規(guī)劃法 152
6.4.1 偏差變量 153
6.4.2 優(yōu)先等級和權重系數 153
6.4.3 目標規(guī)劃單純形法 154
6.4.4 目標規(guī)劃Gurobi實現(xiàn) 158
6.5 NSGA-Ⅱ 159
6.6 本章小結 160
| 第3篇 啟發(fā)式算法 |
第7章 動態(tài)規(guī)劃 162
7.1 多階段決策問題 163
7.2 動態(tài)規(guī)劃的基本概念 164
7.3 動態(tài)規(guī)劃的最優(yōu)化原理 165
7.4 最短路徑問題 166
7.5 使用整數規(guī)劃解最短路徑問題 169
7.6 背包問題 170
7.7 本章小結 175
第8章 圖與網絡分析 176
8.1 圖的基本概念 177
8.2 圖的矩陣表示 178
8.3 最小生成樹 179
8.4 最短路徑問題 183
8.5 網絡最大流問題 187
8.6 路徑規(guī)劃 190
8.7 VRP問題 196
8.8 本章小結 203
第9章 智能優(yōu)化算法 204
9.1 粒子群算法 205
9.1.1 粒子群算法原理 205
9.1.2 粒子群求解無約束優(yōu)化問題 207
9.1.3 粒子群求解約束優(yōu)化問題 211
9.1.4 粒子群求解旅行商問題 218
9.2 遺傳算法 225
9.2.1 遺傳算法原理 225
9.2.2 遺傳算法的編碼方法 227
9.2.3 遺傳算法的選擇操作 230
9.2.4 遺傳算法求解無約束優(yōu)化問題 231
9.2.5 遺傳算法庫Geatpy的介紹 233
9.2.6 使用Geatpy求解約束優(yōu)化問題 239
9.2.7 使用Geatpy求解多目標優(yōu)化問題 241
9.3 本章小結 242