def test_vqe_reuse(self): """ Test vqe reuse """ vqe = VQE() with self.assertRaises(AquaError): _ = vqe.run() num_qubits = self.qubit_op.num_qubits var_form = RY(num_qubits, depth=3) vqe.var_form = var_form with self.assertRaises(AquaError): _ = vqe.run() vqe.operator = self.qubit_op with self.assertRaises(AquaError): _ = vqe.run() qinst = QuantumInstance(BasicAer.get_backend('statevector_simulator')) vqe.quantum_instance = qinst result = vqe.run() self.assertAlmostEqual(result.eigenvalue.real, -1.85727503, places=5) operator = MatrixOperator(np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]])) vqe.operator = operator result = vqe.run() self.assertAlmostEqual(result.eigenvalue.real, -1.0, places=5)
def test_vqe_reuse(self): """ Test vqe reuse """ vqe = VQE() with self.assertRaises(AquaError): _ = vqe.run() var_form = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz') vqe.var_form = var_form with self.assertRaises(AquaError): _ = vqe.run() vqe.operator = self.qubit_op with self.assertRaises(AquaError): _ = vqe.run() qinst = QuantumInstance(BasicAer.get_backend('statevector_simulator')) vqe.quantum_instance = qinst result = vqe.run() self.assertAlmostEqual(result.eigenvalue.real, -1.85727503, places=5) operator = PrimitiveOp( np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]])) vqe.operator = operator result = vqe.run() self.assertAlmostEqual(result.eigenvalue.real, -1.0, places=5)
def test_reuse(self): """Test re-using a VQE algorithm instance.""" vqe = VQE() with self.subTest(msg='assert running empty raises AquaError'): with self.assertRaises(AquaError): _ = vqe.run() var_form = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz') vqe.var_form = var_form with self.subTest(msg='assert missing operator raises AquaError'): with self.assertRaises(AquaError): _ = vqe.run() vqe.operator = self.h2_op with self.subTest(msg='assert missing backend raises AquaError'): with self.assertRaises(AquaError): _ = vqe.run() vqe.quantum_instance = self.statevector_simulator with self.subTest(msg='assert VQE works once all info is available'): result = vqe.run() self.assertAlmostEqual(result.eigenvalue.real, self.h2_energy, places=5) operator = PrimitiveOp( np.array([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, 2, 0], [0, 0, 0, 3]])) with self.subTest(msg='assert minimum eigensolver interface works'): result = vqe.compute_minimum_eigenvalue(operator) self.assertAlmostEqual(result.eigenvalue.real, -1.0, places=5)