编辑推荐
遗传算法常常用于解决非常复杂的真实世界问题。
本书是学习如何利用遗传算法来解决问题的入门指南,书中包含了Java语言编写的、能运行的项目和解决方案。本书引导读者一步一步地实现各种遗传算法及一些常见应用场景,帮助读者在实践中加深理解,从而能够解决自己独特的问题。本书首先介绍了基本概念,并在随后的章节中添加了机器人控制、旅行商问题等例子,展示了实现遗传算法的更多知识技能。
通过阅读本书,你将熟悉遗传算法与编程语言相关的问题和概念,掌握构建自己的算法所需的全部知识,并且将获得用遗传算法解决问题的能力。请拿起本书,进入遗传算法这个迷人的领域,看看真正能工作的Java代码,并运用于你自己的项目和研究中。
本书具有以下特色:
● 引导学习遗传算法背后的理论;
● 解释软件开发者如何利用遗传算法来尝试解决一些问题;
● 通过简单易行的步骤,提供用Java实现遗传算法的详细指导。
内容简介
当前,机器学习领域已经变得越来越流行,而遗传算法是机器学习的一个重要子集。
本书简单、直接地介绍了遗传算法,并且针对所讨论的示例问题,给出了Java代码的算法实现。全书共分灾6章。第1章简单介绍了人工智能和生物进化的知识背景,这也是遗传算法的历史知识背景。第2章给出了一个基本遗传算法的实现;第4章和第5章,分别针对机器人控制器、旅行商问题、排课问题展开分析和讨论,并给出了算法实现。在这些章的末尾,还给出了一些练习供读者深入学习和实践。第6章专门讨论了各种算法的优化问题。
本书适合机器学习爱好者阅读,尤其适合对遗传算法的理论和实现感兴趣的读者阅读参考。
作者简介
Lee Jacobson来自英国布里斯托尔,是一名专业的自由职业软件开发者。在大学期间学习了遗传算法和其他优化技术后,他对这个主题产生了强烈的兴趣。
Burak Kanber是土生土长的纽约人,他拥有机械工程的学士学位和硕士学位,专注于控制系统、机器人技术、汽车工程和混合动力汽车系统工程。但是,软件一直是他终身的爱好,贯穿着Burak整个生命。
目录
- 第1章 简介 1
- 1.1 什么是人工智能 2
- 1.2 生物学类比 3
- 1.3 进化计算的历史 4
- 1.4 进化计算的优势 5
- 1.5 生物进化 7
- 生物进化的一个实例 8
- 1.6 基本术语 10
- 术语 10
- 1.7 搜索空间 11
- 1.7.1 适应度景观 12
- 1.7.2 局部最优 14
- 1.8 参数 17
- 1.8.1 变异率 17
- 1.8.2 种群规模 18
- 1.8.3 交叉率 19
- 1.9 基因表示 19
- 1.10 终止 20
- 1.11 搜索过程 20
- 1.12 参考文献 22
- 第2章 实现一个基本遗传算法 23
- 2.1 实现之前 23
- 2.2 基本遗传算法的伪代码 24
- 2.3 关于本书的代码示例 25
- 2.4 基本实现 26
- 2.4.1 问题 27
- 2.4.2 参数 27
- 2.4.3 初始化 29
- 2.4.4 评估 35
- 2.4.5 终止检查 38
- 2.4.6 交叉 41
- 2.5 轮盘赌选择 41
- 2.6 交叉方法 42
- 2.7 交叉伪代码 43
- 2.8 交叉实现 44
- 2.8.1 精英主义 48
- 2.8.2 变异 50
- 2.8.3 执行 53
- 2.9 小结 55
- 2.10 练习 56
- 第3章 机器人控制器 57
- 3.1 简介 57
- 3.2 问题 58
- 3.3 实现 59
- 3.3.1 开始之前 59
- 3.3.2 编码 60
- 3.3.3 初始化 64
- 3.3.4 评估 73
- 3.3.5 终止检查 87
- 3.3.6 选择方法和交叉 91
- 3.4 锦标赛选择 91
- 3.5 单点交叉 93
- 执行 99
- 3.6 小结 101
- 3.7 练习 102
- 第4章 旅行商 103
- 4.1 简介 103
- 4.2 问题 105
- 4.3 实现 106
- 4.3.1 开始之前 106
- 4.3.2 编码 106
- 4.3.3 初始化 107
- 4.3.4 评估 111
- 4.3.5 终止检查 117
- 4.3.6 交叉 118
- 4.3.7 变异 124
- 4.3.8 执行 126
- 4.4 小结 131
- 4.5 练习 132
- 第5章 排课 134
- 5.1 简介 134
- 5.2 问题 135
- 5.3 实现 136
- 5.3.1 开始之前 137
- 5.3.2 编码 137
- 5.3.3 初始化 138
- 5.3.4 执行类 158
- 5.3.5 评估 167
- 5.3.6 终止 169
- 5.3.7 变异 172
- 5.3.8 执行 174
- 5.4 分析和改进 179
- 5.5 小结 182
- 5.6 练习 182
- 第6章 优化 183
- 6.1 自适应遗传算法 183
- 6.1.1 实现 184
- 6.1.2 练习 188
- 6.2 多次启发 188
- 6.2.1 实现 189
- 6.2.2 练习 190
- 6.3 性能改进 191
- 6.3.1 适应度函数设计 191
- 6.3.2 并行处理 191
- 6.3.3 适应度值散列 193
- 6.3.4 编码 197
- 6.3.5 变异和交叉方法 197
- 6.4 小结 198