Skip to main contentIBM Quantum Documentation
You are viewing the API reference for an old version of Qiskit SDK. Switch to latest version

QuadraticProgram

QuadraticProgram(name='') GitHub(opens in a new tab)

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

QuadraticObjective

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

Variable

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

Variable

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

LinearConstraint

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

QuadraticConstraint

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

Variable

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

Variable

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

LinearConstraint

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

QuadraticConstraint

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.
Note

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

QuadraticProgram

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

Was this page helpful?