SuperAPI AI 工具集

nvidia-cuopt-numerical-optimization-api-python

编程与开发

查看项目

更新于 10-15 19:58

技能介绍

用途:通过 NVIDIA cuOpt 的 GPU 加速求解器,用 Python API 建模并求解 LP、MILP 和 QP(beta)问题。三类问题共用同一套接口:Problem、SolverSettings、solve,区别主要在目标函数形式与若干规则。

主要能力:支持连续变量与整数/二进制变量;支持线性目标与二次目标;可设置时间限制、MILP 相对间隙、控制台日志等求解参数;LP 可获取约束对偶值(影子价格)。

问题类型选择:目标为线性且变量全连续时用 LP;目标线性但含整数或二进制变量时用 MILP;目标含 xx 或 xy 项且变量连续时用 QP。LP 求解更快、最优性保证更强,能用 LP 时优先用 LP。

变量类型判断:计数类离散实体(工人、车辆、设施)用 INTEGER;是/否或开/关决策用二进制 INTEGER(lb=0、ub=1);可分数化的量(吨、升、美元、小时、比例、流量)用 CONTINUOUS。

必要用法:从 cuopt.linear_programming.problem 导入 Problem、CONTINUOUS、INTEGER、MINIMIZE、MAXIMIZE,从 cuopt.linear_programming.solver_settings 导入 SolverSettings。用 addVariable 定义变量,addConstraint 添加约束,setObjective 设置目标,problem.solve(settings) 求解。

关键限制:状态值使用 PascalCase,如 "Optimal"、"FeasibleFound",写成 "OPTIMAL" 会静默失败。QP 仅支持 MINIMIZE,不支持整数变量,Q 应为半正定以保证凸性,且处于 beta 阶段,API 可能变化。大型表达式建议用 LinearExpression(vars_list, coeffs_list, constant) 构建,避免链式相加触发递归深度限制。

适用场景:资源分配、生产计划、设施选址、投资组合方差最小化、最小二乘等。参考模型位于该技能的 assets/ 目录,可作参考但不应就地修改。具体安装命令与更多细节资料暂未提供。