Guía de Migración de Qiskit Optimization v0.6#
Este tutorial te guiará a través del proceso de migración de tu código de Qiskit Optimization v0.5 a v0.6.
Descripción General#
Qiskit Terra v0.25 obsoletizó el módulo qiskit.algorithms
. Ha sido reemplazado por una nueva biblioteca independiente Qiskit Algorithms.
Qiskit Optimization v0.6 solo admite los nuevos algoritmos de Qiskit Algorithms.
No es la intención proporcionar explicaciones detalladas de los nuevos Qiskit Algorithms en esta guía de migración. Te sugerimos que leas los recursos correspondientes de la documentación de Qiskit Algorithms en su lugar.
Básicamente podemos usar los códigos existentes reemplazando qiskit.algorithms
con qiskit_algorithms
.
MinimumEigenOptimizer
#
Los algoritmos anteriores existen en qiskit.algorithms.minimum_eigensolvers
. Por otro lado, los nuevos algoritmos existen en qiskit_algorithms.minimum_eigensolvers
y podemos acceder a ellos mediante qiskit_algorithms.*
.
MinimumEigenOptimizer
de Qiskit Optimization puede usar la interfaz qiskit_algorithms.SamplingMinimumEigensolver
de los nuevos algoritmos. Ten en cuenta que MinimumEigenOptimizer
básicamente no puede manejar qiskit_algorithms.MinimumEigensolver
de los nuevos algoritmos. Pero hay una excepción. MinimumEigenOptimizer
puede manejar qiskit_algorithms.NumPyMinimumEigensolver
porque qiskit_algorithms.NumPyMinimumEigensolver
tiene una extensión que permite a los usuarios acceder a los estados propios.
La siguiente es la tabla correspondiente.
Algoritmo anterior |
Algoritmo nuevo |
---|---|
|
|
|
|
|
|
|
|
NumPyMinimumEigensolver#
Previamente
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)
Nuevo
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#
Previamente
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)
Nuevo
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#
Previamente
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)
Nuevo
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
#
Previamente
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)
Nuevo
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
#
Previamente
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)
Nuevo
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)