第 1 章 逃出紙口袋 1
1.1 開始 3
1.1.1 逃出紙口袋 4
1.2 目標:尋找出路 5
1.3 幫助烏龜逃脫 6
1.3.1 烏龜和紙口袋 7
1.4 拯救烏龜 8
1.4.1 正方形 9
1.4.2 角螺旋 10
1.4.3 該逃脫了 11
1.5 算法有效嗎 12
1.6 拓展學習 14
第 2 章 尋找紙口袋 17
2.1 從數據中學習 18
2.1.1 劃分數據 21
2.2 生成決策樹的方法 22
2.2.1 選取特征 22
2.3 找到紙口袋 28
2.3.1 尋找分割點 29
2.3.2 構建決策樹 30
2.3.3 數據分類 31
2.3.4 將決策樹轉為規(guī)則集 32
2.4 算法有效嗎 33
2.4.1 如何剪枝36
2.5 拓展學習38
第 3 章 遺傳算法 39
3.1 發(fā)射炮彈41
3.2 解的生成方法44
3.2.1 算法的初始化 44
3.2.2 算法的迭代45
3.2.3 如何讓解變得更好45
3.2.4 終決策46
3.3 發(fā)射炮彈47
3.3.1 隨機初始化48
3.3.2 選擇過程48
3.3.3 交叉 53
3.3.4 突變 54
3.4 算法有效嗎56
3.4.1 畫圖 56
3.4.2 記錄 60
3.4.3 突變測試60
3.4.4 遺傳算法的變體 62
3.5 拓展學習63
第 4 章 粒子群算法 65
4.1 控制粒子群67
4.1.1 移動單個粒子 67
4.1.2 移動多個粒子 71
4.1.3 粒子群75
4.2 粒子群的生成76
4.2.1 跟隨鄰近粒子 77
4.2.2 跟隨好位置 78
4.3 創(chuàng)建粒子群80
4.3.1 跟隨鄰近粒子 80
4.3.2 跟隨好位置 83
4.4 算法有效嗎 88
4.5 拓展學習 90
第 5 章 尋找路線 91
5.1 釋放信息素 92
5.1.1 使用信息素 94
5.2 怎樣生成路線 96
5.3 讓螞蟻行動起來 98
5.3.1 隨機初始化 98
5.3.2 畫路線 102
5.3.3 迭代優(yōu)化路線 103
5.4 算法有效嗎 107
5.4.1 從同一點出發(fā) 107
5.4.2 隨機從不同點出發(fā) 109
5.4.3 α和β的選擇 109
5.4.4 其他參數 111
5.5 拓展學習 112
第 6 章 運用隨機模型 113
6.1 讓粒子隨機運動 114
6.1.1 蒙特卡洛模擬 114
6.1.2 布朗運動 117
6.1.3 幾何布朗運動 122
6.1.4 跳躍擴散 123
6.2 如何產生擴散 125
6.2.1 小隨機步長 125
6.2.2 用 C 畫圖 126
6.3 讓粒子擴散開 127
6.3.1 布朗運動 128
6.3.2 股票價格 133
6.4 算法有效嗎 137
6.4.1 基于特性的測試 139
6.5 拓展學習143
第 7 章 蜂群算法 145
7.1 養(yǎng)蜂 146
7.1.1 讓蜜蜂行動起來 146
7.1.2 蜜蜂的分工147
7.1.3 算法總覽 149
7.2 算法分析150
7.2.1 算法細節(jié) 150
7.2.2 搖擺舞152
7.3 讓蜜蜂飛起來 152
7.3.1 蜂群算法的實現 153
7.3.2 蜂群算法的可視化161
7.4 算法有效嗎164
7.5 拓展學習166
第 8 章 元胞自動機167
8.1 讓元胞活起來 169
8.2 創(chuàng)造人工生命 172
8.2.1 算法細節(jié) 173
8.3 實現元胞自動機 175
8.4 算法有效嗎182
8.5 拓展學習183
第 9 章 遺傳算法與元胞自動機185
9.1 找到好的配置 186
9.2 遺傳算法在元胞自動機上的工作方式190
9.3 找到初始排列193
9.3.1 交叉 197
9.3.2 突變 201
9.3.3 運行遺傳算法 202
9.3.4 初等元胞自動機 204
9.3.5 隨機規(guī)則 206
9.4 算法有效嗎 207
9.4.1 初等元胞自動機 209
9.4.2 隨機規(guī)則 211
9.5 拓展學習 212
第 10 章 找到解 215
10.1 移動烏龜 216
10.2 烏龜怎么走 217
10.2.1 爬山法 218
10.2.2 模擬退火算法 220
10.3 尋找口袋底部 222
10.3.1 用函數表示口袋形狀 223
10.3.2 爬山法 224
10.3.3 模擬退火算法 225
10.4 算法有效嗎 228
10.4.1 爬山法 229
10.4.2 模擬退火算法 231
10.5 更高維度的情況 233
10.6 拓展學習 237
參考文獻 239