SuperAPI AI 工具集

nvidia-cuopt-numerical-optimization-api-c

编程与开发

查看项目

更新于 10-15 19:58

技能介绍

用途:在 C/C++ 程序中通过 cuOpt C API 嵌入线性规划(LP)、混合整数线性规划(MILP)与二次规划(QP,beta)求解。LP、MILP、QP 共用同一库、头文件、构建方式与核心调用(cuOptCreate*Problem、cuOptSolve、cuOptGetObjectiveValue),QP 额外提供二次目标创建调用。

主要能力:以 CSR 格式描述约束(row_offsets、col_indices、values),支持连续与整数变量类型(CUOPT_CONTINUOUS、CUOPT_INTEGER),可设置目标方向、目标系数、约束上下界与变量上下界;可获取目标值,示例还涉及对偶值与 reduced costs、PDLP warmstart、从 MPS 文件读取问题(cuOptReadProblem)。

使用方式:包含头文件 #include <cuopt/linear_programming/cuopt_c.h>,调用 cuOptCreateRangedProblem 创建问题,再调用 cuOptSolve 求解,最后用 cuOptGetObjectiveValue 取目标值。编码前需先确认问题类型与建模(变量、目标、约束、变量类型)。QP 的创建与求解调用见 cuOpt C 头文件(cpp/include/cuopt/linear_programming/)及仓库文档 docs/cuopt/source/cuopt-c/lp-qp-milp/。

适用场景:需要在 C/C++ 中嵌入 LP、MILP、QP 求解的工程场景,如生产计划等资源约束问题;CLI 处理 MPS 文件可用 cuopt_cli。

限制:本技能仅限 C。QP 为 beta,仅支持最小化(CUOPT_MINIMIZE),最大化需对目标系数与 Q 取负;仅支持连续变量,不支持整数 QP;凸问题要求 Q 为半正定。MPS 解析要求 NAME、ROWS、COLUMNS、RHS、(可选)BOUNDS、ENDATA 按序出现,整数标记为 'MARKER'、'INTORG'、'INTEND'。出现内存不足或速度慢时,应检查问题规模、使用稀疏矩阵并设置时间限制与 gap 容差。贡献或从源码构建请参考产品与仓库文档。