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