python+gurobi建模数据结构

建模中经常会对不同下标的数据进行组合,为了提高模型求解效率,gurobi封装了更高级的数据结构,即multidict、tuplelist、tupledict。还有一种办法是循环,但显然会降低效率。

1.tuplelist

是list的扩展,添加/删除元素与list一致。

除此以外,还有select快速筛选功能,这样我们可以筛选下标一致的。select类似于SQL中的select-where。

使用 tuplelist() 不能忘记 from gurobipy import *

import gurobipy as grb

Cities= [('A','B'), ('A','C'), ('B','C'),('B','D'),('C','D')]
Routes = grb.tuplelist(Cities)

print(Routes.select('A','*'))
#('A','B'), ('A','C')

Result=[]
for i,j in Cities:
if i=='A':
Result.append((i,j))
print(Result)

2.tupledict

Gurobi tupledict – Python Dictionary 扩展
键值为 tuple (元组),可以使用 select, sum, prod 函数,用于变量和约束。

如:当系数矩阵的键和变量的一致时,可以快速匹配,直接采用prod方法建立线性表达式。

import gurobipy as grb

# 创建一个系数矩阵,用tuplelist格式存储
c1 = [(1, 1), (1, 2), (1, 3)]
coeff = grb.tupledict(c1)
coeff[(1, 1)] = 1
coeff[(1, 2)] = 0.3
coeff[(1, 3)] = 0.4

print(vars.prod(coeff, 1, '*'))

# 输出
# <gurobi.LinExpr: d[1,1] + 0.3 d[1,2] + 0.4 d[1,3]>

3.multidict

Multidict() 创建 tuplelist 和 tupledict 的便捷方法
cities, supply, demand = multidict({
'A': [100, 20],
'B': [150, 50],
'C': [20, 300],
'D': [10, 200]})
返回cities (tuplelist)、 supply (tupledic) 和 demand (tupledict)
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值