Skip to content

Commit

Permalink
add migration guide to v0.6
Browse files Browse the repository at this point in the history
  • Loading branch information
t-imamichi committed Nov 10, 2023
1 parent 8b067ef commit c3bfb22
Show file tree
Hide file tree
Showing 3 changed files with 244 additions and 18 deletions.
25 changes: 8 additions & 17 deletions docs/migration/01_migration_guide_to_v0.5.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,23 +55,14 @@ an extension that allows users to access the eigen states.

The following is the corresponding table.

+-------------------------------------+--------------------------------+
| Former algorithm | New algorithm |
+=====================================+================================+
| ``qis | ``qiskit. |
| kit.algorithms.MinimumEigenSolver`` | algorithms.minimum_eigensolver |
| | s.SamplingMinimumEigensolver`` |
+-------------------------------------+--------------------------------+
| ``qiskit.a | ``qis |
| lgorithms.NumPyMinimumEigensolver`` | kit.algorithms.minimum_eigenso |
| | lver.NumPyMinimumEigensolver`` |
+-------------------------------------+--------------------------------+
| ``qiskit.algorithms.QAOA`` | ``qiskit.algorith |
| | ms.minimum_eigensolvers.QAOA`` |
+-------------------------------------+--------------------------------+
| ``qiskit.algorithms.VQE`` | ``qiskit.algorithms.mini |
| | mum_eigensolvers.SamplingVQE`` |
+-------------------------------------+--------------------------------+
.. csv-table::
:header: Former algorithm, New algorithm

``qiskit.algorithms.MinimumEigenSolver``, ``qiskit.algorithms.minimum_eigensolvers.SamplingMinimumEigensolver``
``qiskit.algorithms.NumPyMinimumEigensolver``, ``qiskit.algorithms.minimum_eigensolver.NumPyMinimumEigensolver``
``qiskit.algorithms.QAOA``, ``qiskit.algorithms.minimum_eigensolvers.QAOA``
``qiskit.algorithms.VQE``, ``qiskit.algorithms.minimum_eigensolvers.SamplingVQE``


Setup of a problem

Expand Down
235 changes: 235 additions & 0 deletions docs/migration/02_migration_guide_to_v0.6.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
Qiskit Optimization v0.6 Migration Guide
========================================

This tutorial will guide you through the process of migrating your code
from Qiskit Optimization v0.5 to v0.6.

Overview
--------

Qiskit Terra v0.25 deprecated the ``qiskit.algorithms`` module. It has been
superseded by a new standalone library
`Qiskit Algorithms <https://github.com/qiskit-community/qiskit_algorithms>`__.

Qiskit Optimization v0.6 supports only the new algorithms of Qiskit Algorithms.

It is not the intention to provide detailed explanations of the
new Qiskit Algorithms in this migration guide. We suggest that you read the
`corresponding
resources <https://qiskit.org/ecosystem/algorithms/index.html>`__
of the Qiskit Algorithms documentation instead.

We can basically use the existing codes by replacing ``qiskit.algorithms``
with ``qiskit_algorithms``.


``MinimumEigenOptimizer``
-------------------------

The former algorithms exist in
``qiskit.algorithms.minimum_eigensolvers``.
On the other hand, the new algorithms exist in
``qiskit_algorithms.minimum_eigensolvers`` and we can access them by
``qiskit_algorithms.*``.

``MinimumEigenOptimizer`` of Qiskit Optimization can use
``qiskit_algorithms.SamplingMinimumEigensolver``
interface of the new algorithms. Note that ``MinimumEigenOptimizer``
cannot basically handle
``qiskit_algorithms.MinimumEigensolver`` of the new
algorithms. But there is an exception. ``MinimumEigenOptimizer`` can
handle ``qiskit_algorithms.NumPyMinimumEigensolver``
because ``qiskit_algorithms.NumPyMinimumEigensolver`` has
an extension that allows users to access the eigen states.

The following is the corresponding table.

.. csv-table::
:header: Former algorithm, New algorithm

``qiskit.algorithms.minimum_eigensolvers.SamplingMinimumEigensolver``, ``qiskit_algorithms.SamplingMinimumEigensolver``
``qiskit.algorithms.minimum_eigensolver.NumPyMinimumEigensolver``, ``qiskit_algorithms.NumPyMinimumEigensolver``
``qiskit.algorithms.minimum_eigensolvers.QAOA``, ``qiskit_algorithms.QAOA``
``qiskit.algorithms.minimum_eigensolvers.SamplingVQE``, ``qiskit_algorithms.SamplingVQE``



NumPyMinimumEigensolver
~~~~~~~~~~~~~~~~~~~~~~~

Previously

.. code:: python
from qiskit.algorithms.minimum_eigensolvers import NumPyMinimumEigensolver
from qiskit_optimization.algorithms import MinimumEigenOptimizer
mes = NumPyMinimumEigensolver()
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
result = meo.solve(problem)
print(result)
New

.. code:: python
from qiskit_algorithms import NumPyMinimumEigensolver
from qiskit_optimization.algorithms import MinimumEigenOptimizer
mes = NumPyMinimumEigensolver()
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
result = meo.solve(problem)
print(result)
QAOA
~~~~

Previously

.. code:: python
from qiskit.algorithms.minimum_eigensolvers import QAOA
from qiskit.algorithms.optimizers import COBYLA
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import MinimumEigenOptimizer
shots = 1000
mes = QAOA(sampler=Sampler(), optimizer=COBYLA())
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
result = meo.solve(problem)
print(result)
New

.. code:: python
from qiskit_algorithms import QAOA
from qiskit_algorithms.optimizers import COBYLA
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import MinimumEigenOptimizer
shots = 1000
mes = QAOA(sampler=Sampler(), optimizer=COBYLA())
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
result = meo.solve(problem)
print(result)
SamplingVQE
~~~~~~~~~~~

Previously

.. code:: python
from qiskit.algorithms.minimum_eigensolvers import SamplingVQE
from qiskit.algorithms.optimizers import COBYLA
from qiskit.circuit.library import RealAmplitudes
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import MinimumEigenOptimizer
mes = SamplingVQE(sampler=Sampler(), ansatz=RealAmplitudes(), optimizer=COBYLA())
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
result = meo.solve(problem)
print(result)
New

.. code:: python
from qiskit_algorithms import SamplingVQE
from qiskit_algorithms.optimizers import COBYLA
from qiskit.circuit.library import RealAmplitudes
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import MinimumEigenOptimizer
mes = SamplingVQE(sampler=Sampler(), ansatz=RealAmplitudes(), optimizer=COBYLA())
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
result = meo.solve(problem)
print(result)
``WarmStartQAOAOptimizer``
--------------------------


Previously

.. code:: python
from qiskit.algorithms.minimum_eigensolvers import QAOA
from qiskit.algorithms.optimizers import COBYLA
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import WarmStartQAOAOptimizer, SlsqpOptimizer
qaoa = QAOA(sampler=Sampler(), optimizer=COBYLA())
optimizer = WarmStartQAOAOptimizer(
pre_solver=SlsqpOptimizer(), relax_for_pre_solver=True, qaoa=qaoa, epsilon=0.25
)
result = optimizer.solve(problem)
print(result)
New

.. code:: python
from qiskit_algorithms import QAOA
from qiskit_algorithms.optimizers import COBYLA
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import WarmStartQAOAOptimizer, SlsqpOptimizer
qaoa = QAOA(sampler=Sampler(), optimizer=COBYLA())
optimizer = WarmStartQAOAOptimizer(
pre_solver=SlsqpOptimizer(), relax_for_pre_solver=True, qaoa=qaoa, epsilon=0.25
)
result = optimizer.solve(problem)
print(result)
``GroverOptimizer``
-------------------


Previously

.. code:: python
from qiskit.algorithms.optimizers import COBYLA
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import GroverOptimizer
optimizer = GroverOptimizer(num_value_qubits=3, num_iterations=3, sampler=Sampler())
result = optimizer.solve(problem)
print(result)
New

.. code:: python
from qiskit_algorithms.optimizers import COBYLA
from qiskit.primitives import Sampler
from qiskit_optimization.algorithms import GroverOptimizer
optimizer = GroverOptimizer(num_value_qubits=3, num_iterations=3, sampler=Sampler())
result = optimizer.solve(problem)
print(result)
2 changes: 1 addition & 1 deletion releasenotes/notes/0.6-prelude-2740977b31d22583.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
prelude: >
Qiskit Optimization has been migrated to the `qiskit-community Github organization <https://github.com/qiskit-community>`_
to further emphasize that it is a community-driven project.
To reflect this change and because we are onboarding additional codeowners and maintainers,
To reflect this change and because we are on-boarding additional code owners and maintainers,
with this version (0.6) we have decided to *remove all deprecated* code, regardless of the time of its deprecation.
This ensures that the new members of the development team do not have a large bulk of legacy code to maintain.
Expand Down

0 comments on commit c3bfb22

Please sign in to comment.