Initializing help system before first use

xpress.vars

xpress.vars


Purpose
Creates an indexed set or map of variables. Similar to the creation of a single variable with xpress.var, vars allows for using one or more index sets, specified as sets, lists, range objects, or any iterable object. Specifying a number k as an argument is equivalent to range(k) but can be used to create NumPy multiarrays of variables, and allows for more efficient creation. The result is otherwise a Python dictionary of variables, whose keys are tuple of indices. A collection of variables x that is created with vars can be indexed, for instance, as x[i,j] where i and j are indices in the lists provided.
Synopsis
x = xpress.vars(*indices, name="x", lb=0, ub=xpress.infinity, threshold=0, vartype=xpress.continuous)
Arguments
indices 
One or more lists, sets, ranges, or iterable objects to be combined; in alternative, one can specify one or more numbers k to signify the range 0..k-1. Using only numbers as argument will yield a NumPy multiarray with the dimensions as specified by the arguments themselves.
name 
Prefix name for each variable, to be amended with the tuple of indices.
lb 
Lower bound for all variables in the map.
ub 
Upper bound for all variables in the map.
threshold 
Threshold for all variables in the map; only used if the variables are partially integer.
vartype 
Type of all variables in the map, similar to the definition of single variables.
Example
The following creates a variable map with 6 variables whose indices vary in the set {(0,'a'),(0,'b'),(0,'c'),(1,'a'),(1,'b'),(1,'c')}:
x = xpress.vars([0,1],['a','b','c'])
The following creates a variable map with 6 variables whose indices vary in the set {(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)}:
x = xpress.vars(2,3)
The code below creates a variable map with 5 integer variables with names 'y(a)', 'y(b)', 'y(c)', 'y(d)', 'y(e)' and creates a constraint to bound their sum:
x = xpress.vars(['a','b','c','d','e'],
name='y', vartype=xpress.integer)
con1 = xpress.Sum(x) <= 4
The code below creates a variable map using the range operator in Python:
x = xpress.vars(range(5),
name='y', vartype=xpress.integer)
con1 = xpress.Sum(x) <= 4
The following example creates a Numpy multiarray of dimensions 3,7,4 with default (i.e., interface-provided) names:
x = xpress.vars(3,7,4, name="", lb=-1, ub=1)
Note that specifying anything other than a number yields a dictionary rather than a Numpy multiarray. The above mode can be used when creating large arrays of variables because specifying name="" allows for more efficient creation.
Finally, the following creates a variable indexed by the set defined right before:
S = set()
S.add('john')
S.add('cleese')
x = xpress.vars(S, name='y', vartype=xpress.integer)
Further information
All lists must contain non-repeated elements to avoid having variables with equal names. If a list in the argument is, for instance, ['a','b','a'], an error is returned.
Related topics
xpress.var

© 2001-2020 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.