超强的优化求解器 - Gurobi 。这玩意儿专门用来解决线性规划、整数规划这些让人头疼的数学问题,简直是数学建模的神器。
1.安装配置
装这个可费劲了,光靠 pip install gurobipy 不行。得先去官网下个 Gurobi Optimizer,还得搞个许可证。学生党有福了,用教育邮箱就能申请免费的学术许可。
# 导入包瞧瞧是否装好了
import gurobipy as gp
from gurobipy import GRB
# 整个模型对象
m = gp.Model(“first_model”)
2.建模基础
建模就像搭积木,一步步来:
# 加个变量
x = m.addVar(name=“x”, vtype=GRB.CONTINUOUS)
y = m.addVar(name=“y”, vtype=GRB.INTEGER)
# 设置目标函数
m.setObjective(x + 2*y, GRB.MAXIMIZE)
# 加约束条件
m.addConstr(x + y <= 10)
m.addConstr(x >= 0)
温馨提示:变量类型特别重要!CONTINUOUS 是连续变量,INTEGER 是整数变量,BINARY 是 0-1 变量。选错了类型,解出来的结果可就南辕北辙了。
3.求解问题
写好模型就能解啦:
# 求解
m.optimize()
# 看看结果
if m.status == GRB.OPTIMAL:
print(f“最优值: {m.objVal}”)
print(f“x = {x.x}”)
print(f“y = {y.x}”)
4.实用小技巧
优化模型不是说写就能写的,有几个坑得注意:
数值太大容易翻车,尽量做归一化
约束条件别写太死,给点容忍度
解不出来时看看 m.computeIIS(),找找哪儿出问题了
# 设置求解时间上限
m.setParam('TimeLimit', 300)
# 设置求解精度
m.setParam('MIPGap', 0.01)
说实话,Gurobi 是真好用,就是价格有点小贵。不过对于处理大规模优化问题来说,这钱花得值。写模型时多想想,别上来就堆约束条件,思路清晰了模型才能又快又好地解出来。
赶紧动手试试,保准你会爱上这个解优化问题的利器!
上一条:Gurobi8性能基准
下一条:测试工具Postman