qiskit-documentation/docs/api/qiskit/0.29/qiskit.optimization.problem...

970 lines
34 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: QuadraticProgram (v0.29)
description: API reference for qiskit.optimization.problems.QuadraticProgram in qiskit v0.29
in_page_toc_min_heading_level: 1
python_api_type: class
python_api_name: qiskit.optimization.problems.QuadraticProgram
---
# QuadraticProgram
<Class id="qiskit.optimization.problems.QuadraticProgram" isDedicatedPage={true} github="https://github.com/qiskit-community/qiskit-aqua/tree/stable/0.9/qiskit/optimization/problems/quadratic_program.py" signature="QuadraticProgram(name='')" modifiers="class">
Bases: `object`
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.
## Methods
<span id="qiskit-optimization-problems-quadraticprogram-binary-var" />
### binary\_var
<Function id="qiskit.optimization.problems.QuadraticProgram.binary_var" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already occupied.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-binary-var-dict" />
### binary\_var\_dict
<Function id="qiskit.optimization.problems.QuadraticProgram.binary_var_dict" signature="QuadraticProgram.binary_var_dict(keys, name=None, key_format='{}')">
Uses var\_dict to construct a dictionary of binary variables
**Parameters**
* **name** (`Optional`\[`str`]) The name(s) of the variable(s).
* **key\_format** (`str`) The format used to name/index the variable(s).
* **keys** (`Union`\[`int`, `Sequence`]) If keys: int, it is interpreted as the number of variables to construct. Otherwise, the elements of the sequence are converted to strings via str and substituted into key\_format.
**Return type**
`Dict`\[`str`, `Variable`]
**Returns**
A dictionary mapping the variable names to variable instances.
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already taken.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if less than one variable instantiation is attempted.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if key\_format has more than one substitution or a nested substitution.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-binary-var-list" />
### binary\_var\_list
<Function id="qiskit.optimization.problems.QuadraticProgram.binary_var_list" signature="QuadraticProgram.binary_var_list(keys, name=None, key_format='{}')">
Uses var\_list to construct a list of binary variables
**Parameters**
* **name** (`Optional`\[`str`]) The name(s) of the variable(s).
* **key\_format** (`str`) The format used to name/index the variable(s).
* **keys** (`Union`\[`int`, `Sequence`]) If keys: int, it is interpreted as the number of variables to construct. Otherwise, the elements of the sequence are converted to strings via str and substituted into key\_format.
**Return type**
`List`\[`Variable`]
**Returns**
A list of variable instances.
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already taken.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if less than one variable instantiation is attempted.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if key\_format has more than one substitution or a nested substitution.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-clear" />
### clear
<Function id="qiskit.optimization.problems.QuadraticProgram.clear" signature="QuadraticProgram.clear()">
Clears the quadratic program, i.e., deletes all variables, constraints, the objective function as well as the name.
**Return type**
`None`
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-continuous-var" />
### continuous\_var
<Function id="qiskit.optimization.problems.QuadraticProgram.continuous_var" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already occupied.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-continuous-var-dict" />
### continuous\_var\_dict
<Function id="qiskit.optimization.problems.QuadraticProgram.continuous_var_dict" signature="QuadraticProgram.continuous_var_dict(keys, lowerbound=0, upperbound=1e+20, name=None, key_format='{}')">
Uses var\_dict to construct a dictionary of continuous variables
**Parameters**
* **lowerbound** (`Union`\[`float`, `int`]) The lower bound of the variable(s).
* **upperbound** (`Union`\[`float`, `int`]) The upper bound of the variable(s).
* **name** (`Optional`\[`str`]) The name(s) of the variable(s).
* **key\_format** (`str`) The format used to name/index the variable(s).
* **keys** (`Union`\[`int`, `Sequence`]) If keys: int, it is interpreted as the number of variables to construct. Otherwise, the elements of the sequence are converted to strings via str and substituted into key\_format.
**Return type**
`Dict`\[`str`, `Variable`]
**Returns**
A dictionary mapping the variable names to variable instances.
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already taken.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if less than one variable instantiation is attempted.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if key\_format has more than one substitution or a nested substitution.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-continuous-var-list" />
### continuous\_var\_list
<Function id="qiskit.optimization.problems.QuadraticProgram.continuous_var_list" signature="QuadraticProgram.continuous_var_list(keys, lowerbound=0, upperbound=1e+20, name=None, key_format='{}')">
Uses var\_list to construct a list of continuous variables
**Parameters**
* **lowerbound** (`Union`\[`float`, `int`]) The lower bound of the variable(s).
* **upperbound** (`Union`\[`float`, `int`]) The upper bound of the variable(s).
* **name** (`Optional`\[`str`]) The name(s) of the variable(s).
* **key\_format** (`str`) The format used to name/index the variable(s).
* **keys** (`Union`\[`int`, `Sequence`]) If keys: int, it is interpreted as the number of variables to construct. Otherwise, the elements of the sequence are converted to strings via str and substituted into key\_format.
**Return type**
`List`\[`Variable`]
**Returns**
A list of variable instances.
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already taken.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if less than one variable instantiation is attempted.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if key\_format has more than one substitution or a nested substitution.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-export-as-lp-string" />
### export\_as\_lp\_string
<Function id="qiskit.optimization.problems.QuadraticProgram.export_as_lp_string" signature="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.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-from-docplex" />
### from\_docplex
<Function id="qiskit.optimization.problems.QuadraticProgram.from_docplex" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the model contains unsupported elements.
**Return type**
`None`
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-from-ising" />
### from\_ising
<Function id="qiskit.optimization.problems.QuadraticProgram.from_ising" signature="QuadraticProgram.from_ising(qubit_op, offset=0.0, linear=False)">
Create a quadratic program from a qubit operator and a shift value.
**Parameters**
* **qubit\_op** (`Union`\[`OperatorBase`, `WeightedPauliOperator`]) The qubit operator of the problem.
* **offset** (`float`) The constant value in the Ising Hamiltonian.
* **linear** (`bool`) If linear is True, $x^2$ is treated as a linear term since $x^2 = x$ for $x \in \{0,1\}$. Else, $x^2$ is treat as a quadratic term. The default value is False.
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") If there are Pauli Xs in any Pauli term
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") If there are more than 2 Pauli Zs in any Pauli term
* **NotImplementedError** If the input operator is a ListOp
**Return type**
`None`
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-feasibility-info" />
### get\_feasibility\_info
<Function id="qiskit.optimization.problems.QuadraticProgram.get_feasibility_info" signature="QuadraticProgram.get_feasibility_info(x)">
Returns whether a solution is feasible or not along with the violations. :type x: `Union`\[`List`\[`float`], `ndarray`] :param x: a solution value, such as returned in an optimizer result.
**Returns**
Whether the solution provided is feasible or not. List\[Variable]: List of variables which are violated. List\[Constraint]: List of constraints which are violated.
**Return type**
feasible
**Raises**
[**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") If the input x is not same len as total vars
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-linear-constraint" />
### get\_linear\_constraint
<Function id="qiskit.optimization.problems.QuadraticProgram.get_linear_constraint" signature="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
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-num-binary-vars" />
### get\_num\_binary\_vars
<Function id="qiskit.optimization.problems.QuadraticProgram.get_num_binary_vars" signature="QuadraticProgram.get_num_binary_vars()">
Returns the total number of binary variables.
**Return type**
`int`
**Returns**
The total number of binary variables.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-num-continuous-vars" />
### get\_num\_continuous\_vars
<Function id="qiskit.optimization.problems.QuadraticProgram.get_num_continuous_vars" signature="QuadraticProgram.get_num_continuous_vars()">
Returns the total number of continuous variables.
**Return type**
`int`
**Returns**
The total number of continuous variables.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-num-integer-vars" />
### get\_num\_integer\_vars
<Function id="qiskit.optimization.problems.QuadraticProgram.get_num_integer_vars" signature="QuadraticProgram.get_num_integer_vars()">
Returns the total number of integer variables.
**Return type**
`int`
**Returns**
The total number of integer variables.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-num-linear-constraints" />
### get\_num\_linear\_constraints
<Function id="qiskit.optimization.problems.QuadraticProgram.get_num_linear_constraints" signature="QuadraticProgram.get_num_linear_constraints()">
Returns the number of linear constraints.
**Return type**
`int`
**Returns**
The number of linear constraints.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-num-quadratic-constraints" />
### get\_num\_quadratic\_constraints
<Function id="qiskit.optimization.problems.QuadraticProgram.get_num_quadratic_constraints" signature="QuadraticProgram.get_num_quadratic_constraints()">
Returns the number of quadratic constraints.
**Return type**
`int`
**Returns**
The number of quadratic constraints.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-num-vars" />
### get\_num\_vars
<Function id="qiskit.optimization.problems.QuadraticProgram.get_num_vars" signature="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.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-quadratic-constraint" />
### get\_quadratic\_constraint
<Function id="qiskit.optimization.problems.QuadraticProgram.get_quadratic_constraint" signature="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
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-get-variable" />
### get\_variable
<Function id="qiskit.optimization.problems.QuadraticProgram.get_variable" signature="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.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-integer-var" />
### integer\_var
<Function id="qiskit.optimization.problems.QuadraticProgram.integer_var" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already occupied.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-integer-var-dict" />
### integer\_var\_dict
<Function id="qiskit.optimization.problems.QuadraticProgram.integer_var_dict" signature="QuadraticProgram.integer_var_dict(keys, lowerbound=0, upperbound=1e+20, name=None, key_format='{}')">
Uses var\_dict to construct a dictionary of integer variables
**Parameters**
* **lowerbound** (`Union`\[`float`, `int`]) The lower bound of the variable(s).
* **upperbound** (`Union`\[`float`, `int`]) The upper bound of the variable(s).
* **name** (`Optional`\[`str`]) The name(s) of the variable(s).
* **key\_format** (`str`) The format used to name/index the variable(s).
* **keys** (`Union`\[`int`, `Sequence`]) If keys: int, it is interpreted as the number of variables to construct. Otherwise, the elements of the sequence are converted to strings via str and substituted into key\_format.
**Return type**
`Dict`\[`str`, `Variable`]
**Returns**
A dictionary mapping the variable names to variable instances.
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already taken.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if less than one variable instantiation is attempted.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if key\_format has more than one substitution or a nested substitution.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-integer-var-list" />
### integer\_var\_list
<Function id="qiskit.optimization.problems.QuadraticProgram.integer_var_list" signature="QuadraticProgram.integer_var_list(keys, lowerbound=0, upperbound=1e+20, name=None, key_format='{}')">
Uses var\_list to construct a dictionary of integer variables
**Parameters**
* **lowerbound** (`Union`\[`float`, `int`]) The lower bound of the variable(s).
* **upperbound** (`Union`\[`float`, `int`]) The upper bound of the variable(s).
* **name** (`Optional`\[`str`]) The name(s) of the variable(s).
* **key\_format** (`str`) The format used to name/index the variable(s).
* **keys** (`Union`\[`int`, `Sequence`]) If keys: int, it is interpreted as the number of variables to construct. Otherwise, the elements of the sequence are converted to strings via str and substituted into key\_format.
**Return type**
`List`\[`Variable`]
**Returns**
A list of variable instances.
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the variable name is already taken.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if less than one variable instantiation is attempted.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if key\_format has more than one substitution or a nested substitution.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-is-feasible" />
### is\_feasible
<Function id="qiskit.optimization.problems.QuadraticProgram.is_feasible" signature="QuadraticProgram.is_feasible(x)">
Returns whether a solution is feasible or not.
**Parameters**
**x** (`Union`\[`List`\[`float`], `ndarray`]) a solution value, such as returned in an optimizer result.
**Return type**
`bool`
**Returns**
`True` if the solution provided is feasible otherwise `False`.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-linear-constraint" />
### linear\_constraint
<Function id="qiskit.optimization.problems.QuadraticProgram.linear_constraint" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the constraint name already exists or the sense is not valid.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-maximize" />
### maximize
<Function id="qiskit.optimization.problems.QuadraticProgram.maximize" signature="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.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-minimize" />
### minimize
<Function id="qiskit.optimization.problems.QuadraticProgram.minimize" signature="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.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-pprint-as-string" />
### pprint\_as\_string
<Function id="qiskit.optimization.problems.QuadraticProgram.pprint_as_string" signature="QuadraticProgram.pprint_as_string()">
DEPRECATED Returns the quadratic program as a string in Docplexs pretty print format. :rtype: `str` :returns: A string representing the quadratic program.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-prettyprint" />
### prettyprint
<Function id="qiskit.optimization.problems.QuadraticProgram.prettyprint" signature="QuadraticProgram.prettyprint(out=None)">
DEPRECATED 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`
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-quadratic-constraint" />
### quadratic\_constraint
<Function id="qiskit.optimization.problems.QuadraticProgram.quadratic_constraint" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the constraint name already exists.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-read-from-lp-file" />
### read\_from\_lp\_file
<Function id="qiskit.optimization.problems.QuadraticProgram.read_from_lp_file" signature="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.
* [**MissingOptionalLibraryError**](qiskit.aqua.MissingOptionalLibraryError "qiskit.aqua.MissingOptionalLibraryError") If CPLEX is not installed.
<Admonition title="Note" type="note">
This method requires CPLEX to be installed and present in `PYTHONPATH`.
</Admonition>
**Return type**
`None`
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-remove-linear-constraint" />
### remove\_linear\_constraint
<Function id="qiskit.optimization.problems.QuadraticProgram.remove_linear_constraint" signature="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`
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-remove-quadratic-constraint" />
### remove\_quadratic\_constraint
<Function id="qiskit.optimization.problems.QuadraticProgram.remove_quadratic_constraint" signature="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`
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-substitute-variables" />
### substitute\_variables
<Function id="qiskit.optimization.problems.QuadraticProgram.substitute_variables" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if the substitution is invalid as follows. - Same variable is substituted multiple times. - Coefficient of variable substitution is zero.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-to-docplex" />
### to\_docplex
<Function id="qiskit.optimization.problems.QuadraticProgram.to_docplex" signature="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**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") if non-supported elements (should never happen).
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-to-ising" />
### to\_ising
<Function id="qiskit.optimization.problems.QuadraticProgram.to_ising" signature="QuadraticProgram.to_ising()">
Return the Ising Hamiltonian of this problem.
**Returns**
The qubit operator for the problem offset: The constant value in the Ising Hamiltonian.
**Return type**
qubit\_op
**Raises**
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") If a variable type is not binary.
* [**QiskitOptimizationError**](qiskit.optimization.QiskitOptimizationError "qiskit.optimization.QiskitOptimizationError") If constraints exist in the problem.
</Function>
<span id="qiskit-optimization-problems-quadraticprogram-write-to-lp-file" />
### write\_to\_lp\_file
<Function id="qiskit.optimization.problems.QuadraticProgram.write_to_lp_file" signature="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`
</Function>
## Attributes
### linear\_constraints
<Attribute id="qiskit.optimization.problems.QuadraticProgram.linear_constraints">
Returns the list of linear constraints of the quadratic program.
**Return type**
`List`\[`LinearConstraint`]
**Returns**
List of linear constraints.
</Attribute>
### linear\_constraints\_index
<Attribute id="qiskit.optimization.problems.QuadraticProgram.linear_constraints_index">
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.
</Attribute>
### name
<Attribute id="qiskit.optimization.problems.QuadraticProgram.name">
Returns the name of the quadratic program.
**Return type**
`str`
**Returns**
The name of the quadratic program.
</Attribute>
### objective
<Attribute id="qiskit.optimization.problems.QuadraticProgram.objective">
Returns the quadratic objective.
**Return type**
`QuadraticObjective`
**Returns**
The quadratic objective.
</Attribute>
### quadratic\_constraints
<Attribute id="qiskit.optimization.problems.QuadraticProgram.quadratic_constraints">
Returns the list of quadratic constraints of the quadratic program.
**Return type**
`List`\[`QuadraticConstraint`]
**Returns**
List of quadratic constraints.
</Attribute>
### quadratic\_constraints\_index
<Attribute id="qiskit.optimization.problems.QuadraticProgram.quadratic_constraints_index">
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.
</Attribute>
### status
<Attribute id="qiskit.optimization.problems.QuadraticProgram.status">
Status of the quadratic program. It can be infeasible due to variable substitution.
**Return type**
`QuadraticProgramStatus`
**Returns**
The status of the quadratic program
</Attribute>
### variables
<Attribute id="qiskit.optimization.problems.QuadraticProgram.variables">
Returns the list of variables of the quadratic program.
**Return type**
`List`\[`Variable`]
**Returns**
List of variables.
</Attribute>
### variables\_index
<Attribute id="qiskit.optimization.problems.QuadraticProgram.variables_index">
Returns the dictionary that maps the name of a variable to its index.
**Return type**
`Dict`\[`str`, `int`]
**Returns**
The variable index dictionary.
</Attribute>
</Class>