8.7.4. tupledict

class tupledict

以元组为key的字典。用于把多个变量索引到一个数据结构中。 调用 tupledict.sumtupledict.prod ,通过指定查询条件,可以快速产生线性表达式。 tupledict一般由 Model.addVars 返回。不同的是,由 Model.addConstrs 返回的tupledict则是由约束组成的。

方法

__init__()

构造一个tupledict

clean()

清空tupledict对应的索引以释放内存

prod()

指定一个行向量,并查询出一个列向量,返回两者的乘积,乘积是一个表达式

select()

从tupledict中匹配key,得到key对应的value列表

sum()

从tupledict中匹配出一些term,将他们累加返回一个表达式

__init__(*args, **kwargs)

构造一个tupledict。

Parameters:
  • *args

    数组参数

  • **kwargs

    字典参数

example:

tupledict()
tupledict(another_dict)
tupledict([('a', 1), ('b', 2)])
tupledict(a = 1, b = 2)
clean()

清空tupledict对应的索引以释放内存

Note

清空索引后,再次查询时会重建索引

prod(coeffs, *query=[])

指定一个行向量,并查询出一个列向量,返回两者的乘积,乘积是一个表达式

Parameters:
  • coeffs – 行向量

  • *query=[]

    要匹配的key的模式,匹配出的结果作为列向量

example:

m = Model()
x = m.addVars([(1,1), (1,2), (1,3)])
coeff = dict([((1,1), 1), ((1,2), 2), ((1,3), 3)])
expr = x.prod(coeff)
expr = x.prod(coeff, '*', 3)
select(*query)

从tupledict中匹配key,得到key对应的value列表

Parameters:

*query

要匹配的key的模式

example:

li = tupledict([((1, 2), 3), ((2, 2), 4)])
li.select(1)
li.select('*', 2)

Note

调用select会触发创建索引,但修改tupledict会清空索引。要避免频繁的索引创建。

sum(*query=[])

从tupledict中匹配出一些term,将他们累加返回一个表达式

Parameters:

*query=[]

要匹配的key的模式

example:

m = Model()
x = m.addVar()
y = m.addVar()
mapping1 = ((1, 2), 1 * x + 2 * y)
mapping2 = ((2, 1), 2 * x + 1 * y)
td = tupledict([mapping1, mapping2])
linExpr = td.sum('*')