Gurobi求解二次规划(QP)问题的基础用法速查表:
1. 导入和安装:
pip install gurobipyimport gurobipy as gpfrom 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()
返回所有约束的列表。