Initializing help system before first use

problem.addVariables

Purpose
Creates a dictionary or NumPy array of variables and adds them to the problem. Similar to the creation of a single variable with problem.addVariable, addVariables 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 addVariables can be indexed, for instance, as x[i,j] where i and j are indices in the lists provided.
Synopsis
x = problem.addVariables(*indices, name="x", lb=0, ub=xpress.infinity, threshold=1, 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 to be added to the name of each variable; see notes for more information.
lb 
Lower bound for all variables.
ub 
Upper bound for all variables.
threshold 
Threshold for all variables; only used if the variables are partially integer.
vartype 
Type of all variables, similar to the definition of single variables.
Example
The following creates a dictionary containing 6 variables whose indices vary in the set {(0,'a'),(0,'b'),(0,'c'),(1,'a'),(1,'b'),(1,'c')}:
x = problem.addVariables([0,1],['a','b','c'])
The following creates a dictionary containing 6 variables whose indices vary in the set {(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)}:
x = problem.addVariables(2,3)
The code below creates a dictionary containing 5 integer variables with names 'y(a)', 'y(b)', 'y(c)', 'y(d)', 'y(e)' and creates a constraint to bound their sum:
x = problem.addVariables(['a','b','c','d','e'],
name='y', vartype=xpress.integer)
con1 = xpress.Sum(x) <= 4
The code below creates a dictionary whose keys range from 0 to 4:
x = problem.addVariables(range(5),
name='y', vartype=xpress.integer)
con1 = xpress.Sum(x) <= 4
The following example creates a Numpy multiarray of dimensions 3,7,4 without assigning names to the variables:
x = problem.addVariables(3,7,4, name="", lb=-1, ub=1)
Note that specifying anything other than a number yields a dictionary rather than a Numpy multiarray.
Finally, the following creates a variable indexed by the set defined right before:
S = set()
S.add('john')
S.add('cleese')
x = problem.addVariables(S, name='y', vartype=xpress.integer)
Further information
1. The name of each variable is created by concatenating its indices together. If the name argument is given as a non-empty string, this will be prepended to the name of each variable. If the name argument is given as an empty string, no names will be assigned to the variables. This option can be used to create large arrays of variables more quickly, since it will not be necessary to calculate a name for each variable.
2. 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

© 2001-2025 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.