1. 课程导入与问题界定

在工程优化、参数整定、组合决策等任务中,我们经常遇到这样一类问题:目标函数没有解析梯度、可行域不连续、变量是离散的、约束条件复杂,甚至目标函数本身只能通过仿真或实验"黑箱"评估。此时梯度下降、线性规划等经典方法往往失效,而遗传算法(Genetic Algorithm, GA)提供了一条"以种群搜索代替单点迭代"的通用路径。本课程围绕"如何设计一个可用的遗传算法优化模型,并证明它确实有效"展开,共 30 节,从概念、编码、算子、参数、约束处理,一直走到实验设计与结果验证。

一、遗传算法到底在做什么

遗传算法是一种受生物进化启发的全局随机搜索方法。它不维护一个候选解,而是维护一个种群;每个个体是一个染色体,即问题解的一种编码表示;种群通过选择、交叉、变异三类算子逐代演化,使适应度高的个体以更高概率把基因片段传递下去。其核心假设是:好的部分结构(building block)在代际传递中会被保留并组合,从而逐步逼近全局较优区域。

理解 GA 需要抓住四个基本要素,它们共同决定算法行为:

  • 编码方式:二进制、实数、整数排列、树结构等。编码决定了搜索空间的几何形状,也决定了交叉变异是否有意义。
  • 适应度函数:把目标函数映射为非负的"优劣度量"。对最小化问题通常取负号或倒数变换,并需处理约束违反。
  • 遗传算子:选择(轮盘赌、锦标赛、排序)、交叉(单点、多点、均匀、模拟二进制)、变异(位翻转、高斯扰动、交换)。
  • 运行参数:种群规模 N、交叉概率 pc、变异概率 pm、最大代数 G、终止条件。

需要强调的是,GA 不是"万能优化器"。它擅长在缺乏梯度信息、多峰、离散的搜索空间中找到较优解,但收敛速度慢、结果具有随机性,且对编码与参数敏感。因此本课程的重点不是"会调用一个 GA 库",而是"能设计出与问题匹配的模型,并用可复现的实验证明它比基线更好"。

二、典型应用场景与适用边界

GA 在实际工程中常见于以下几类任务:其一是离散组合优化,如作业车间调度、旅行商路径、装箱与排班,此时排列编码配合交换变异非常自然;其二是连续参数寻优,如控制器 PID 参数整定、神经网络超参数搜索,常用实数编码加模拟二进制交叉;其三是黑箱仿真优化,目标值只能通过一次耗时仿真获得,GA 的种群并行评估特性可以充分利用计算资源;其四是多目标权衡,通过 NSGA-II 等变体获得帕累托前沿,供决策者选择。

反过来,如果问题具有良好梯度、维度极高且评估昂贵、或约束极其严格导致可行解稀少,则应优先考虑梯度法、代理模型或专门的约束优化算法。判断是否使用 GA,本质上是在问:搜索空间是否非凸、非连续、缺乏梯度?评估一次解的成本是否可接受?是否需要一个"足够好"而非"精确最优"的解?

三、设计—验证的完整流程

一个负责任的 GA 项目应遵循"问题建模 → 编码与算子设计 → 参数与约束处理 → 实验验证 → 结果分析"的闭环。下图给出了本课程贯穿始终的流程骨架,以及每个阶段的关键产出与判断依据。

遗传算法优化模型:设计—验证闭环 ① 问题建模 决策变量 / 目标函数 约束条件 / 评估成本 ② 编码与算子 染色体表示 / 交叉变异 适应度映射 / 修复策略 ③ 参数与约束 N / p_c / p_m / G 罚函数 / 可行性规则 ④ 实验验证 多次独立运行 基线对比 / 统计 验证不达标 → 回到编码/参数调整 种群演化内部循环(第 t 代 → 第 t+1 代) 初始化种群 N 个随机个体 适应度评估 f(x) → 适应度 选择 锦标赛 / 轮盘赌 交叉 概率 p_c 变异 概率 p_m 终止判断 达到最大代数 G 或适应度收敛 未终止:t ← t+1 输出最优个体与收敛曲线

图中上半部分是项目级闭环:建模、编码算子、参数约束、实验验证四个阶段,验证不达标时沿橙色虚线回到前序阶段调整,而不是盲目增加代数。下半部分是算法级循环:初始化、评估、选择、交叉、变异,直到满足终止条件后输出最优个体与收敛曲线。两条回路共同构成本课程的任务路线图。

四、本课程的任务路线图与示例约定

后续章节将按"概念—设计—实现—验证"的顺序推进:先讲清编码与适应度设计,再逐一展开选择、交叉、变异算子及其适用条件,然后讨论种群规模、交叉变异概率、精英保留等参数的影响规律,接着处理约束(罚函数、修复、可行性规则)与多目标扩展,最后用统一的实验框架做对比验证。为了让读者能复现,课程中会反复使用一个贯穿案例:一个带约束的离散调度问题,决策变量为任务排列,目标为最小化总完工时间,约束为工序先后关系。示例参数(如 N=100、pc=0.85、pm=0.02、G=300)均为教学假设值,用于说明方法而非宣称实测最优。

学习建议:每节结束后,尝试把本节涉及的算子或参数代入贯穿案例,记录一次运行的最优适应度与收敛代数。只有亲手观察过"参数改变 → 收敛曲线改变"的过程,才能真正建立对 GA 的工程直觉。

最后需要建立一条验证意识:GA 的结果具有随机性,单次运行的最优值不能作为结论。规范的验证至少包括多次独立重复运行、与基线方法(随机搜索、贪心、梯度法)对比、报告均值与标准差、绘制收敛曲线,并检查约束违反率。本课程后续的每一类设计决策,最终都要落到"能否被可复现的实验支持"这一判断标准上。