mcpField
C
cuopt-numerical-optimization-api-c

cuopt-numerical-optimization-api-c

github.com/promptingcompany数据与数据库039 次安装17 周前更新
代码仓库

关于 cuopt-numerical-optimization-api-c

面向 C 的技能,指导使用 cuOpt C API 求解 LP、MILP 和 QP,涵盖调用顺序、QP 限制、对偶值获取及 MPS 调试。

主要功能

  1. 01创建并求解 LP 和 MILP
  2. 02QP 支持及最小化规则
  3. 03对偶值与约化成本
  4. 04MPS 解析指南
  5. 05C 示例与构建参考

适用场景

  1. 01用 C 实现 LP 或 MILP 求解流程
  2. 02求解连续变量 QP
  3. 03获取线性约束的对偶值
  4. 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.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/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'。

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

示例

对于 CLI(MPS 文件),请使用 cuopt_cli 和产品文档。

升级处理

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

评论

支持 Markdown