SuperAPI AI 工具集

cuopt-debugging

测试与质量

查看项目

更新于 10-16 09:46

技能介绍

用途:该技能用于诊断和修复 cuOpt 的 LP/MILP 求解问题,包括报错、结果错误、空解、不可行、无界以及性能过慢等情况。使用前需先明确问题症状(报错信息、结果异常、空解、性能问题)、problem.Status.name 的实际取值,并获取完整错误文本、产生错误的代码和问题规模(变量数与约束数)。

主要能力:按症状提供快速诊断。若状态看似正常但解为空/None,最常见原因是状态字符串大小写写错——应使用 PascalCase 如 "Optimal"、"FeasibleFound",而非 "OPTIMAL",并可用打印实际状态与两种匹配结果的代码核对。目标值为零或错误时,检查变量是否真正被使用、约束是否过紧、目标系数符号以及目标中变量是否正确。不可行时检查约束冲突(如 x<=5 与 x>=10)、边界过紧、软约束缺少松弛变量。整数变量出现小数时,检查变量是否以 INTEGER(而非 CONTINUOUS)定义,并确认状态是否为 FeasibleFound。无界时检查变量上下界缺失、约束方向写反或约束缺失。构建大型表达式触发递归深度超限时,改用 LinearExpression(vars_list, coeffs_list, constant=0.0) 并配合 setObjective(expr, sense=MINIMIZE)。内存不足时可减少问题规模、使用稀疏约束矩阵或设置时间限制先获取部分解。

使用方式:通过设置 SolverSettings 参数辅助排查,如 settings.set_parameter("log_to_console", 1) 查看进度、set_parameter("time_limit", 60) 限制等待时间、对 MILP 用 set_parameter("mip_relative_gap", 0.05) 接受 5% 相对间隙;求解后用 problem.SolveTime 查看耗时。资料还提供了解读对偶值与检验成本的参考(resources/interpreting_duals.md),但指出整数模型(MILP)与二次约束不返回可用对偶值。诊断清单包括:状态大小写是否正确、变量 vtype 是否正确、约束方向是否正确、目标 sense 是否正确、变量边界是否按需指定。

适用场景与限制:适用于 cuOpt LP/MILP 的报错定位、状态码核对、不可行/无界分析、整数解异常和性能调优。提交可复现的最小示例 GitHub issue 时需附 cuOpt 版本、CUDA 版本、错误信息与最小复现代码。资料未提供具体版本支持范围、安装步骤与价格信息。