8.6.4. tupledict¶
- class tupledict¶
以元组为key的字典。用于把多个变量索引到一个数据结构中。 调用 tupledict.sum 和 tupledict.prod ,通过指定查询条件,可以快速产生线性表达式。 tupledict一般由 Model.addVars 返回。不同的是,由 Model.addConstrs 返回的tupledict则是由约束组成的。
方法
构造一个tupledict
清空tupledict对应的索引以释放内存
指定一个行向量,并查询出一个列向量,返回两者的乘积,乘积是一个表达式
从tupledict中匹配key,得到key对应的value列表
从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('*')