From 53ef9e5bd7f2abc2cf36b672d8af6d28fe405ca0 Mon Sep 17 00:00:00 2001 From: Atsushi Matsuo Date: Wed, 23 Jun 2021 18:27:54 +0900 Subject: [PATCH 1/2] changed to use from_docplex_mp in qiskit finance --- .../applications/optimization/portfolio_diversification.py | 4 ++-- .../applications/optimization/portfolio_optimization.py | 4 ++-- requirements.txt | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/qiskit_finance/applications/optimization/portfolio_diversification.py b/qiskit_finance/applications/optimization/portfolio_diversification.py index 994a4cd4..d00def9d 100644 --- a/qiskit_finance/applications/optimization/portfolio_diversification.py +++ b/qiskit_finance/applications/optimization/portfolio_diversification.py @@ -19,6 +19,7 @@ from qiskit_optimization.algorithms import OptimizationResult from qiskit_optimization.applications import OptimizationApplication from qiskit_optimization.problems import QuadraticProgram +from qiskit_optimization.translators import from_docplex_mp class PortfolioDiversification(OptimizationApplication): @@ -69,8 +70,7 @@ def to_quadratic_program(self) -> QuadraticProgram: for i in range(self._num_assets): for j in range(self._num_assets): mdl.add_constraint(x[(i, j)] <= y[j]) - op = QuadraticProgram() - op.from_docplex(mdl) + op = from_docplex_mp(mdl) return op def interpret(self, result: Union[OptimizationResult, np.ndarray]) -> List[int]: diff --git a/qiskit_finance/applications/optimization/portfolio_optimization.py b/qiskit_finance/applications/optimization/portfolio_optimization.py index 460ea933..5eb837ee 100644 --- a/qiskit_finance/applications/optimization/portfolio_optimization.py +++ b/qiskit_finance/applications/optimization/portfolio_optimization.py @@ -19,6 +19,7 @@ from qiskit_optimization.algorithms import OptimizationResult from qiskit_optimization.applications import OptimizationApplication from qiskit_optimization.problems import QuadraticProgram +from qiskit_optimization.translators import from_docplex_mp from qiskit_finance.exceptions import QiskitFinanceError @@ -77,8 +78,7 @@ def to_quadratic_program(self) -> QuadraticProgram: linear = np.dot(self._expected_returns, x) mdl.minimize(self._risk_factor * quad - linear) mdl.add_constraint(mdl.sum(x[i] for i in range(num_assets)) == self._budget) - op = QuadraticProgram() - op.from_docplex(mdl) + op = from_docplex_mp(mdl) return op def portfolio_expected_value(self, result: Union[OptimizationResult, np.ndarray]) -> float: diff --git a/requirements.txt b/requirements.txt index 245b8753..10b7b158 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ qiskit-terra>=0.17.0 -qiskit-optimization +qiskit-optimization>=0.2.0 scipy>=1.4 numpy>=1.17 psutil>=5 From 59211a8dbfecd63dc1d83ffd127cf47fa664ae99 Mon Sep 17 00:00:00 2001 From: Atsushi Matsuo Date: Wed, 23 Jun 2021 19:14:11 +0900 Subject: [PATCH 2/2] fix mypy --- .../circuit/library/probability_distributions/lognormal.py | 2 +- .../circuit/library/probability_distributions/normal.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit_finance/circuit/library/probability_distributions/lognormal.py b/qiskit_finance/circuit/library/probability_distributions/lognormal.py index ae39cbcf..4a0d5023 100644 --- a/qiskit_finance/circuit/library/probability_distributions/lognormal.py +++ b/qiskit_finance/circuit/library/probability_distributions/lognormal.py @@ -113,7 +113,7 @@ def __init__( mu = 0 if dim == 1 else [0] * dim if sigma is None: - sigma = 1 if dim == 1 else np.eye(dim) + sigma = 1 if dim == 1 else np.eye(dim) # type: ignore[assignment] if bounds is None: bounds = (0, 1) if dim == 1 else [(0, 1)] * dim diff --git a/qiskit_finance/circuit/library/probability_distributions/normal.py b/qiskit_finance/circuit/library/probability_distributions/normal.py index 89825857..a6489f86 100644 --- a/qiskit_finance/circuit/library/probability_distributions/normal.py +++ b/qiskit_finance/circuit/library/probability_distributions/normal.py @@ -160,7 +160,7 @@ def __init__( mu = 0 if dim == 1 else [0] * dim if sigma is None: - sigma = 1 if dim == 1 else np.eye(dim) + sigma = 1 if dim == 1 else np.eye(dim) # type: ignore[assignment] if bounds is None: bounds = (-1, 1) if dim == 1 else [(-1, 1)] * dim