第一部分 进化计算基础知识
第 1 章 问题的提出 2
1.1 优化、建模和仿真问题 2
1.1.1 优化问题 3
1.1.2 建模问题 4
1.1.3 仿真问题 5
1.2 搜索问题 6
1.3 优化与约束满足 6
1.4 著名 NP 问题 9
第 2 章 进化计算:起源 12
2.1 主要进化计算隐喻 12
2.2 发展简史 13
2.3 生物灵感 14
2.3.1 达尔文进化论 14
2.3.2 遗传学 16
2.3.3 结合 18
2.4 为什么需要进化计算? 18
第 3 章 进化算法:定义 23
3.1 进化算法是什么? 23
3.2 进化算法的组成 25
3.2.1 问题表示(个体定义) 26
3.2.2 评估函数(适应度函数) 27
3.2.3 种群 27
3.2.4 父代选择机制 28
3.2.5 变异操作(突变和重组) 28
3.2.6 生存选择机制(替代) 30
VII
_ueditor_page_break_tag_
3.2.7 种群初始化 31
3.2.8 进化终止条件 31
3.3 进化循环的手动推演 32
3.4 应用实例 33
3.4.1 八皇后问题 33
3.4.2 背包问题 36
3.5 进化算法操作 38
3.6 自然进化与人工进化 42
3.7 进化计算、全局优化和其它搜索问题 42
第 4 章 表示、突变和重组操作 46
4.1 表示和变异操作的角色 46
4.2 二进制表示 47
4.2.1 二进制表示的突变 48
4.2.2 二进制表示的重组操作 49
4.3 整数表示 51
4.3.1 整数表示的突变操作 51
4.3.2 整数表示的重组操作 52
4.4 实数或浮点数表示 52
4.4.1 实数表示的突变操作 52
4.4.2 实数表示的自我—自适应突变操作 53
4.4.3 实数表示的重组操作算子 60
4.5 排列表示 63
4.5.1 排列表示的突变操作 64
4.5.2 排列表示的重组操作 65
4.6 树形表示 69
4.6.1 树形表示的突变操作 71
4.6.2 树形表示的重组操作 72
第 5 章 适应度、选择和种群管理 74
5.1 种群管理模型 74
5.2 父代选择 75
5.2.1 适应度比例选择 75
5.2.2 排序选择 76
5.2.3 实现选择概率 77
5.2.4 锦标赛选择 79
VIII
_ueditor_page_break_tag_
5.2.5 均匀父代选择 81
5.2.6 大规模种群的过度选择 81
5.3 生存选择 82
5.3.1 基于年龄的替代 82
5.3.2 基于适应度的替代 83
5.4 选择压力 84
5.5 多模态问题、选择和多样性需求 85
5.5.1 多模态问题 85
5.5.2 保持多样性的特性选择和种群管理方法 86
5.5.3 适应度共享 87
5.5.4 拥挤机制 88
5.5.5 采用配对限定的自物种形成机制 89
5.5.6 串联运行多种群机制:岛模型 EA 算法 90
5.5.7 单种群内的空间分布机制:细胞 EA 算法 91
第 6 章 流行进化算法变种 93
6.1 遗传算法 93
6.2 进化策略 94
6.3 进化规划 97
6.4 遗传规划 98
6.5 学习分类器系统 101
6.6 差分进化 104
6.7 粒子群优化 105
6.8 分布估计算法 107
第二部分 进化计算方法论问题
第 7 章 参数和参数调整 111
7.1 进化算法参数 111
7.2 EA 算法和 EA 算法实例 113
7.3 进化算法设计 113
7.4 调节问题 115
7.5 算法质量:性能和鲁棒性 117
7.6 调参方法 119
第 8 章 参数控制 121
8.1 引言 121
IX
_ueditor_page_break_tag_
8.2 参数变化实例 122
8.2.1 突变步长大小的变化 122
8.2.2 惩罚参数的变化 124
8.3 参数控制技术的分类 125
8.3.1 改变什么? 125
8.3.2 怎么改变? 126
8.3.3 哪些证据通知这些改变? 127
8.3.4 变化的范围是什么? 128
8.3.5 小结 128
8.4 进化算法参数变化的实例 128
8.4.1 表示方式 129
8.4.2 评估函数 129
8.4.3 突变操作 130
8.4.4 交叉操作 130
8.4.5 选择操作 131
8.4.6 种群 132
8.4.7 同时变化多个进化参数 132
8.5 讨论 133
第 9 章 进化算法的运用 136
9.1 想要 EA 算法做什么? 136
9.2 性能度量 139
9.2.1 不同的性能度量准则 139
9.2.2 峰值性能与平均性能 144
9.3 实验比较的测试问题 147
9.3.1 使用预定义的问题实例 147
9.3.2 使用问题实例生成器 148
9.3.3 使用真实世界问题 149
9.4 应用例子 149
9.4.1 较差的实践例子 149
9.4.2 良好的实践例子 150
第三部分 进化算法高级技术
第 10 章 混合其他技术:模因(文化基因)算法 153
10.1 混合 EA 算法的动机 153
10.2 局部搜索的简短介绍 155
X
10.3 拉马克学说与鲍德温效应 157
10.4 文化基因算法的结构 158
10.4.1 启发式或智能初始化 158
10.4.2 变异操作算子混合:智能交叉和变异 159
10.4.3 基于变异操作算子输出的局部搜索 160
10.4.4 基于基因型和表现型映射的混合 161
10.5 自适应模因算法 161
10.6 文化基因算法的设计问题 164
10.7 应用实例:多阶段模因时间表制定 165
第 11 章 非平稳和噪声函数优化 168
11.1 非平稳问题的特性 168
11.2 多源不确定性的影响 169
11.3 算法方法 171
11.3.1 增加鲁棒性或降低噪声 171
11.3.2 针对动态环境的纯进化 172
11.3.3 基于存储器切换或循环环境 172
11.3.4 动态环境中显式地增加多样性 172
11.3.5 保持多样性和重采样:改变选择和替代策略 174
11.3.6 应用实例:具有时变特性的背包问题 175
第 12 章 多目标进化算法 177
12.1 多目标优化问题 177
12.2 支配解与帕累托优化 178
12.3 面向多目标优化的 EA 算法 179
12.3.1 非精英方法 179
12.3.2 精英方法 180
12.3.3 MOEA 算法中的多样性保持 181
12.3.4 基于分解的方法 181
12.4 应用实例:作业车间调度的分布式协同进化 181
第 13 章 约束处理 184
13.1 约束处理的两种主要类型 184
13.2 约束处理方法 185
13.2.1 惩罚函数 186
13.2.2 修复函数 188
13.2.3 对可行域限制搜索 189
XI
_ueditor_page_break_tag_
13.2.4 解码函数 190
13.3 应用实例:图的三着色问题 191
第 14 章 交互式进化算法 194
14.1 交互式进化的特性 194
14.1.1 时间效应 194
14.1.2 语境效应:之前发生了什么? 195
14.1.3 IEA 算法的优点 195
14.2 面向 IEA 挑战的算法方法 196
14.2.1 交互式选择与种群规模 196
14.2.2 变异过程中的交互 197
14.2.3 降低用户交互频率的方法 197
14.3 以设计与优化为目标的交互进化 198
14.4 实例应用:用户偏好的自动抽取 199
第 15 章 协同进化系统 201
15.1 自然界中的协同 201
15.2 协同进化 202
15.3 竞争协同进化 203
15.4 面向环境依赖评价的算法自适应总结 205
15.5 应用实例:协同进化棋手 205
第 16 章 理论 207
16.1 二进制空间的竞争超平面:模式定理 207
16.1.1 什么是模式? 207
16.1.2 面向 SGA 算法的 Holland 范式 208
16.1.3 基于模式的变异操作分析 209
16.1.4 Walsh 分析与欺骗 210
16.2 模式定理的批判与最新扩展 211
16.3 基因联接:识别和组合积木块 212
16.4 动态系统 213
16.5 马尔可夫链分析 214
16.6 统计力学方法 215
16.7 还原论方法 216
16.8 黑箱分析 217
16.9 连续搜索空间中的 EA 算法分析 217
XII
16.10 无免费午餐定理 218
第 17 章 进化机器人 219
17.1 进化机器人是关于什么的? 219
17.2 介绍性实例 220
17.3 离线和在线的机器人进化 222
17.4 进化机器人:问题差异 223
17.5 进化机器人:算法差异 225
17.6 进化机器人的未来展望 228
参考文献 231