Skip to content

Commit 6350239

Browse files
Add Prelude 0.6 (#566)
* add prelude of v0.6 * add migration guide to v0.6 * update * Update releasenotes/notes/switch-to-qiskit-algorithms-b0af38fe547bf5b5.yaml --------- Co-authored-by: Steve Wood <[email protected]>
1 parent 31975d6 commit 6350239

5 files changed

+268
-19
lines changed

docs/migration/01_migration_guide_to_v0.5.rst

+8-17
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,14 @@ an extension that allows users to access the eigen states.
5555

5656
The following is the corresponding table.
5757

58-
+-------------------------------------+--------------------------------+
59-
| Former algorithm | New algorithm |
60-
+=====================================+================================+
61-
| ``qis | ``qiskit. |
62-
| kit.algorithms.MinimumEigenSolver`` | algorithms.minimum_eigensolver |
63-
| | s.SamplingMinimumEigensolver`` |
64-
+-------------------------------------+--------------------------------+
65-
| ``qiskit.a | ``qis |
66-
| lgorithms.NumPyMinimumEigensolver`` | kit.algorithms.minimum_eigenso |
67-
| | lver.NumPyMinimumEigensolver`` |
68-
+-------------------------------------+--------------------------------+
69-
| ``qiskit.algorithms.QAOA`` | ``qiskit.algorith |
70-
| | ms.minimum_eigensolvers.QAOA`` |
71-
+-------------------------------------+--------------------------------+
72-
| ``qiskit.algorithms.VQE`` | ``qiskit.algorithms.mini |
73-
| | mum_eigensolvers.SamplingVQE`` |
74-
+-------------------------------------+--------------------------------+
58+
.. csv-table::
59+
:header: Former algorithm, New algorithm
60+
61+
``qiskit.algorithms.MinimumEigenSolver``, ``qiskit.algorithms.minimum_eigensolvers.SamplingMinimumEigensolver``
62+
``qiskit.algorithms.NumPyMinimumEigensolver``, ``qiskit.algorithms.minimum_eigensolver.NumPyMinimumEigensolver``
63+
``qiskit.algorithms.QAOA``, ``qiskit.algorithms.minimum_eigensolvers.QAOA``
64+
``qiskit.algorithms.VQE``, ``qiskit.algorithms.minimum_eigensolvers.SamplingVQE``
65+
7566

7667
Setup of a problem
7768

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
Qiskit Optimization v0.6 Migration Guide
2+
========================================
3+
4+
This tutorial will guide you through the process of migrating your code
5+
from Qiskit Optimization v0.5 to v0.6.
6+
7+
Overview
8+
--------
9+
10+
Qiskit Terra v0.25 deprecated the ``qiskit.algorithms`` module. It has been
11+
superseded by a new standalone library
12+
`Qiskit Algorithms <https://github.com/qiskit-community/qiskit_algorithms>`__.
13+
14+
Qiskit Optimization v0.6 supports only the new algorithms of Qiskit Algorithms.
15+
16+
It is not the intention to provide detailed explanations of the
17+
new Qiskit Algorithms in this migration guide. We suggest that you read the
18+
`corresponding
19+
resources <https://qiskit.org/ecosystem/algorithms/index.html>`__
20+
of the Qiskit Algorithms documentation instead.
21+
22+
We can basically use the existing codes by replacing ``qiskit.algorithms``
23+
with ``qiskit_algorithms``.
24+
25+
26+
``MinimumEigenOptimizer``
27+
-------------------------
28+
29+
The former algorithms exist in
30+
``qiskit.algorithms.minimum_eigensolvers``.
31+
On the other hand, the new algorithms exist in
32+
``qiskit_algorithms.minimum_eigensolvers`` and we can access them by
33+
``qiskit_algorithms.*``.
34+
35+
``MinimumEigenOptimizer`` of Qiskit Optimization can use
36+
``qiskit_algorithms.SamplingMinimumEigensolver``
37+
interface of the new algorithms. Note that ``MinimumEigenOptimizer``
38+
cannot basically handle
39+
``qiskit_algorithms.MinimumEigensolver`` of the new
40+
algorithms. But there is an exception. ``MinimumEigenOptimizer`` can
41+
handle ``qiskit_algorithms.NumPyMinimumEigensolver``
42+
because ``qiskit_algorithms.NumPyMinimumEigensolver`` has
43+
an extension that allows users to access the eigen states.
44+
45+
The following is the corresponding table.
46+
47+
.. csv-table::
48+
:header: Former algorithm, New algorithm
49+
50+
``qiskit.algorithms.minimum_eigensolvers.SamplingMinimumEigensolver``, ``qiskit_algorithms.SamplingMinimumEigensolver``
51+
``qiskit.algorithms.minimum_eigensolver.NumPyMinimumEigensolver``, ``qiskit_algorithms.NumPyMinimumEigensolver``
52+
``qiskit.algorithms.minimum_eigensolvers.QAOA``, ``qiskit_algorithms.QAOA``
53+
``qiskit.algorithms.minimum_eigensolvers.SamplingVQE``, ``qiskit_algorithms.SamplingVQE``
54+
55+
56+
57+
NumPyMinimumEigensolver
58+
~~~~~~~~~~~~~~~~~~~~~~~
59+
60+
Previously
61+
62+
.. code:: python
63+
64+
from qiskit.algorithms.minimum_eigensolvers import NumPyMinimumEigensolver
65+
66+
from qiskit_optimization.algorithms import MinimumEigenOptimizer
67+
68+
mes = NumPyMinimumEigensolver()
69+
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
70+
result = meo.solve(problem)
71+
print(result)
72+
73+
74+
New
75+
76+
.. code:: python
77+
78+
from qiskit_algorithms import NumPyMinimumEigensolver
79+
80+
from qiskit_optimization.algorithms import MinimumEigenOptimizer
81+
82+
mes = NumPyMinimumEigensolver()
83+
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
84+
result = meo.solve(problem)
85+
print(result)
86+
87+
88+
89+
QAOA
90+
~~~~
91+
92+
Previously
93+
94+
.. code:: python
95+
96+
from qiskit.algorithms.minimum_eigensolvers import QAOA
97+
from qiskit.algorithms.optimizers import COBYLA
98+
from qiskit.primitives import Sampler
99+
100+
from qiskit_optimization.algorithms import MinimumEigenOptimizer
101+
102+
shots = 1000
103+
mes = QAOA(sampler=Sampler(), optimizer=COBYLA())
104+
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
105+
result = meo.solve(problem)
106+
print(result)
107+
108+
109+
New
110+
111+
.. code:: python
112+
113+
from qiskit_algorithms import QAOA
114+
from qiskit_algorithms.optimizers import COBYLA
115+
from qiskit.primitives import Sampler
116+
117+
from qiskit_optimization.algorithms import MinimumEigenOptimizer
118+
119+
shots = 1000
120+
mes = QAOA(sampler=Sampler(), optimizer=COBYLA())
121+
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
122+
result = meo.solve(problem)
123+
print(result)
124+
125+
126+
127+
SamplingVQE
128+
~~~~~~~~~~~
129+
130+
Previously
131+
132+
.. code:: python
133+
134+
from qiskit.algorithms.minimum_eigensolvers import SamplingVQE
135+
from qiskit.algorithms.optimizers import COBYLA
136+
from qiskit.circuit.library import RealAmplitudes
137+
from qiskit.primitives import Sampler
138+
139+
from qiskit_optimization.algorithms import MinimumEigenOptimizer
140+
141+
mes = SamplingVQE(sampler=Sampler(), ansatz=RealAmplitudes(), optimizer=COBYLA())
142+
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
143+
result = meo.solve(problem)
144+
print(result)
145+
146+
147+
New
148+
149+
.. code:: python
150+
151+
from qiskit_algorithms import SamplingVQE
152+
from qiskit_algorithms.optimizers import COBYLA
153+
from qiskit.circuit.library import RealAmplitudes
154+
from qiskit.primitives import Sampler
155+
156+
from qiskit_optimization.algorithms import MinimumEigenOptimizer
157+
158+
mes = SamplingVQE(sampler=Sampler(), ansatz=RealAmplitudes(), optimizer=COBYLA())
159+
meo = MinimumEigenOptimizer(min_eigen_solver=mes)
160+
result = meo.solve(problem)
161+
print(result)
162+
163+
164+
165+
``WarmStartQAOAOptimizer``
166+
--------------------------
167+
168+
169+
Previously
170+
171+
.. code:: python
172+
173+
from qiskit.algorithms.minimum_eigensolvers import QAOA
174+
from qiskit.algorithms.optimizers import COBYLA
175+
from qiskit.primitives import Sampler
176+
177+
from qiskit_optimization.algorithms import WarmStartQAOAOptimizer, SlsqpOptimizer
178+
179+
qaoa = QAOA(sampler=Sampler(), optimizer=COBYLA())
180+
optimizer = WarmStartQAOAOptimizer(
181+
pre_solver=SlsqpOptimizer(), relax_for_pre_solver=True, qaoa=qaoa, epsilon=0.25
182+
)
183+
result = optimizer.solve(problem)
184+
print(result)
185+
186+
187+
New
188+
189+
.. code:: python
190+
191+
from qiskit_algorithms import QAOA
192+
from qiskit_algorithms.optimizers import COBYLA
193+
from qiskit.primitives import Sampler
194+
195+
from qiskit_optimization.algorithms import WarmStartQAOAOptimizer, SlsqpOptimizer
196+
197+
qaoa = QAOA(sampler=Sampler(), optimizer=COBYLA())
198+
optimizer = WarmStartQAOAOptimizer(
199+
pre_solver=SlsqpOptimizer(), relax_for_pre_solver=True, qaoa=qaoa, epsilon=0.25
200+
)
201+
result = optimizer.solve(problem)
202+
print(result)
203+
204+
205+
206+
``GroverOptimizer``
207+
-------------------
208+
209+
210+
Previously
211+
212+
.. code:: python
213+
214+
from qiskit.algorithms.optimizers import COBYLA
215+
from qiskit.primitives import Sampler
216+
217+
from qiskit_optimization.algorithms import GroverOptimizer
218+
219+
optimizer = GroverOptimizer(num_value_qubits=3, num_iterations=3, sampler=Sampler())
220+
result = optimizer.solve(problem)
221+
print(result)
222+
223+
224+
New
225+
226+
.. code:: python
227+
228+
from qiskit_algorithms.optimizers import COBYLA
229+
from qiskit.primitives import Sampler
230+
231+
from qiskit_optimization.algorithms import GroverOptimizer
232+
233+
optimizer = GroverOptimizer(num_value_qubits=3, num_iterations=3, sampler=Sampler())
234+
result = optimizer.solve(problem)
235+
print(result)

docs/migration/index.rst

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
Qiskit Optimization Migration Guide
33
###################################
44

5+
If you are switching over to version 0.6, which has removed all previously
6+
deprecated code, simply follow the instructions provided in the sections below.
7+
58

69
.. nbgallery::
710
:glob:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
prelude: >
3+
Qiskit Optimization has been migrated to the `qiskit-community Github organization <https://github.com/qiskit-community>`_
4+
to further emphasize that it is a community-driven project.
5+
To reflect this change and because we are on-boarding additional code owners and maintainers,
6+
with this version (0.6) we have decided to *remove all deprecated* code, regardless of the time of its deprecation.
7+
This ensures that the new members of the development team do not have a large bulk of legacy code to maintain.
8+
9+
This can mean one of two things for you as the end-user:
10+
11+
#. Nothing, if you already migrated your code and no longer rely on any deprecated features.
12+
13+
#. Otherwise, you need to migrate your code immediately. If you cannot do that, or want to continue using some
14+
of the features that were removed, you should pin your version of Qiskit Optimization to 0.5
15+
16+
You can check out the `migration guides <https://qiskit.org/ecosystem/optimization/migration/index.html>`_
17+
for details on how to update your code.
18+
19+
For more context on the changes around Qiskit Optimization and the other application projects as well as the algorithms
20+
library in Qiskit, be sure to read this `blog post <https://ibm.biz/BdSyNm>`_.

releasenotes/notes/switch-to-qiskit-algorithms-b0af38fe547bf5b5.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
22
prelude: >
3-
Qiskit Optimization 0.6 switches from ``qiskit.algorithms`` of Qiskit Terra
3+
Qiskit Optimization 0.6 switches from ``qiskit.algorithms`` of Qiskit
44
to `Qiskit Algorithms <https://qiskit.org/ecosystem/algorithms/>`_.
55
Qiskit Optimization 0.6 drops supports of the former algorithms based on
6-
``qiskit.algorithms``, ``QuantumInstance``, and Opflow of Qiskit Terra.
6+
``qiskit.algorithms``, ``QuantumInstance``, and Opflow of Qiskit.
77
88
upgrade:
99
- |

0 commit comments

Comments
 (0)