Gurobipy基本使用说明

本文以求解整数规划为案例讲解gurobi基本使用逻辑,用作备忘录,也可帮助初学者理解。
有误请于评论区指出,谢谢大家!

整体思路:

  1. 导入包
  2. 定义一个模型/问题
  3. 定义模型变量
  4. 添加模型约束/边界
  5. 添加模型目标函数
  6. 求解输出

导入包:

import gurobipy as grb

定义一个模型:

也就是定义要求解的问题

model = grb.Model()

model 是定义的问题/求解的模型

在模型中添加变量:

x1 = model.addVar(vtype=grb.GRB.INTEGER, name="x1")
x2 = model.addVar(vtype=grb.GRB.INTEGER, name="x2")

vtype 是变量类型
grb.GRB.INTEGER 是整型
name 是变量名称

在模型中添加数学约束:

model.addConstr(2*x1+3*x2 <= 14)
model.addConstr(4*x1+2*x2 <= 18)
model.addConstr(x1 >= 0)
model.addConstr(x2 >= 0)

model.addConstr()括号中就是数学约束,对不等号方向没有限制

在模型中添加目标函数:

model.setObjective(3*x1+2*x2, sense=grb.GRB.MAXIMIZE)

sense=grb.GRB>MAXIMIZE是指要找3*x1+2*x2的最大值

求解输出:

model.setParam('outPutFlag', 0)# 不显示求解日志
model.optimize()
print("目标函数:".model.objVal)
for i in model.getVars():
	print("参数", i.varName, "="i.x)

 分别print目标函数的结果和x1、x2的取值

完整代码:

import gurobipy as grb

model = grb.Model()

x1 = model.addVar(vtype=grb.GRB.INTEGER, name="x1")
x2 = model.addVar(vtype=grb.GRB.INTEGER, name="x2")

model.addConstr(2*x1+3*x2 <= 14)
model.addConstr(4*x1+2*x2 <= 18)
model.addConstr(x1 >= 0)
model.addConstr(x2 >= 0)

model.setObjective(3*x1+2*x2, sense=grb.GRB>MAXIMIZE)

model.setParam('outPutFlag', 0)# 不显示求解日志
model.optimize()
print("目标函数:", model.objVal)

for i in model.getVars():
	print("参数", i.varName, "=", i.x)

案例来源:
【只需要十分钟快速上手gurobi,解决整数规划问题】 https://www.bilibili.com/video/BV1Yc411G7xH/?share_source=copy_web&vd_source=8769f8c9b9f989e262ae8fbd5c03d660

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢慢同学Funny_On

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值