qiskit-documentation/docs/api/qiskit/0.24/qiskit.optimization.applica...

83 lines
3.6 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: docplex
description: API reference for qiskit.optimization.applications.ising.docplex
in_page_toc_min_heading_level: 2
python_api_type: module
python_api_name: qiskit.optimization.applications.ising.docplex
---
<span id="module-qiskit.optimization.applications.ising.docplex" />
<span id="qiskit-optimization-applications-ising-docplex" />
# qiskit.optimization.applications.ising.docplex
Automatically generate Ising Hamiltonians from general models of optimization problems. This program converts general models of optimization problems into Ising Hamiltonian. To write models of optimization problems, DOcplex (Python library for optimization problems) is used in the program. ([https://cdn.rawgit.com/IBMDecisionOptimization/docplex-doc/master/docs/index.html](https://cdn.rawgit.com/IBMDecisionOptimization/docplex-doc/master/docs/index.html))
It supports models that consist of the following elements now.
* Binary variables.
* Linear or quadratic object function.
* Equality constraints.
> * Symbols in constraints have to be equal (==).
> * Inequality constraints (e.g. x+y \<= 5) are not allowed.
The following is an example of use.
```python
# Create an instance of a model and variables with DOcplex.
mdl = Model(name='tsp')
x = {(i,p): mdl.binary_var(name='x_{0}_{1}'.format(i,p)) for i in range(num_node)
for p in range(num_node)}
# Object function
tsp_func = mdl.sum(ins.w[i,j] * x[(i,p)] * x[(j,(p+1)%num_node)] for i in range(num_node)
for j in range(num_node) for p in range(num_node))
mdl.minimize(tsp_func)
# Constraints
for i in range(num_node):
mdl.add_constraint(mdl.sum(x[(i,p)] for p in range(num_node)) == 1)
for p in range(num_node):
mdl.add_constraint(mdl.sum(x[(i,p)] for i in range(num_node)) == 1)
# Call the method to convert the model into Ising Hamiltonian.
qubitOp, offset = get_operator(mdl)
# Calculate with the generated Ising Hamiltonian.
ee = NumPyMinimumEigensolver(qubitOp)
result = ee.run()
print('get_operator')
print('tsp objective:', result['energy'] + offset)
```
**Functions**
| | |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| [`get_operator`](#qiskit.optimization.applications.ising.docplex.get_operator "qiskit.optimization.applications.ising.docplex.get_operator")(mdl\[, auto\_penalty, …]) | Generate Ising Hamiltonian from a model of DOcplex. |
### get\_operator
<Function id="qiskit.optimization.applications.ising.docplex.get_operator" github="https://github.com/qiskit-community/qiskit-aqua/tree/stable/0.8/qiskit/optimization/applications/ising/docplex.py" signature="get_operator(mdl, auto_penalty=True, default_penalty=100000.0)">
Generate Ising Hamiltonian from a model of DOcplex.
**Parameters**
* **mdl** (`Model`) A model of DOcplex for a optimization problem.
* **auto\_penalty** (`bool`) If true, the penalty coefficient is automatically defined by “\_auto\_define\_penalty()”.
* **default\_penalty** (`float`) The default value of the penalty coefficient for the constraints. This value is used if “auto\_penalty” is False.
**Return type**
`Tuple`\[`WeightedPauliOperator`, `float`]
**Returns**
Operator for the Hamiltonian and a constant shift for the obj function.
</Function>