Qiskit Optimization v0.6 移行ガイド#
このチュートリアルでは、コードを Qiskit Optimization v0.5 から v0.6 へマイグレーションするプロセスをガイドします。
概要#
Qiskit Terra v0.25では qiskit.algorithms
モジュールが廃止されました。これは新しいスタンドアロンライブラリー Qiskit Algorithms に取って代わられました。
Qiskit Optimization v0.6は、Qiskit Algorithmsの新しいアルゴリズムのみをサポートしています。
この移行ガイドでは、新しいQiskit Algorithmsの詳細な説明を提供する意図はありません。代わりにQiskit Algorithmsドキュメントの 対応するリソース を読むことをお勧めします。
基本的には、 qiskit.algorithms
を qiskit_algorithms
に置き換えることで、既存のコードを利用することができます。
MinimumEigenOptimizer
#
以前のアルゴリズムは qiskit.algorithms.minimum_eigensolvers
に存在します。一方、新しいアルゴリズムは qiskit_algorithms.minimum_eigensolvers
に存在し、 qiskit_algorithms.*
でアクセスできます。
Qiskit Optimization の MinimumEigenOptimizer
は、新アルゴリズムの qiskit_algorithms.SamplingMinimumEigensolver
インターフェースを使用できます。 MinimumEigenOptimizer
は基本的に新アルゴリズムの qiskit_algorithms.MinimumEigensolver
を扱えないことに注意してください。しかし、例外があります。 MinimumEigenOptimizer
は qiskit_algorithms.NumPyMinimumEigensolver
を扱うことができます。なぜなら qiskit_algorithms.NumPyMinimumEigensolver
には固有状態にアクセスできる拡張機能があるからです。
対応する表を以下に示します。
以前のアルゴリズム |
新しいアルゴリズム |
---|---|
|
|
|
|
|
|
|
|
NumPyMinimumEigensolver#
以前
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)
新規
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#
以前
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)
新規
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#
以前
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)
新規
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
#
以前
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)
新規
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
#
以前
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)
新規
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)