QuadraticProgram
QuadraticProgram(name='')
Quadratically Constrained Quadratic Program representation.
This representation supports inequality and equality constraints, as well as continuous, binary, and integer variables.
Parameters
name (str
) – The name of the quadratic program.
Attributes
linear_constraints
List[qiskit.optimization.problems.linear_constraint.LinearConstraint]
Returns the list of linear constraints of the quadratic program.
Return type
List
[LinearConstraint
]
Returns
List of linear constraints.
linear_constraints_index
Dict[str, int]
Returns the dictionary that maps the name of a linear constraint to its index.
Return type
Dict
[str
, int
]
Returns
The linear constraint index dictionary.
name
str
Returns the name of the quadratic program.
Return type
str
Returns
The name of the quadratic program.
objective
qiskit.optimization.problems.quadratic_objective.QuadraticObjective
Returns the quadratic objective.
Return type
Returns
The quadratic objective.
quadratic_constraints
List[qiskit.optimization.problems.quadratic_constraint.QuadraticConstraint]
Returns the list of quadratic constraints of the quadratic program.
Return type
List
[QuadraticConstraint
]
Returns
List of quadratic constraints.
quadratic_constraints_index
Dict[str, int]
Returns the dictionary that maps the name of a quadratic constraint to its index.
Return type
Dict
[str
, int
]
Returns
The quadratic constraint index dictionary.
status
qiskit.optimization.problems.quadratic_program.QuadraticProgramStatus
Status of the quadratic program. It can be infeasible due to variable substitution.
Return type
QuadraticProgramStatus
Returns
The status of the quadratic program
variables
List[qiskit.optimization.problems.variable.Variable]
Returns the list of variables of the quadratic program.
Return type
List
[Variable
]
Returns
List of variables.
variables_index
Dict[str, int]
Returns the dictionary that maps the name of a variable to its index.
Return type
Dict
[str
, int
]
Returns
The variable index dictionary.
Methods
binary_var
QuadraticProgram.binary_var(name=None)
Adds a binary variable to the quadratic program.
Parameters
name (Optional
[str
]) – The name of the variable.
Return type
Returns
The added variable.
Raises
QiskitOptimizationError – if the variable name is already occupied.
clear
QuadraticProgram.clear()
Clears the quadratic program, i.e., deletes all variables, constraints, the objective function as well as the name.
Return type
None
continuous_var
QuadraticProgram.continuous_var(lowerbound=0, upperbound=1e+20, name=None)
Adds a continuous variable to the quadratic program.
Parameters
- lowerbound (
Union
[float
,int
]) – The lowerbound of the variable. - upperbound (
Union
[float
,int
]) – The upperbound of the variable. - name (
Optional
[str
]) – The name of the variable.
Return type
Returns
The added variable.
Raises
QiskitOptimizationError – if the variable name is already occupied.
export_as_lp_string
QuadraticProgram.export_as_lp_string()
Returns the quadratic program as a string of LP format.
Return type
str
Returns
A string representing the quadratic program.
from_docplex
QuadraticProgram.from_docplex(model)
Loads this quadratic program from a docplex model.
Note that this supports only basic functions of docplex as follows: - quadratic objective function - linear / quadratic constraints - binary / integer / continuous variables
Parameters
model (Model
) – The docplex model to be loaded.
Raises
QiskitOptimizationError – if the model contains unsupported elements.
Return type
None
get_linear_constraint
QuadraticProgram.get_linear_constraint(i)
Returns a linear constraint for a given name or index.
Parameters
i (Union
[int
, str
]) – the index or name of the constraint.
Return type
Returns
The corresponding constraint.
Raises
- IndexError – if the index is out of the list size
- KeyError – if the name does not exist
get_num_binary_vars
QuadraticProgram.get_num_binary_vars()
Returns the total number of binary variables.
Return type
int
Returns
The total number of binary variables.
get_num_continuous_vars
QuadraticProgram.get_num_continuous_vars()
Returns the total number of continuous variables.
Return type
int
Returns
The total number of continuous variables.
get_num_integer_vars
QuadraticProgram.get_num_integer_vars()
Returns the total number of integer variables.
Return type
int
Returns
The total number of integer variables.
get_num_linear_constraints
QuadraticProgram.get_num_linear_constraints()
Returns the number of linear constraints.
Return type
int
Returns
The number of linear constraints.
get_num_quadratic_constraints
QuadraticProgram.get_num_quadratic_constraints()
Returns the number of quadratic constraints.
Return type
int
Returns
The number of quadratic constraints.
get_num_vars
QuadraticProgram.get_num_vars(vartype=None)
Returns the total number of variables or the number of variables of the specified type.
Parameters
vartype (Optional
[VarType
]) – The type to be filtered on. All variables are counted if None.
Return type
int
Returns
The total number of variables.
get_quadratic_constraint
QuadraticProgram.get_quadratic_constraint(i)
Returns a quadratic constraint for a given name or index.
Parameters
i (Union
[int
, str
]) – the index or name of the constraint.
Return type
Returns
The corresponding constraint.
Raises
- IndexError – if the index is out of the list size
- KeyError – if the name does not exist
get_variable
QuadraticProgram.get_variable(i)
Returns a variable for a given name or index.
Parameters
i (Union
[int
, str
]) – the index or name of the variable.
Return type
Returns
The corresponding variable.
integer_var
QuadraticProgram.integer_var(lowerbound=0, upperbound=1e+20, name=None)
Adds an integer variable to the quadratic program.
Parameters
- lowerbound (
Union
[float
,int
]) – The lowerbound of the variable. - upperbound (
Union
[float
,int
]) – The upperbound of the variable. - name (
Optional
[str
]) – The name of the variable.
Return type
Returns
The added variable.
Raises
QiskitOptimizationError – if the variable name is already occupied.
linear_constraint
QuadraticProgram.linear_constraint(linear=None, sense='<=', rhs=0.0, name=None)
Adds a linear equality constraint to the quadratic program of the form:
linear * x sense rhs.
Parameters
- linear (
Union
[ndarray
,spmatrix
,List
[float
],Dict
[Union
[int
,str
],float
],None
]) – The linear coefficients of the left-hand-side of the constraint. - sense (
Union
[str
,ConstraintSense
]) – The sense of the constraint, - ‘==’, ‘=’, ‘E’, and ‘EQ’ denote ‘equal to’. - ‘>=’, ‘>’, ‘G’, and ‘GE’ denote ‘greater-than-or-equal-to’. - ‘<=’, ‘<’, ‘L’, and ‘LE’ denote ‘less-than-or-equal-to’. - rhs (
float
) – The right hand side of the constraint. - name (
Optional
[str
]) – The name of the constraint.
Return type
Returns
The added constraint.
Raises
QiskitOptimizationError – if the constraint name already exists or the sense is not valid.
maximize
QuadraticProgram.maximize(constant=0.0, linear=None, quadratic=None)
Sets a quadratic objective to be maximized.
Parameters
- constant (
float
) – the constant offset of the objective. - linear (
Union
[ndarray
,spmatrix
,List
[float
],Dict
[Union
[int
,str
],float
],None
]) – the coefficients of the linear part of the objective. - quadratic (
Union
[ndarray
,spmatrix
,List
[List
[float
]],Dict
[Tuple
[Union
[int
,str
],Union
[int
,str
]],float
],None
]) – the coefficients of the quadratic part of the objective.
Return type
None
Returns
The created quadratic objective.
minimize
QuadraticProgram.minimize(constant=0.0, linear=None, quadratic=None)
Sets a quadratic objective to be minimized.
Parameters
- constant (
float
) – the constant offset of the objective. - linear (
Union
[ndarray
,spmatrix
,List
[float
],Dict
[Union
[int
,str
],float
],None
]) – the coefficients of the linear part of the objective. - quadratic (
Union
[ndarray
,spmatrix
,List
[List
[float
]],Dict
[Tuple
[Union
[int
,str
],Union
[int
,str
]],float
],None
]) – the coefficients of the quadratic part of the objective.
Return type
None
Returns
The created quadratic objective.
pprint_as_string
QuadraticProgram.pprint_as_string()
Returns the quadratic program as a string in Docplex’s pretty print format.
Return type
str
Returns
A string representing the quadratic program.
prettyprint
QuadraticProgram.prettyprint(out=None)
Pretty prints the quadratic program to a given output stream (None = default).
Parameters
out (Optional
[str
]) – The output stream or file name to print to. if you specify a file name, the output file name is has ‘.mod’ as suffix.
Return type
None
quadratic_constraint
QuadraticProgram.quadratic_constraint(linear=None, quadratic=None, sense='<=', rhs=0.0, name=None)
Adds a quadratic equality constraint to the quadratic program of the form:
x * Q * x <= rhs.
Parameters
- linear (
Union
[ndarray
,spmatrix
,List
[float
],Dict
[Union
[int
,str
],float
],None
]) – The linear coefficients of the constraint. - quadratic (
Union
[ndarray
,spmatrix
,List
[List
[float
]],Dict
[Tuple
[Union
[int
,str
],Union
[int
,str
]],float
],None
]) – The quadratic coefficients of the constraint. - sense (
Union
[str
,ConstraintSense
]) – The sense of the constraint, - ‘==’, ‘=’, ‘E’, and ‘EQ’ denote ‘equal to’. - ‘>=’, ‘>’, ‘G’, and ‘GE’ denote ‘greater-than-or-equal-to’. - ‘<=’, ‘<’, ‘L’, and ‘LE’ denote ‘less-than-or-equal-to’. - rhs (
float
) – The right hand side of the constraint. - name (
Optional
[str
]) – The name of the constraint.
Return type
Returns
The added constraint.
Raises
QiskitOptimizationError – if the constraint name already exists.
read_from_lp_file
QuadraticProgram.read_from_lp_file(filename)
Loads the quadratic program from a LP file.
Parameters
filename (str
) – The filename of the file to be loaded.
Raises
- FileNotFoundError – If the file does not exist.
- RuntimeError – If CPLEX is not installed.
This method requires CPLEX to be installed and present in PYTHONPATH
.
Return type
None
remove_linear_constraint
QuadraticProgram.remove_linear_constraint(i)
Remove a linear constraint
Parameters
i (Union
[str
, int
]) – an index or a name of a linear constraint
Raises
- KeyError – if name does not exist
- IndexError – if index is out of range
Return type
None
remove_quadratic_constraint
QuadraticProgram.remove_quadratic_constraint(i)
Remove a quadratic constraint
Parameters
i (Union
[str
, int
]) – an index or a name of a quadratic constraint
Raises
- KeyError – if name does not exist
- IndexError – if index is out of range
Return type
None
substitute_variables
QuadraticProgram.substitute_variables(constants=None, variables=None)
Substitutes variables with constants or other variables.
Parameters
- constants (
Optional
[Dict
[Union
[int
,str
],float
]]) – replace variable by constant e.g., {‘x’: 2} means ‘x’ is substituted with 2 - variables (
Optional
[Dict
[Union
[str
,int
],Tuple
[Union
[str
,int
],float
]]]) – replace variables by weighted other variable need to copy everything using name reference to make sure that indices are matched correctly. The lower and upper bounds are updated accordingly. e.g., {‘x’: (‘y’, 2)} means ‘x’ is substituted with ‘y’ * 2
Return type
Returns
An optimization problem by substituting variables with constants or other variables. If the substitution is valid, QuadraticProgram.status is still QuadraticProgram.Status.VALIAD. Otherwise, it gets QuadraticProgram.Status.INFEASIBLE.
Raises
QiskitOptimizationError – if the substitution is invalid as follows. - Same variable is substituted multiple times. - Coefficient of variable substitution is zero.
to_docplex
QuadraticProgram.to_docplex()
Returns a docplex model corresponding to this quadratic program.
Return type
Model
Returns
The docplex model corresponding to this quadratic program.
Raises
QiskitOptimizationError – if non-supported elements (should never happen).
write_to_lp_file
QuadraticProgram.write_to_lp_file(filename)
Writes the quadratic program to an LP file.
Parameters
filename (str
) – The filename of the file the model is written to. If filename is a directory, file name ‘my_problem.lp’ is appended. If filename does not end with ‘.lp’, suffix ‘.lp’ is appended.
Raises
- OSError – If this cannot open a file.
- DOcplexException – If filename is an empty string
Return type
None