SuperAPI AI 工具集

cuopt-lp-milp-api-python

编程与开发

查看项目

更新于 10-16 07:24

技能介绍

用途:通过 NVIDIA cuOpt 的 Python API 建模并求解线性规划(LP)与混合整数线性规划(MILP)。开始前宜先获取问题摘要(参数、约束、决策、目标),否则需向用户询问决策变量、目标与约束,并确认变量类型与接口(推荐 Python API)。

主要能力:支持连续变量与整数/二元变量;可添加约束与目标(最大化/最小化);可设置时间上限、MILP 相对间隙、控制台日志等求解参数;LP 可读取对偶值(影子价格);支持从标准 MPS 文件求解。

变量类型选择:数量可分数时用 LP(连续变量),求解更快、最优性保证更强;涉及离散实体计数、是/否或二选一决策时用 MILP。可数名词(工人、车辆、设施)用 INTEGER,度量(吨、升、美元、小时、流量)或比率用 CONTINUOUS;表述含 whole、integer、number of 时用 INTEGER。

使用方式:从 cuopt.linear_programming.problem 导入 Problem、CONTINUOUS、INTEGER、MAXIMIZE、MINIMIZE,用 addVariable、addConstraint、setObjective 建模,用 SolverSettings 设置参数后调用 problem.solve(settings)。大型表达式建议用 LinearExpression(vars_list, coeffs_list, constant) 构建,避免链式相加触发递归限制。

状态检查:状态值使用 PascalCase,如 Optimal、FeasibleFound,而非全大写;LP 状态还包括 PrimalInfeasible、DualInfeasible、TimeLimit 等,MILP 还包括 Infeasible、Unbounded 等。

常见模式:二元选择(sum(items)==k)、Big-M 关联、if-then 必须同时生产、分段线性(SOS2)。

限制与注意:整数变量若误设为 CONTINUOUS 会出现分数值;不可行多因约束冲突,无界多因缺少边界;求解慢可设时间上限或放宽间隙。参考模型位于本技能的 assets/ 目录,仅作参考,不要就地修改;可用 ls assets/ 列出。资料未提供安装命令、收费与平台细节。