目录 2
第1篇 Windows编程 2
第1章 Windows概述 2
1.1 历史一瞥(A Little Bit of History) 2
1.1.1 Windows 1.0 2
1.1.2 Windows 2.0 3
1.1.3 Windows 3.0和3.1 3
1.1.4 Windows 95 4
1.1.5 Windows 98及其后续版本 4
1.2 Hello World! 4
1.3 第一个Windows程序 5
1.3.1 匈牙利表示法 8
1.3.2 第一个窗口 10
1.3.3 Windows消息循环 15
1.3.4 Windows过程 17
1.3.5 键盘输入 22
第2章 Windows编程进阶 25
2.1 Windows图形设备接口 25
2.1.1 设备描述表 26
2.1.2 各种绘图工具:画笔、画刷、颜色、线和形状 27
2.2 文本 38
2.2.1 TextOut 38
2.2.3 加入颜色和透明度 39
2.2.2 DrawText 39
2.2.4 实时消息抽取循环 40
2.3 如何创建后备缓冲 42
2.3.1 如何实现双缓冲 43
2.3.2 如何使用后备缓冲器 45
2.3.3 保持干净 47
2.4 使用资源 48
2.4.1 图标 49
2.4.2 光标 50
2.4.3 菜单 51
2.4.4 为菜单添加具体功能 52
2.5.1 一个简单的对话框 53
2.5 对话框 53
2.5.2 一些更有用的知识 56
2.6 正确定时 59
2.7 总结 60
第2篇 遗传算法 62
第3章 遗传算法入门 62
3.1 鸟和蜜蜂 62
3.2 二进制数速成 66
3.3 计算机内的进化 67
3.3.1 什么是赌轮选择法 68
3.3.4 建议的学习方法 69
3.3.2 杂交率 69
3.3.3 变异率 69
3.4 帮助Bob回家 70
3.4.1 为染色体编码 72
3.4.2 Epoch(时代)方法 75
3.4.3 参数值选择 77
3.4.4 算子函数 78
3.4.5 运行寻路人程序 80
3.4.6 二进制数转换3个问题的答案 80
3.5 练习 81
4.1 巡回销售员问题 82
第4章 置换码与巡回销售员问题 82
4.1.1 小心陷阱 83
4.1.2 CmapTSP,Sgenome,CgaTSP 85
4.2 置换杂交操作 90
4.3 交换变异操作 93
4.4 选择一个适应性函数 93
4.5 选择 95
4.6 把一切组合在一起 95
4.7 总结 97
4.8 练习 98
第5章 遗传算法优化 99
5.1.1 各种置换变异算子 100
5.1 TSP用的各种算子 100
5.1.2 各种置换杂交算子 104
5.2 各种处理工具 108
5.2.1 选择技术 110
5.2.2 变比技术 113
5.2.3 其他杂交算子 117
5.2.4 子群技术 119
5.3 总结 120
5.4 练习 120
第6章 登月也不难 121
6.1 创建和处理矢量图形 121
6.1.1 顶点和顶点缓冲 122
6.1.2 顶点变换 123
6.1.3 矩阵 128
6.2 矢量 132
6.2.1 矢量加、减法 133
6.2.2 计算矢量大小 134
6.2.3 矢量的数乘 135
6.2.4 矢量的规范化 135
6.2.5 矢量分解 136
6.2.6 矢量的点积 137
6.2.7 SVector2D实用工具类 137
6.3.3 质量 138
6.3.2 长度 138
6.3 相关的物理知识 138
6.3.1 时间 138
6.3.4 力 139
6.3.5 运动—速度 139
6.3.6 运动—加速度 140
6.3.7 力、质量、加速度三者的关系 142
6.3.8 引力 142
6.4 人工控制的登月工程 143
6.4.1 Ccontroller类的定义 143
6.4.2 CLander类的定义 144
6.4.3 UpdateShip函数 146
6.5 遗传算法控制的登月飞船 149
6.5.1 为基因组编码 150
6.5.2 杂交和变异操作 151
6.5.3 适应性函数 152
6.5.4 更新函数 153
6.5.5 运行程序 155
6.6 总结 156
6.7 习题 156
第3篇 神经网络 158
第7章 神经网络概述 158
7.1 神经网络介绍 158
7.2 一个生物学的神经网络——大脑 159
7.3 数字版的神经网络 161
7.3.1 相关的数学知识 162
7.3.2 神经细胞的用途 163
7.4 扫雷机游戏 165
7.4.1 选择输出 166
7.4.2 选择输入 168
7.4.3 确定隐藏的神经细胞数目 169
7.4.4 CNeuralNet.h(神经网络类的头文件) 169
7.4.5 神经网络的编码 174
7.4.6 遗传算法 175
7.4.7 扫雷机类 176
7.4.8 CController Class(控制器类) 179
7.4.9 运行此程序 184
7.4.10 功能的两个改进 184
7.5 总结 188
7.6 练习 188
第8章 为机器人提供知觉 190
8.1 回避障碍物 190
8.1.1 探测环境 191
8.1.2 适应性函数 193
8.2 为机器人提供记忆器 195
8.3 总结 201
8.4 练习 202
第9章 有监督的训练方法 203
9.1 异或函数 203
反向传播的工作原理 204
9.2 RecognizeIt——鼠标手势的识别 213
9.2.1 用向量表示一个手势 214
9.2.2 训练网络 215
9.2.3 录并变换鼠标数据 216
9.2.4 增加新手势 218
9.2.5 控制器类 218
9.3.1 增加动量 221
9.3 一些有用的技术和技巧 221
9.3.2 过拟合 222
9.3.3 柔性最大激励函数 223
9.4 监督学习的应用 224
9.5 一个现代寓言 225
9.6 练习 226
第10章 实时演化 227
10.1 外星人游戏 227
10.1.1 程序实现 228
10.1.2 运行BrainyAliens程序 238
10.2 练习 239
11.1 竞争约定问题 240
第11章 演化神经网络的拓扑 240
11.2 直接编码 242
11.2.1 基因子 242
11.2.2 二进制矩阵编码 242
11.2.3 基于节点的编码 244
11.2.4 基于路径的编码 246
11.3 间接编码 247
11.3.1 基于语法的编码 247
11.3.2 二维生长编码 248
11.4 拓扑扩张的神经演化 249
11.4.1 NEAT基因组 250
11.4.2 算子和创新 255
11.4.3 物种形成 271
11.4.4 Cga换时代方法 275
11.4.5 将基因组转变为表现型 280
11.4.6 运行Demo程序 286
11.5 总结 288
11.6 练习 288
附录A WEB资源 289
附录B 参考书目及推荐读物 291
附录C 光盘中的内容 295
后记 297