1. 课程导入与优化思维建立
在工程实践中,我们很少能“随便取一个参数”就让系统工作得足够好。电机控制器里的PID增益、换热器的换热面积、桁架结构的杆件截面、机械臂轨迹的时间节点、电池充电策略中的电流限值——这些量一旦选得不合适,轻则效率低、振动大、超调严重,重则无法满足安全与工艺约束。数值优化要解决的,正是这类“在可行范围内寻找最佳参数组合”的问题。
本课程的目标不是把优化讲成纯数学,而是建立一条从工程问题到MATLAB可执行求解的完整路径:把工程语言翻译成目标函数、决策变量与约束,选择合适的求解器,读懂求解输出,并判断结果是否可信、是否可用。
一、数值优化在工程参数求解中的定位
工程参数求解通常有三条路线。第一条是解析法:通过求导令梯度为零得到闭式解,适合形式简单、变量少的问题,但一旦出现分段、非线性约束或实验数据驱动的模型,往往无法求解。第二条是经验试凑法:凭经验调参、做正交试验或扫参,工程上很常见,但变量一多,组合爆炸,且难以保证找到的是“最好”而不是“勉强能用”。第三条就是数值优化:用迭代算法在计算机上逐步逼近最优解,能处理非线性、多约束、多变量、甚至目标函数只能通过仿真或实验获得的问题。
因此,数值优化的定位可以概括为:把工程判断转化为可计算的数学形式,再用算法系统性地搜索,而不是靠反复试错。它不替代工程经验,而是把经验用在“建模、定约束、选初值、判结果”这些关键环节上。
二、典型问题形式:从工程描述到数学表达
绝大多数工程优化问题都可以写成如下标准形式:
min f(x) % 目标函数:要最小化的指标
s.t. h_i(x) = 0 % 等式约束:必须严格满足的关系
g_j(x) <= 0 % 不等式约束:允许范围边界
x_L <= x <= x_U % 变量上下界
其中 x 是决策变量向量,f(x) 是目标函数,h 和 g 是约束函数。注意“最小化”是约定俗成的写法;若工程目标是最大化效率或利润,只需对目标取负号,即 max f(x) 等价于 min −f(x)。
举一个具体例子。某直流电机位置伺服系统采用PID控制,需要整定比例增益 Kp、积分增益 Ki、微分增益 Kd。工程要求:上升时间不超过0.5 s,超调量不超过10%,控制量不超过额定电压。可以这样建模:
- 决策变量:x = [Kp, Ki, Kd];
- 目标函数:f(x) = 时间加权绝对误差积分 ITAE = ∫ t·|e(t)| dt,通过Simulink仿真或数值积分计算;
- 不等式约束:超调量 σ(x) ≤ 10%,控制量峰值 u_max(x) ≤ U_rated;
- 变量下界:Kp, Ki, Kd ≥ 0。
这里的目标函数没有解析表达式,只能通过仿真得到,属于典型的“黑箱优化”。这正是数值优化在工程中不可替代的场景。
三、MATLAB优化工具箱概览
MATLAB提供了覆盖连续、离散、全局与多目标的优化工具。按问题类型可作如下划分:
| 问题类型 | 典型函数 | 适用场景 |
|---|---|---|
| 无约束非线性 | fminunc, fminsearch | 目标光滑、无约束或仅需简单边界 |
| 约束非线性 | fmincon | 含等式/不等式约束的工程参数整定 |
| 线性/整数规划 | linprog, intlinprog | 资源分配、排产、选型 |
| 二次规划 | quadprog | 最小二乘型控制、MPC |
| 最小二乘/曲线拟合 | lsqnonlin, lsqcurvefit | 参数辨识、实验数据拟合 |
| 多目标优化 | gamultiobj, paretosearch | 效率与成本、精度与能耗的权衡 |
| 全局优化 | ga, particleswarm, simulannealbnd | 多峰、初值敏感问题 |
选择求解器的核心依据是:目标与约束是否光滑、是否可导、变量是否连续、是否存在多个局部极小。对于工程问题,fmincon 和 lsqnonlin 使用频率最高;当目标函数来自仿真、不可导时,可考虑 patternsearch 或 ga。
四、学习路线与优化思维
本课程后续将按“建模—求解—诊断—应用”的主线推进。学习时建议始终带着三个问题:我要优化的到底是什么指标?哪些量可以自由调整?哪些边界绝对不能越过?这三个问题分别对应目标函数、决策变量和约束,是优化建模的骨架。
下面的SVG给出了一条从工程需求到优化结果的完整信号链,帮助建立整体框架。
图中红色虚线表示反馈:优化很少一次成功。若 exitflag 为负、约束违反量不为零,或最优解落在变量边界上,都需要回到建模阶段检查约束是否过紧、初值是否合理、目标函数是否写错。
fmincon 精调。若多次不同初值得到差异很大的解,说明问题可能多峰,应考虑全局优化方法。
最后强调一个观念:数值优化给出的“最优解”是相对于你写的目标函数和约束而言的。模型错了,算法再强也没有意义。因此,本课程会把大量精力放在“如何把工程问题正确地翻译成优化模型”上,而不是只记函数名和参数。掌握这条主线,后续每一章的工具与方法才能落到真实的工程参数求解中。