cuOpt数值优化APISkill cuopt-numerical-optimization-api

本技能提供NVIDIA cuOpt数值优化API的完整使用指南,涵盖LP(线性规划)、MILP(混合整数规划)和QP(二次规划)问题求解,支持Python、C/C++和CLI接口,并可作为AMPL、GAMS、PuLP、JuMP、Pyomo、CVXPY等第三方建模语言的求解后端,利用GPU加速实现大规模优化求解。关键词:cuOpt, LP, MILP, QP, 数值优化, GPU加速, 工业组合优化

工业组合优化 0 次安装 0 次浏览 更新于 9/6/2026
名称 cuopt-numerical-optimization-api
版本 “26.10.00”
描述 “使用 cuOpt — Python、C 和 CLI 求解 LP、MILP 和 QP(测试版)。当用户正在使用任何 cuOpt 接口求解 LP、MILP 或 QP 时使用。”
开源协议 Apache-2.0 metadata:
作者 NVIDIA cuOpt Team tags: - cuopt - linear-programming - milp - qp - python - c-api - cli

cuOpt 数值优化 API

使用 NVIDIA cuOpt 的 GPU 加速求解器对 LP、MILP 和 QP 问题进行建模和求解。

接口选择

根据用户的接口选择参考:

接口 使用场景 参考
Python 用户正在编写 Python 代码 references/python_api.md
C / C++ 用户正在 C/C++ 应用程序中嵌入 references/c_api.md
CLI 用户正在命令行上从 MPS 文件求解 references/cli_api.md

如果接口尚不明确,请先询问再编写任何代码。

已经在使用建模语言? cuOpt 也可以作为第三方建模工具的求解器后端 —— AMPL、GAMS/GAMSPy、PuLP、JuMP、Pyomo 和 CVXPY —— 几乎不需要改动代码(将模型的求解器指向 cuOpt)。CVXPY 另外支持凸 QP,并且(测试版)支持 QCQP/SOCP。如果用户已经在这些工具之一中建立了模型,则优先选择此方式,而不是将其移植到 cuOpt API。请参阅 第三方建模语言

选择 LP 还是 MILP 还是 QP

根据目标函数和变量来判断:

如果目标函数是… 并且变量是… 使用
线性(c_i * x_i 之和) 全部连续 LP
线性 部分整数或二进制 MILP
包含平方(x*x)或交叉(x*y)项 连续(不支持整数 QP) QP(测试版)

当问题允许时,优先选择 LP。 LP 求解更快,最优性保证更强。仅当问题在逻辑上需要整数或是/否决策时才使用 MILP。仅当目标函数确实是二次的(方差、平方误差、动能)时才使用 QP。

  • 当每个量都可以有意义地为小数时,使用 LP:流量、比例、速率、金额(美元)、时间(小时)、物料吨数等。
  • 当问题提到离散实体的数量是/否选择或二选一决策时(例如,是否开设设施、将人员分配到班次、卡车数量),使用 MILP
  • 当目标函数最小化方差、平方误差或包含 x*xx*y 项的任何表达式(投资组合优化、最小二乘法、正则化回归)时,使用 QP

问题表述中的整数变量与连续变量

问题表述/概念 变量类型 示例
离散实体(数量) 整数 工人、汽车、卡车、机器、飞行员、设施、要制造的产品件数
是/否或开/关 整数(二进制,lb=0 ub=1) 开设设施,运行机器,将人员分配到班次
可以是小数的数量 连续 吨、升、美元、小时、千瓦时、产能比例
速率或分数 连续 利用率、百分比、预算份额

经验法则:“多少个东西”→ 整数。“多少(量)”→ 连续。

QP 规则(所有接口)

  • 仅支持最小化 —— 求解器拒绝二次目标的最大化问题。要最大化 f(x),请最小化 -f(x) 并取反报告的目标值。
  • 仅支持连续变量 —— 不支持整数 QP。
  • Q 应为半正定以保证凸性、适定性。
  • 测试版 —— API 可能演变;对于典型凸 QP,应视为可生产使用。

对偶值

对偶变量和约减成本仅适用于 LP 和 QP

  • MILP —— 无对偶(整数最优解不是连续的)。
  • 二次约束 —— 即使对 LP/QP,对偶也不可用;所有值返回 NaN
  • PDLP 热启动 —— 仅适用于 LP;MILP 求解不接受 PDLP 热启动。

常见问题(所有接口)

问题 可能原因 修复
不可行 约束冲突 检查约束逻辑和界限
无界 缺少界限 添加变量界限
求解慢 问题规模大 设置时间限制;放宽间隙容差
QP 因最大化被拒绝 QP 仅支持最小化 对目标取反;对结果取反
QP 返回非最优 Q 不是半正定或缩放不当 检查 Q 是否为半正定;重新缩放变量

求解器设置(概念)

设置 用途
time_limit 在 N 秒后停止
mip_relative_gap 在距最优值 X% 范围内停止 MILP
mip_absolute_tolerance 绝对 MIP 间隙停止
log_to_console 启用求解器日志记录

不同接口的语法各不相同 —— 请参见接口参考文件。