Gurobi求解二次规划(QP)问题的基础用法速查表:
1. 导入和安装:
pip install gurobipy
import gurobipy as gp
from gurobipy import GRB
2. 模型初始化
model = gp.Model(name)
创建新模型,name
为模型名称。model.dispose()
释放模型资源(内存管理)。
3. 变量定义
addVar(lb, ub, vtype, name)
添加单个变量:lb/ub
: 变量上下界(默认-∞
/+∞
)。vtype
: 变量类型(GRB.CONTINUOUS
/GRB.INTEGER
/GRB.BINARY
)。name
: 变量名称。
addVars(count, lb, ub, vtype, name_prefix)
批量添加多个变量(返回VarList
对象)。model.update()
强制刷新模型变量和约束(显式应用更改)。
4. 目标函数
setObjective(expr, sense)
设置目标函数:expr
: 目标表达式(支持线性、二次项)。sense
: 优化方向(GRB.MINIMIZE
或GRB.MAXIMIZE
)。
setObjectiveN(expr, index, priority, weight)
多目标优化中设置第index
个目标(优先级priority
,权重weight
)。
5. 约束条件
addConstr(lhs, sense, rhs, name)
添加单个约束:lhs
≤/=/≥rhs
(sense
为GRB.LESS_EQUAL
/GRB.EQUAL
/GRB.GREATER_EQUAL
)。示例:
model.addConstr(x + 2*y <= 10, "c1")
addConstrs(generator)
批量添加约束(通过生成器表达式)。
示例:model.addConstrs(x[i] <= 5 for i in range(3))
addQConstr(quad_expr, sense, rhs, name)
添加二次约束(非凸问题需设置NonConvex=2
)。
6. 求解控制
optimize()
启动求解过程。optimize(callback)
带回调函数的求解(自定义中断逻辑)。reset()
重置模型状态(清除求解结果)。terminate()
强制终止求解。
7. 参数设置
model.Params.参数名 = 值
设置求解器参数(常用参数):TimeLimit
: 最大运行时间(秒)。OutputFlag
: 控制日志输出(0
关闭,1
开启)。NonConvex
: 处理非凸 QP(2
允许非凸)。Threads
: 并行线程数。
8. 结果获取
model.status
获取求解状态(GRB.OPTIMAL
/GRB.INFEASIBLE
/GRB.UNBOUNDED
等)。var.X
获取变量值(如x.X
)。model.ObjVal
获取目标函数值。model.getVars()
返回所有变量的列表。model.getConstrs()
返回所有约束的列表。