def test_application(self): """Test an end-to-end application.""" bounds = np.array([0., 7.]) num_qubits = 3 # the distribution circuit is a normal distribution plus a QGAN-trained ansatz circuit dist = NormalDistribution(num_qubits, mu=1, sigma=1, bounds=bounds) ansatz = TwoLocal(num_qubits, 'ry', 'cz', reps=1, entanglement='circular') trained_params = [0.29399714, 0.38853322, 0.9557694, 0.07245791, 6.02626428, 0.13537225] ansatz.assign_parameters(trained_params, inplace=True) dist.compose(ansatz, inplace=True) # create the European call expected value strike_price = 2 rescaling_factor = 0.25 european_call = EuropeanCallExpectedValue(num_qubits, strike_price, rescaling_factor, bounds) # create the state preparation circuit state_preparation = european_call.compose(dist, front=True) iae = IterativeAmplitudeEstimation(0.01, 0.05, state_preparation=state_preparation, objective_qubits=[num_qubits], post_processing=european_call.post_processing) backend = QuantumInstance(Aer.get_backend('qasm_simulator'), seed_simulator=125, seed_transpiler=80) result = iae.run(backend) self.assertAlmostEqual(result.estimation, 1.0364776997977694)
def test_application(self): """Test an end-to-end application.""" try: from qiskit import Aer # pylint: disable=unused-import,import-outside-toplevel except ImportError as ex: # pylint: disable=broad-except self.skipTest("Aer doesn't appear to be installed. Error: '{}'".format(str(ex))) return bounds = np.array([0., 7.]) num_qubits = 3 # the distribution circuit is a normal distribution plus a QGAN-trained ansatz circuit dist = NormalDistribution(num_qubits, mu=1, sigma=1, bounds=bounds) ansatz = TwoLocal(num_qubits, 'ry', 'cz', reps=1, entanglement='circular') trained_params = [0.29399714, 0.38853322, 0.9557694, 0.07245791, 6.02626428, 0.13537225] ansatz.assign_parameters(trained_params, inplace=True) dist.compose(ansatz, inplace=True) # create the European call expected value strike_price = 2 rescaling_factor = 0.25 european_call = EuropeanCallPricingObjective(num_state_qubits=num_qubits, strike_price=strike_price, rescaling_factor=rescaling_factor, bounds=bounds) # create the state preparation circuit state_preparation = european_call.compose(dist, front=True) problem = EstimationProblem(state_preparation=state_preparation, objective_qubits=[num_qubits], post_processing=european_call.post_processing) q_i = QuantumInstance(Aer.get_backend('qasm_simulator'), seed_simulator=125, seed_transpiler=80) iae = IterativeAmplitudeEstimation(epsilon_target=0.01, alpha=0.05, quantum_instance=q_i) result = iae.estimate(problem) self.assertAlmostEqual(result.estimation_processed, 1.0127253837345427)