8.7.4. tupledict¶
- class tupledict¶
A dictionary with tuples as keys. This data structure allows you to index multiple variables using tuple keys. You can call tupledict.sum and tupledict.prod to quickly generate linear expressions by specifying query criteria. tupledict objects are generally returned by Model.addVars . Note that the tupledict returned by Model.addConstrs is composed of constraints rather than variables.
Methods
Construct a tupledict
Clear the index to release memory
Specify a row vector and a query to produce a column vector, then return the product of the two vectors
Query the tupledict to obtain the matching value list
Query a list from tupledict, and sum them as an expression
- __init__(*args, **kwargs)¶
Construct a tupledict.
- Parameters
*args –
Array parameters.
**kwargs –
Dictionary parameters.
example:
tupledict() tupledict(another_dict) tupledict([('a', 1), (' B ', 2)]) tupledict(a = 1, B = 2)
- clean()¶
Clear the index to release memory.
Note
After the index is cleared, it will be rebuilt before a query is performed again.
- prod(coeffs, *query=[])¶
Specify a row vector and a query to produce a column vector, then return the product of the two vectors. The product is an expression.
- Parameters
coeffs – Row vector.
*query=[] –
The pattern of the key to be matched. The matching result is used as the column vector.
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)¶
Query the tupledict to obtain the matching value list.
- Parameters
*query –
The pattern of the key to be matched.
example:
li = tupledict([((1, 2), 3), ((2, 2), 4)]) li.select(1) li.select('*', 2)
Note
Calling select triggers the creation of index, but modifying the tupledict clears the index. Avoid frequent index creation.
- sum(*query=[])¶
Query a list from tupledict, and sum them as an expression.
- Parameters
*query=[] –
The pattern of the key to be matched.
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('*')