mcpField
C
cuopt-numerical-optimization-api-c

cuopt-numerical-optimization-api-c

github.com/nvidia数据与数据库3.8k1.3k 次安装今天更新
代码仓库

关于 cuopt-numerical-optimization-api-c

这是一项使用 cuOpt C API 求解 LP、MILP 和 QP 的 Agent Skill,说明 API 调用顺序、QP 限制、对偶值获取与调试方法,并指向 C 示例。

主要功能

  1. 01通过 C 求解 LP、MILP 和 QP
  2. 02说明 API 调用顺序
  3. 03介绍 QP 建模限制
  4. 04获取 LP/QP 对偶值与约化成本
  5. 05排查 MPS 解析问题

适用场景

  1. 01在 C 中实现 LP 或 MILP 求解调用
  2. 02求解连续变量 QP
  3. 03获取 LP 对偶值和约化成本
  4. 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.md
skill-card.md
skill.oms.sig
assets/
README.md
assets/lp_basic/
lp_simple.c
README.md
assets/lp_duals/
lp_duals.c
README.md
assets/lp_warmstart/
README.md
assets/milp_basic/
milp_simple.c
README.md
assets/milp_production_planning/
milp_production.c
README.md
assets/mps_solver/
mps_solver.c
README.md
assets/mps_solver/data/
sample.mps
evals/
evals.json
references/
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'。

内存不足或运行缓慢: 检查问题规模(变量、约束);使用稀疏矩阵;设置时间限制和间隙容差。

示例

对于(MPS 文件)命令行用法,请使用 cuopt_cli 和产品文档。

升级处理

有关贡献或从源代码构建,请参阅产品文档或仓库文档。

评论

支持 Markdown