Skip to content

[WIP] Remove qiskit-algorithms dependency #654

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 22 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 31 additions & 16 deletions .pylintdict
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ ansatzes
apidocs
apl
applegate
arg
args
arxiv
atol
Expand All @@ -26,18 +27,22 @@ bixby
bool
boolean
boyd
brassard
bravyi
byteorder
callables
catol
cartan
catol
chu
chuang
chvátal
clbits
cobyla
coeff
coeffs
combinatorial
conv
const
conv
cplex
cplexoptimizer
crs
Expand Down Expand Up @@ -73,17 +78,17 @@ et
eval
evals
exponentiated
f'spsa
failsafe
farhi
fmin
formatter
frac
fred
func
functools
fred
fval
fx
f'spsa
gambella
geq
getter
Expand All @@ -99,6 +104,7 @@ gurobi
gurobioptimizer
gurobipy
gutmann
hadamard
hadfield
hamilton
hamiltonian
Expand All @@ -124,8 +130,10 @@ july
kandala
karimi
kirkpatrick
kwarg
kwargs
lagrangian
langle
len
leq
lhs
Expand All @@ -142,6 +150,7 @@ macos
makefile
marecek
masahito
mathcal
matplotlib
maxcut
maxfev
Expand All @@ -151,22 +160,23 @@ mdl
milp
minimizer
minimumeigenoptimizer
modelspace
mmp
modelspace
mosca
mpm
multiset
mypy
nannicini
natively
ndarray
ndarrays
nones
noop
nelder
networkx
neven
nfev
nft
nones
noop
nosignatures
np
num
Expand All @@ -179,6 +189,7 @@ optimality
optimizationresult
optimizationresultstatus
optimizers
otimes
packagebut
panchenko
param
Expand All @@ -189,21 +200,22 @@ passmanager
pauli
paulis
peleato
peruzzo
pmm
polyfit
pooya
pos
ppp
pre
preconditioner
preprint
prepend
preprint
presolver
prettyprint
princeton
probabilistically
py
pxd
py
qaoa
qasm
qiskit
Expand All @@ -221,6 +233,7 @@ quantuminstance
qubit
qubits
qubo
rangle
readme
repr
representable
Expand Down Expand Up @@ -262,10 +275,11 @@ subclasses
subcollection
subgraph
submodules
subspaces
sys
subproblem
subspaces
summands
sys
tapp
tavernelli
terra
th
Expand All @@ -285,21 +299,22 @@ troyer
tsplib
undirected
upperbound
utils
variational
vartype
vec
vqe
vqeresult
utils
writelines
xatol
xixj
xopt
wavefunction
wecker
whitespace
wiesner
williamson
woerner
writelines
xatol
xixj
xopt
xs
ys
zemlin
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ The Optimization module enables easy, efficient modeling of optimization problem
A uniform interface as well as automatic conversion between different problem representations
allows users to solve problems using a large set of algorithms, from variational quantum algorithms,
such as the Quantum Approximate Optimization Algorithm QAOA, to Grover Adaptive Search using the
GroverOptimizer, leveraging fundamental algorithms provided by
[Qiskit Algorithms](https://qiskit-community.github.io/qiskit-algorithms/). Furthermore, the modular design
GroverOptimizer, leveraging fundamental algorithms. Furthermore, the modular design
of the optimization module allows it to be easily extended and facilitates rapid development and
testing of new algorithms. Compatible classical optimizers are also provided for testing,
validation, and benchmarking.
Expand Down
16 changes: 9 additions & 7 deletions qiskit_optimization/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,10 @@
A uniform interface as well as automatic conversion between different problem representations
allows users to solve problems using a large set of algorithms, from variational quantum algorithms,
such as the Quantum Approximate Optimization Algorithm
(:class:`~qiskit_algorithms.QAOA`), to
(:class:`~qiskit_optimization.minimum_eigensolvers.QAOA`), to
`Grover Adaptive Search <https://arxiv.org/abs/quant-ph/9607014>`_
(:class:`~algorithms.GroverOptimizer`), leveraging
fundamental `minimum eigensolvers
<https://qiskit-community.github.io/qiskit-algorithms/apidocs/qiskit_algorithms.html#minimum-eigensolvers>`_
provided by
`Qiskit Algorithms <https://qiskit-community.github.io/qiskit-algorithms/>`_.
(:class:`~qiskit_optimization.algorithms.GroverOptimizer`), leveraging fundamental minimum
eigensolvers (:class:`~qiskit_optimization.minimum_eigensolvers.MinimumEigensolver`).
Furthermore, the modular design
of the optimization module allows it to be easily extended and facilitates rapid development and
testing of new algorithms. Compatible classical optimizers are also provided for testing,
Expand Down Expand Up @@ -82,10 +79,15 @@
converters
problems
translators
# modules copied from qiskit_algorithms
eigensolvers
minimum_eigensolvers
optimizers
utils

"""

from .exceptions import QiskitOptimizationError, AlgorithmError
from .exceptions import AlgorithmError, QiskitOptimizationError
from .infinity import INFINITY # must be at the top of the file
from .problems.quadratic_program import QuadraticProgram
from .version import __version__
Expand Down
2 changes: 1 addition & 1 deletion qiskit_optimization/algorithms/admm_optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
from typing import List, Optional, Tuple, cast

import numpy as np
from qiskit_algorithms import NumPyMinimumEigensolver

from ..converters import MaximizeToMinimize
from ..minimum_eigensolvers import NumPyMinimumEigensolver
from ..problems.constraint import Constraint
from ..problems.linear_constraint import LinearConstraint
from ..problems.linear_expression import LinearExpression
Expand Down
9 changes: 4 additions & 5 deletions qiskit_optimization/algorithms/grover_optimizer.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This code is part of a Qiskit project.
#
# (C) Copyright IBM 2020, 2024.
# (C) Copyright IBM 2020, 2025.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
Expand All @@ -21,19 +21,18 @@
from qiskit import QuantumCircuit, QuantumRegister
from qiskit.circuit.library import QuadraticForm
from qiskit.primitives import BaseSampler
from qiskit_algorithms import AmplificationProblem
from qiskit_algorithms.amplitude_amplifiers.grover import Grover
from qiskit_algorithms.utils import algorithm_globals

from qiskit_optimization.algorithms.optimization_algorithm import (
OptimizationAlgorithm,
OptimizationResult,
OptimizationResultStatus,
SolutionSample,
)
from qiskit_optimization.amplitude_amplifiers.grover import AmplificationProblem, Grover
from qiskit_optimization.converters import QuadraticProgramConverter, QuadraticProgramToQubo
from qiskit_optimization.exceptions import QiskitOptimizationError
from qiskit_optimization.problems import QuadraticProgram, Variable
from qiskit_optimization.utils import algorithm_globals

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -191,7 +190,7 @@ def solve(self, problem: QuadraticProgram) -> OptimizationResult:
while not improvement_found:
# Determine the number of rotations.
loops_with_no_improvement += 1
rotation_count = algorithm_globals.random.integers(0, m)
rotation_count = int(algorithm_globals.random.integers(0, m))
rotations += rotation_count
# Apply Grover's Algorithm to find values below the threshold.
# TODO: Utilize Grover's incremental feature - requires changes to Grover.
Expand Down
11 changes: 6 additions & 5 deletions qiskit_optimization/algorithms/minimum_eigen_optimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@

import numpy as np
from qiskit.quantum_info import SparsePauliOp

from ..converters.quadratic_program_to_qubo import QuadraticProgramConverter, QuadraticProgramToQubo
from ..exceptions import QiskitOptimizationError
from ..minimum_eigensolvers import (
NumPyMinimumEigensolver,
NumPyMinimumEigensolverResult,
SamplingMinimumEigensolver,
SamplingMinimumEigensolverResult,
)

from ..converters.quadratic_program_to_qubo import QuadraticProgramConverter, QuadraticProgramToQubo
from ..exceptions import QiskitOptimizationError
from ..problems.quadratic_program import QuadraticProgram, Variable
from .optimization_algorithm import (
OptimizationAlgorithm,
Expand Down Expand Up @@ -109,7 +109,7 @@ class MinimumEigenOptimizer(OptimizationAlgorithm):

.. code-block::

from qiskit_algorithms import QAOA
from qiskit_optimization.minimum_eigensolvers import QAOA
from qiskit_optimization.problems import QuadraticProgram
from qiskit_optimization.algorithms import MinimumEigenOptimizer
problem = QuadraticProgram()
Expand Down Expand Up @@ -222,7 +222,8 @@ def _solve_internal(
raise QiskitOptimizationError(
"MinimumEigenOptimizer does not support this minimum eigensolver "
f"{type(self._min_eigen_solver)}. "
"You can use qiskit_algorithms.SamplingMinimumEigensolver instead."
"You can use qiskit_optimization.minimum_eigensolvers."
"SamplingMinimumEigensolver instead."
)
if eigen_result.eigenstate is not None:
raw_samples = self._eigenvector_to_solutions(
Expand Down
6 changes: 3 additions & 3 deletions qiskit_optimization/algorithms/qrao/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This code is part of a Qiskit project.
#
# (C) Copyright IBM 2023.
# (C) Copyright IBM 2023, 2025.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
Expand Down Expand Up @@ -48,8 +48,8 @@

.. code-block:: python

from qiskit_algorithms.optimizers import COBYLA
from qiskit_algorithms import VQE
from qiskit_optimization.optimizers import COBYLA
from qiskit_optimization.minimum_eigensolvers import VQE
from qiskit.circuit.library import RealAmplitudes
from qiskit.primitives import Estimator

Expand Down
5 changes: 2 additions & 3 deletions qiskit_optimization/algorithms/qrao/magic_rounding.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This code is part of a Qiskit project.
#
# (C) Copyright IBM 2023, 2024.
# (C) Copyright IBM 2023, 2025.
#
# This code is licensed under the Apache License, Version 2.0. You may
# obtain a copy of this license in the LICENSE.txt file in the root directory
Expand All @@ -19,10 +19,9 @@
from qiskit import QuantumCircuit
from qiskit.primitives import BaseSampler
from qiskit.quantum_info import SparsePauliOp
from qiskit_algorithms.exceptions import AlgorithmError

from qiskit_optimization.algorithms import OptimizationResultStatus, SolutionSample
from qiskit_optimization.exceptions import QiskitOptimizationError
from qiskit_optimization.exceptions import AlgorithmError, QiskitOptimizationError

from .quantum_random_access_encoding import (
_z_to_21p_qrac_basis_circuit,
Expand Down
Loading
Loading