Python最優(yōu)化算法實(shí)戰(zhàn)
本書(shū)以理論結(jié)合編程開(kāi)發(fā)為原則,使用Python作為開(kāi)發(fā)語(yǔ)言,講解*優(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í)更加深入。
本書(shū)分為3篇共9章。第1篇(第1~3章)是*優(yōu)化算法與編程基礎(chǔ):第1章介紹了什么是*優(yōu)化算法及其在生產(chǎn)和生活中的應(yīng)用;第2章介紹Python編程基礎(chǔ)和Python數(shù)據(jù)分析庫(kù)及繪圖庫(kù);第3章講解Gurobi優(yōu)化器的基礎(chǔ)和高級(jí)特性。第2篇(第4~6章)是數(shù)學(xué)規(guī)劃方法:第4章詳細(xì)講解線性規(guī)劃的知識(shí),包括單純形法、內(nèi)點(diǎn)法、列生成法、拉格朗日乘子法、對(duì)偶問(wèn)題;第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ò)分析,介紹最小生成樹(shù)、最短路徑、網(wǎng)絡(luò)流、路徑規(guī)劃等問(wèn)題的建模;第9章講解了粒子群算法和遺傳算法求解各種類型優(yōu)化算法問(wèn)題的方法。
本書(shū)內(nèi)容豐富,實(shí)例典型,實(shí)用性強(qiáng),適合各個(gè)層次從事*優(yōu)化算法研究和應(yīng)用的人員,尤其適合有一定算法基礎(chǔ)而沒(méi)有編程基礎(chǔ)的人員閱讀。
蘇振裕,廈門(mén)大學(xué)金融學(xué)碩士,現(xiàn)任SHEIN 智慧供應(yīng)鏈資深算法工程師。知乎專欄《從推公式到寫(xiě)代碼》作者,運(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)化算法簡(jiǎn)介 3
1.2 最優(yōu)化算法的內(nèi)容 4
1.2.1 規(guī)劃論 4
1.2.2 庫(kù)存論 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 開(kāi)發(fā)環(huán)境安裝 11
2.2 編程基礎(chǔ):Python語(yǔ)法 17
2.2.1 基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)與基本運(yùn)算 18
2.2.2 關(guān)于Python的列表、元組、字典、集合 18
2.2.3 程序控制語(yǔ)句 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 單純形法的過(guò)程 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)法過(guò)程 115
4.4.3 內(nèi)點(diǎn)法代碼 118
4.5 列生成法 120
4.5.1 列生成法的原理 120
4.5.2 列生成的過(guò)程 123
4.6 對(duì)偶問(wèn)題 126
4.6.1 對(duì)偶問(wèn)題的形式 127
4.6.2 對(duì)稱形式對(duì)偶 128
4.6.3 對(duì)偶單純形 129
4.6.4 對(duì)偶問(wèn)題的應(yīng)用 130
4.7 拉格朗日乘子法 130
4.7.1 無(wú)約束優(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 多階段決策問(wèn)題 163
7.2 動(dòng)態(tài)規(guī)劃的基本概念 164
7.3 動(dòng)態(tài)規(guī)劃的最優(yōu)化原理 165
7.4 最短路徑問(wèn)題 166
7.5 使用整數(shù)規(guī)劃解最短路徑問(wèn)題 169
7.6 背包問(wèn)題 170
7.7 本章小結(jié) 175
第8章 圖與網(wǎng)絡(luò)分析 176
8.1 圖的基本概念 177
8.2 圖的矩陣表示 178
8.3 最小生成樹(shù) 179
8.4 最短路徑問(wèn)題 183
8.5 網(wǎng)絡(luò)最大流問(wèn)題 187
8.6 路徑規(guī)劃 190
8.7 VRP問(wèn)題 196
8.8 本章小結(jié) 203
第9章 智能優(yōu)化算法 204
9.1 粒子群算法 205
9.1.1 粒子群算法原理 205
9.1.2 粒子群求解無(wú)約束優(yōu)化問(wèn)題 207
9.1.3 粒子群求解約束優(yōu)化問(wèn)題 211
9.1.4 粒子群求解旅行商問(wèn)題 218
9.2 遺傳算法 225
9.2.1 遺傳算法原理 225
9.2.2 遺傳算法的編碼方法 227
9.2.3 遺傳算法的選擇操作 230
9.2.4 遺傳算法求解無(wú)約束優(yōu)化問(wèn)題 231
9.2.5 遺傳算法庫(kù)Geatpy的介紹 233
9.2.6 使用Geatpy求解約束優(yōu)化問(wèn)題 239
9.2.7 使用Geatpy求解多目標(biāo)優(yōu)化問(wèn)題 241
9.3 本章小結(jié) 242