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, '*'))

# 输出
# 

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)
 

你可能感兴趣的:(学习思考总结,备忘边角料,最优化算法)