关于 cuopt-numerical-optimization-api-c
面向 C 的技能,指导使用 cuOpt C API 求解 LP、MILP 和 QP,涵盖调用顺序、QP 限制、对偶值获取及 MPS 调试。
主要功能
- 01创建并求解 LP 和 MILP
- 02QP 支持及最小化规则
- 03对偶值与约化成本
- 04MPS 解析指南
- 05C 示例与构建参考
适用场景
- 01用 C 实现 LP 或 MILP 求解流程
- 02求解连续变量 QP
- 03获取线性约束的对偶值
- 04排查 MPS 输入或内存问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ promptingcompany/ nv-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/linear_programming/cuopt_c.h>。包含完整调用顺序和构建说明的代码见 references/examples.md。
通过 C API 使用 QP(测试版)
QP 使用与 LP/MILP 相同的库、包含路径、库路径和构建模式,只有问题创建调用不同(它接受二次目标函数)。QP 特定的创建/求解调用请参阅 cuOpt C 头文件(cpp/include/cuopt/linear_programming/),端到端 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 文件求解
对于 CLI(MPS 文件),请使用 cuopt_cli 和产品文档。
升级处理
如需贡献代码或从源代码构建,请参阅产品文档或仓库文档。