用途:面向 MATLAB 数值优化代码的编写、求解与调试,覆盖完整优化生命周期——分类问题、建模、选择并配置求解器、验证结果。
主要能力:
- 分类与建模。判断问题类别(LP、QP、锥规划、混合整数、最小二乘、非线性等),识别隐藏的凸性或非光滑结构;默认使用基于问题的方法(optimproblem、optimvar、optimconstr、optimexpr、fcn2optimexpr),仅在映射简单、需特定求解器特性或需代码生成时改用基于求解器的方法,可用 prob2struct 转换。
- 求解器选择与配置。优先选择最窄匹配的求解器(linprog > quadprog > coneprog > lsqlin > lsqnonlin > fmincon > 全局求解器);用 optimoptions('solvername') 校验选项,用 checkGradients 校验解析梯度,必要时启用 UseParallel。
- 结果验证与调试。检查 exitflag、目标值、迭代次数、约束违反量、一阶最优性;用 issatisfied 与 infeasibility 定位违反约束;失败时按建模、缩放、算法、初值顺序排查。
使用方式:基于问题的典型流程为定义 optimvar、创建 optimproblem、添加约束、设置与变量同名的结构体初值 x0、调用 solve 并检查输出。求解前先在 x0 处评估目标与约束,确认有限且尺寸正确。
适用场景:MATLAB 优化建模、求解器选型与调参、收敛问题诊断、结果校验,以及最优控制、调度分配、设计优化、参数拟合、投资组合等应用的可视化。
限制:不适用于无需数值优化求解器的任务(如求数组最小值)、非优化类 MATLAB 代码、第三方优化工具箱,以及符号方程、ODE 或线性方程组求解。基于问题的方法不支持代码生成;部分求解器不支持 UseParallel 或一阶最优性指标。具体版本行为与选项以本机 optimoptions 输出为准。