|
17 | 17 | QiskitOptimizationTestCase,
|
18 | 18 | requires_extra_library,
|
19 | 19 | )
|
| 20 | +from test.runtime.fake_vqeruntime import FakeRuntimeProvider |
20 | 21 |
|
21 | 22 | import numpy as np
|
22 | 23 | from ddt import data, ddt
|
23 | 24 | from docplex.mp.model import Model
|
24 |
| - |
25 | 25 | from qiskit import BasicAer
|
26 | 26 | from qiskit.algorithms import QAOA, VQE, NumPyMinimumEigensolver
|
27 | 27 | from qiskit.algorithms.optimizers import COBYLA, SPSA
|
28 | 28 | from qiskit.circuit.library import TwoLocal
|
| 29 | +from qiskit.providers.basicaer import QasmSimulatorPy |
29 | 30 | from qiskit.utils import QuantumInstance, algorithm_globals
|
30 |
| -from qiskit_optimization.algorithms import CplexOptimizer, MinimumEigenOptimizer |
| 31 | +from qiskit_optimization.algorithms import ( |
| 32 | + CplexOptimizer, |
| 33 | + MinimumEigenOptimizer, |
| 34 | + MinimumEigenOptimizationResult, |
| 35 | +) |
31 | 36 | from qiskit_optimization.algorithms.optimization_algorithm import (
|
32 | 37 | OptimizationResultStatus,
|
33 | 38 | )
|
|
39 | 44 | QuadraticProgramToQubo,
|
40 | 45 | )
|
41 | 46 | from qiskit_optimization.problems import QuadraticProgram
|
| 47 | +from qiskit_optimization.runtime import VQEProgram, QAOAProgram |
42 | 48 | from qiskit_optimization.translators import from_docplex_mp
|
43 | 49 |
|
44 | 50 |
|
@@ -353,6 +359,38 @@ def test_samples_vqe(self, simulator):
|
353 | 359 | self.assertAlmostEqual(results.raw_samples[0].fval, opt_sol)
|
354 | 360 | self.assertEqual(results.raw_samples[0].status, success)
|
355 | 361 |
|
| 362 | + @data("vqe", "qaoa") |
| 363 | + def test_runtime(self, subroutine): |
| 364 | + """Test vqe and qaoa runtime""" |
| 365 | + optimizer = {"name": "SPSA", "maxiter": 100} |
| 366 | + backend = QasmSimulatorPy() |
| 367 | + provider = FakeRuntimeProvider() |
| 368 | + |
| 369 | + if subroutine == "vqe": |
| 370 | + ry_ansatz = TwoLocal(5, "ry", "cz", reps=3, entanglement="full") |
| 371 | + initial_point = np.random.default_rng(42).random(ry_ansatz.num_parameters) |
| 372 | + solver = VQEProgram( |
| 373 | + ansatz=ry_ansatz, |
| 374 | + optimizer=optimizer, |
| 375 | + initial_point=initial_point, |
| 376 | + backend=backend, |
| 377 | + provider=provider, |
| 378 | + ) |
| 379 | + else: |
| 380 | + reps = 2 |
| 381 | + initial_point = np.random.default_rng(42).random(2 * reps) |
| 382 | + solver = QAOAProgram( |
| 383 | + optimizer=optimizer, |
| 384 | + reps=reps, |
| 385 | + initial_point=initial_point, |
| 386 | + backend=backend, |
| 387 | + provider=provider, |
| 388 | + ) |
| 389 | + |
| 390 | + opt = MinimumEigenOptimizer(solver) |
| 391 | + result = opt.solve(self.op_ordering) |
| 392 | + self.assertIsInstance(result, MinimumEigenOptimizationResult) |
| 393 | + |
356 | 394 |
|
357 | 395 | if __name__ == "__main__":
|
358 | 396 | unittest.main()
|
0 commit comments