关于 cuopt-numerical-optimization-api-c
这是一项使用 cuOpt C API 求解 LP、MILP 和 QP 的 Agent Skill,说明 API 调用顺序、QP 限制、对偶值获取与调试方法,并指向 C 示例。
主要功能
- 01通过 C 求解 LP、MILP 和 QP
- 02说明 API 调用顺序
- 03介绍 QP 建模限制
- 04获取 LP/QP 对偶值与约化成本
- 05排查 MPS 解析问题
适用场景
- 01在 C 中实现 LP 或 MILP 求解调用
- 02求解连续变量 QP
- 03获取 LP 对偶值和约化成本
- 04排查 MPS 解析或性能问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nvidia/ skills --skill cuopt-numerical-optimization-api-c安装后在 Claude Code 中输入/cuopt-numerical-optimization-api-c确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdskill-card.mdskill.oms.sigassets/README.mdassets/lp_basic/lp_simple.cREADME.mdassets/lp_duals/lp_duals.cREADME.mdassets/lp_warmstart/README.mdassets/milp_basic/milp_simple.cREADME.mdassets/milp_production_planning/milp_production.cREADME.mdassets/mps_solver/mps_solver.cREADME.mdassets/mps_solver/data/sample.mpsevals/evals.jsonreferences/examples.md详细介绍
cuOpt 数值优化 — C API
通过 cuOpt C API 求解 LP、MILP 和 QP 问题。这三者使用相同的库、头文件、构建模式和核心调用(cuOptCreate*Problem、cuOptSolve、cuOptGetObjectiveValue);QP 通过二次目标创建调用扩展 API。
编码前,请确认问题类型和问题建模(变量、目标、约束、变量类型)。
此技能仅限 C。
API 调用顺序
对于 LP/MILP,按顺序调用以下 C 入口点:cuOptCreateRangedProblem(目标方向为 CUOPT_MINIMIZE / CUOPT_MAXIMIZE,约束矩阵采用 CSR 格式,以 row_offsets / col_indices / values 表示,var_types 字符数组使用 CUOPT_CONTINUOUS / CUOPT_INTEGER 宏)→ cuOptSolve(problem, settings, &solution) → cuOptGetObjectiveValue(solution, &obj_value) → 对应的 cuOptDestroy* 调用。请包含 <cuopt/mathematical_optimization/cuopt_c.h>。完整的有序代码和构建说明见 references/examples.md。
通过 C API 使用 QP(测试版)
QP 与 LP/MILP 使用相同的库、包含/库路径和构建模式,只有问题创建调用不同(它接受二次目标)。有关 QP 专用的创建/求解调用,请参阅 cuOpt C 头文件(cpp/include/cuopt/mathematical_optimization/),端到端 QP 示例请参阅仓库文档 docs/cuopt/source/cuopt-c/lp-qp-milp/。
QP 规则:
- 仅支持最小化(
CUOPT_MINIMIZE)。若要最大化f(x),请将目标系数和 Q 项取反。 - 仅支持连续变量 — 为每个变量设置
CUOPT_CONTINUOUS;不支持整数 QP。 - 对于凸问题,Q 应为 PSD。
对偶值(LP / QP)
cuOptGetDualSolution 和 cuOptGetReducedCosts 会为 LP 和 QP 返回对偶值和约化成本。对于带有二次约束的问题,不会返回这些值(数组会填入 NaN),因此只有在所有约束均为线性时才读取它们。调用顺序见 assets/lp_duals。
调试(MPS / C)
MPS 解析: 必需的节按顺序为:NAME、ROWS、COLUMNS、RHS、(可选)BOUNDS、ENDATA。整数标记:'MARKER'、'INTORG'、'INTEND'。
内存不足或运行缓慢: 检查问题规模(变量、约束);使用稀疏矩阵;设置时间限制和间隙容差。
示例
- examples.md — LP/MILP 及构建说明
- assets/README.md — 以下所有参考代码的构建命令
- lp_basic — 简单 LP:创建问题、求解并获取解
- lp_duals — 对偶值和约化成本
- lp_warmstart — PDLP 热启动(见 README)
- milp_basic — 含整数变量的简单 MILP
- milp_production_planning — 带资源约束的生产计划
- mps_solver — 通过
cuOptReadProblem从 MPS 文件求解
对于(MPS 文件)命令行用法,请使用 cuopt_cli 和产品文档。
升级处理
有关贡献或从源代码构建,请参阅产品文档或仓库文档。