EXAMINER 求解器手册 — 解检查与KKT条件验证
1. 引言
EXAMINER 是一个 GAMS 求解器,用于检查解的准确性和验证最优性条件。它不是一个优化求解器,而是一个验证和诊断工具。EXAMINER 可以检查:
- KKT(Karush-Kuhn-Tucker)一阶最优性条件
- 原始可行性和对偶可行性
- 互补松弛条件
- 解的数值精度
EXAMINER 特别适用于以下场景:
- 验证求解器返回的解是否满足最优性条件
- 诊断数值问题(如缩放不良)
- 比较不同求解器的解质量
- 教学和研究目的(可视化 KKT 条件)
2. 使用方法
要在 GAMS 中使用 EXAMINER 求解器:
Option LP = EXAMINER;
Solve mymodel using LP minimizing z;
EXAMINER 支持所有 GAMS 模型类型(LP、NLP、MIP、QCP 等)。运行后,EXAMINER 会输出解的检查结果,包括任何违反最优性条件或可行性条件的情况。
3. 检查项
EXAMINER 执行以下检查:
| 检查项 | 描述 |
| 原始可行性 | 检查所有变量是否在其边界内,所有约束是否满足 |
| 对偶可行性 | 检查简化成本是否具有正确的符号 |
| 互补松弛 | 检查变量-边界互补松弛和约束-对偶互补松弛 |
| KKT 条件 | 检查拉格朗日函数的梯度是否为零 |
| 数值精度 | 检查求解过程中是否有数值问题 |
KKT 条件检查
EXAMINER 会打印出解的详细信息,包括原始变量值、边界、简化成本(reduced costs)、对偶变量值和约束松弛量。这使得用户可以直观地检查和验证 KKT 一阶最优性条件。
4. 容差选项
| 选项 | 描述 | 默认值 |
| dualCSTol | 对偶互补松弛容差 | 1e-6 |
| primalCSTol | 原始互补松弛容差 | 1e-6 |
| feasTol | 可行性检查容差 | 1e-6 |
| optTol | 最优性检查容差 | 1e-6 |
5. 选项参考
| 选项 | 描述 | 默认值 |
| checkDual | 检查对偶可行性 | 1 |
| checkKKT | 检查 KKT 条件并打印详细信息 | 0 |
| checkPrimal | 检查原始可行性 | 1 |
| dualCSTol | 对偶互补松弛容差 | 1e-6 |
| feasTol | 可行性容差 | 1e-6 |
| optTol | 最优性容差 | 1e-6 |
| primalCSTol | 原始互补松弛容差 | 1e-6 |
| returnGamsPoint | 将 GamsPoint 作为解返回给 GAMS | 0 |
| returnInitPoint | 将 InitPoint 作为解返回给 GAMS | auto |
| returnSoluPoint | 将 SoluPoint 作为解返回给 GAMS | auto |
| returnSolvPoint | 将 SolvPoint 作为解返回给 GAMS | auto |
| scaled | 是否对缩放后的模型进行检查 | 0 |
| scaleLB | 行缩放因子的下界 | 1 |
| scaleUB | 行缩放因子的上界 | maxdouble |
| showSlacks | 对失败的检查明确显示不可行性或松弛量 | 0 |
| subSolver | 运行的子求解器(默认使用模型类型的默认求解器) | auto |
| subSolverOpt | 传递给子求解器的 optfile 值 | auto |
| trace | 将跟踪信息计算并追加到此文件 | none |
| traceStyle | 跟踪文件样式 | 0 |
| unScaled | 是否对原始未缩放的模型进行检查 | 1 |
在线留言
尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。
|