从"为什么要向自然学习"到"用 GA 调神经网络超参数"——25 章带你走完理解进化计算的完整心路历程。
一套面向初学者的遗传算法(GA)系统学习笔记,包含 25 章中文讲解和一个纯 JS 交互式可视化工具。不是使用手册,而是一个思考者逐渐理解进化计算的完整旅程——先建直觉,再拆机制,然后建模、证数学、看家族、动手做。
- 6 阶段认知弧线:奠基 → 拆解核心机制 → 建模实操 → 数学原理 → 同类算法扩展 → 实践收尾
- 直觉优先:数学公式只点到结论,用故事和比喻建立理解
- Mermaid + ASCII 双轨图示:流程图与文字示意图并行
- 交互式可视化:浏览器中实时操控 GA,拖参数、看动画、回溯任意代
- 从经典 GA 到整个家族:ES / EP / GP / DE / PSO / ACO / 神经进化(NEAT)
| 章 | 标题 | 核心内容 |
|---|---|---|
| 01 | 引言:为什么要向自然学习 | 优化的困惑、试错 vs 计算、进化计算哲学起源 |
| 02 | 遗传算法的直觉故事 | "草原上的兔子"故事讲完整个 GA 流程 |
| 03 | 核心概念与术语映射 | 基因/染色体/种群/适应度/代,生物学术语 → 算法语言 |
| 章 | 标题 | 核心内容 |
|---|---|---|
| 04 | 编码:把问题翻译成生物语言 | 二进制/实数/排列/树编码,Hamming 悬崖 |
| 05 | 选择:谁有资格繁衍 | 轮盘赌/锦标赛/排序选择,选择压力的直觉 |
| 06 | 交叉:信息的重组艺术 | 单点/多点/均匀/算术交叉 |
| 07 | 变异:保持多样性的火种 | 变异为何是"保险"而非主力 |
| 08 | 算法流程的全景图 | 完整 SGA 流程,终止条件 |
| 章 | 标题 | 核心内容 |
|---|---|---|
| 09 | 什么问题适合进化算法 | 适用场景判断、与其他方法的取舍 |
| 10 | 参数化与编码设计 | 决策变量怎么选、搜索空间怎么定 |
| 11 | 适应度函数的设计艺术 | 多目标、惩罚、缩放的权衡 |
| 12 | 约束处理方法 | 罚函数法/修复法/约束优先 |
| 13 | 参数调优与早熟问题 | 种群规模/代数/概率怎么定(预防篇) |
| 14 | 收敛、多样性与评估 | 如何判断算法"跑好了" |
| 15 | 常见陷阱与诊断 | 早熟/景观误判/编码灾难/调参策略(诊断篇) |
| 章 | 标题 | 核心内容 |
|---|---|---|
| 16 | 模式定理与积木块假说 | 模式、阶、定义长度,积木块为何被保留 |
| 17 | 收敛性与马尔可夫链视角 | 精英保留为何保证收敛 |
| 章 | 标题 | 核心内容 |
|---|---|---|
| 18 | 遗传算法 GA 与它的变体 | 岛屿模型/CHC/Messy GA/稳态/Cellular |
| 19 | 进化策略 ES 与进化编程 EP | (μ,λ) 策略、自适应变异、CMA-ES |
| 20 | 遗传编程 GP:让程序自己进化 | 语法树编码、子树交叉、程序膨胀 |
| 21 | 差分进化 DE | "用差分当方向"的现代方法 |
| 22 | 群体智能:PSO 与 ACO | 粒子群/蚁群,与进化算法的异同 |
| 23 | 当进化遇见神经网络与机器学习 | NEAT、NAS、进化 + LLM 前沿 |
| 章 | 标题 | 核心内容 |
|---|---|---|
| 24 | 项目实践:函数优化(含交互式可视化) | Python 参考实现 + JS 交互工具 + 引导式实验 |
| 25 | 总结与进阶学习路线 | NFL 定理收束、书籍/库/方向推荐 |
ga_interactive.html 是一个纯 vanilla JS + Canvas 的单文件交互工具,零依赖,浏览器打开即用。
- 随机生成多峰函数,暴力扫描标记全局最优
- 实时调控 N / Pc / Pm,观察种群逐代演化
- 收敛曲线 + 多样性曲线实时绘制,自动诊断收敛/停滞
- 历史回溯:每代保存种群快照,拖拽时间轴查看任意代,或从某代截断改参数重跑
| 组件 | 技术 |
|---|---|
| 笔记 | Markdown + Mermaid 流程图 |
| 参考实现 | Python + NumPy(第 24 章) |
| 交互可视化 | 原生 JS + Canvas API(单 HTML 文件,零依赖) |
- 按序号顺序读:每章末尾有"上一篇/下一篇"导航链接
- 第一遍快速过:重点看每章的故事和 ASCII 图,跳过数学
- 第二遍动手做:打开
ga_interactive.html,跟着第 24 章的 4 个实验操作 - 按需查阅:把目录当索引,遇到具体问题再翻对应章节
MIT