qiskit-optimization icon indicating copy to clipboard operation
qiskit-optimization copied to clipboard

qiskit-optimization[cplex] already satisfied, but getting error with CplexOptimizer()

Open bartubisgin opened this issue 3 years ago • 1 comments

Environment

  • Qiskit Optimization version: 0.4.0
  • Python version: 3.10.5
  • Operating system: macOS, arm64 (M1 Pro)

What is happening?

I'm trying to run Tutorial 10 on Warm-Start QAOA and get this error below from the 2nd code-cell using CplexOptimizer().solve(qubo)

MissingOptionalLibraryError               Traceback (most recent call last)
Input In [2], in <cell line: 3>()
      1 from qiskit_optimization.algorithms import CplexOptimizer, GurobiOptimizer
----> 3 cplex_result = CplexOptimizer().solve(qp)
      4 gurobi_result = GurobiOptimizer().solve(qp)
      6 print("cplex")

File ~/opt/anaconda3/envs/q_explorer/lib/python3.10/site-packages/qiskit/utils/classtools.py:116, in _WrappedMethod.__get__.<locals>.out(*args, **kwargs)
    113 @functools.wraps(method)
    114 def out(*args, **kwargs):
    115     for callback in self._before:
--> 116         callback.__get__(obj, objtype)(*args, **kwargs)
    117     retval = method(*args, **kwargs)
    118     for callback in self._after:

File ~/opt/anaconda3/envs/q_explorer/lib/python3.10/site-packages/qiskit/utils/lazy_tester.py:39, in _RequireNow.__call__(self, *_args, **_kwargs)
     38 def __call__(self, *_args, **_kwargs):
---> 39     self._tester.require_now(self._feature)

File ~/opt/anaconda3/envs/q_explorer/lib/python3.10/site-packages/qiskit/utils/lazy_tester.py:223, in LazyDependencyManager.require_now(self, feature)
    221 if self:
    222     return
--> 223 raise MissingOptionalLibraryError(
    224     libname=self._name, name=feature, pip_install=self._install, msg=self._msg
    225 )

MissingOptionalLibraryError: "The 'CPLEX' library is required to use 'CplexOptimizer'. You can install it with 'pip install 'qiskit-optimization[cplex]''."

How can we reproduce the issue?

from qiskit_optimization.problems import QuadraticProgram

#define a problem
qp = QuadraticProgram()
qp.binary_var("x")
qp.integer_var(name="y", lowerbound=-1, upperbound=4)
qp.maximize(quadratic={("x", "y"): 1})
qp.linear_constraint({"x": 1, "y": -1}, "<=", 0)
print(qp.prettyprint())

from qiskit_optimization.algorithms import CplexOptimizer, GurobiOptimizer

cplex_result = CplexOptimizer().solve(qp)
gurobi_result = GurobiOptimizer().solve(qp)

print("cplex")
print(cplex_result.prettyprint())
print()
print("gurobi")
print(gurobi_result.prettyprint())

when I run pip install 'qiskit-optimization[cplex]' I get the message below: (I also already have the CPLEX Studio Community Edition)

Requirement already satisfied: qiskit-optimization[cplex] in /Users/bartubisgin/opt/anaconda3/envs/q_explorer/lib/python3.10/site-packages (0.4.0)

What should happen?

How can I correctly access the CplexOptimizer without any errors? Is this possibly a bug or some kind of version conflict issue?

Any suggestions?

No response

bartubisgin avatar Sep 01 '22 12:09 bartubisgin

CPLEX does not support arm64. There is only macosx...x86_64 in the list. https://pypi.org/project/cplex/#files

How did you install CPLEX? Is cplex in pip list?

AFAIK, M1 users need Rosetta to use CPLEX.

t-imamichi avatar Sep 01 '22 13:09 t-imamichi

@bartubisgin Do you have any update? If no, I will close this issue.

t-imamichi avatar Nov 10 '22 09:11 t-imamichi