1. 课程导入与问题界定
在工程优化、参数整定、组合决策等任务中,我们经常遇到这样一类问题:目标函数没有解析梯度、可行域不连续、变量是离散的、约束条件复杂,甚至目标函数本身只能通过仿真或实验"黑箱"评估。此时梯度下降、线性规划等经典方法往往失效,而遗传算法(Genetic Algorithm, GA)提供了一条"以种群搜索代替单点迭代"的通用路径。本课程围绕"如何设计一个可用的遗传算法优化模型,并证明它确实有效"展开,共 30 节,从概念、编码、算子、参数、约束处理,一直走到实验设计与结果验证。
一、遗传算法到底在做什么
遗传算法是一种受生物进化启发的全局随机搜索方法。它不维护一个候选解,而是维护一个种群;每个个体是一个染色体,即问题解的一种编码表示;种群通过选择、交叉、变异三类算子逐代演化,使适应度高的个体以更高概率把基因片段传递下去。其核心假设是:好的部分结构(building block)在代际传递中会被保留并组合,从而逐步逼近全局较优区域。
理解 GA 需要抓住四个基本要素,它们共同决定算法行为:
- 编码方式:二进制、实数、整数排列、树结构等。编码决定了搜索空间的几何形状,也决定了交叉变异是否有意义。
- 适应度函数:把目标函数映射为非负的"优劣度量"。对最小化问题通常取负号或倒数变换,并需处理约束违反。
- 遗传算子:选择(轮盘赌、锦标赛、排序)、交叉(单点、多点、均匀、模拟二进制)、变异(位翻转、高斯扰动、交换)。
- 运行参数:种群规模 N、交叉概率 pc、变异概率 pm、最大代数 G、终止条件。
需要强调的是,GA 不是"万能优化器"。它擅长在缺乏梯度信息、多峰、离散的搜索空间中找到较优解,但收敛速度慢、结果具有随机性,且对编码与参数敏感。因此本课程的重点不是"会调用一个 GA 库",而是"能设计出与问题匹配的模型,并用可复现的实验证明它比基线更好"。
二、典型应用场景与适用边界
GA 在实际工程中常见于以下几类任务:其一是离散组合优化,如作业车间调度、旅行商路径、装箱与排班,此时排列编码配合交换变异非常自然;其二是连续参数寻优,如控制器 PID 参数整定、神经网络超参数搜索,常用实数编码加模拟二进制交叉;其三是黑箱仿真优化,目标值只能通过一次耗时仿真获得,GA 的种群并行评估特性可以充分利用计算资源;其四是多目标权衡,通过 NSGA-II 等变体获得帕累托前沿,供决策者选择。
反过来,如果问题具有良好梯度、维度极高且评估昂贵、或约束极其严格导致可行解稀少,则应优先考虑梯度法、代理模型或专门的约束优化算法。判断是否使用 GA,本质上是在问:搜索空间是否非凸、非连续、缺乏梯度?评估一次解的成本是否可接受?是否需要一个"足够好"而非"精确最优"的解?
三、设计—验证的完整流程
一个负责任的 GA 项目应遵循"问题建模 → 编码与算子设计 → 参数与约束处理 → 实验验证 → 结果分析"的闭环。下图给出了本课程贯穿始终的流程骨架,以及每个阶段的关键产出与判断依据。
图中上半部分是项目级闭环:建模、编码算子、参数约束、实验验证四个阶段,验证不达标时沿橙色虚线回到前序阶段调整,而不是盲目增加代数。下半部分是算法级循环:初始化、评估、选择、交叉、变异,直到满足终止条件后输出最优个体与收敛曲线。两条回路共同构成本课程的任务路线图。
四、本课程的任务路线图与示例约定
后续章节将按"概念—设计—实现—验证"的顺序推进:先讲清编码与适应度设计,再逐一展开选择、交叉、变异算子及其适用条件,然后讨论种群规模、交叉变异概率、精英保留等参数的影响规律,接着处理约束(罚函数、修复、可行性规则)与多目标扩展,最后用统一的实验框架做对比验证。为了让读者能复现,课程中会反复使用一个贯穿案例:一个带约束的离散调度问题,决策变量为任务排列,目标为最小化总完工时间,约束为工序先后关系。示例参数(如 N=100、pc=0.85、pm=0.02、G=300)均为教学假设值,用于说明方法而非宣称实测最优。
最后需要建立一条验证意识:GA 的结果具有随机性,单次运行的最优值不能作为结论。规范的验证至少包括多次独立重复运行、与基线方法(随机搜索、贪心、梯度法)对比、报告均值与标准差、绘制收敛曲线,并检查约束违反率。本课程后续的每一类设计决策,最终都要落到"能否被可复现的实验支持"这一判断标准上。