Exemple #1
0
 def test_initialize(self):
     block = VQABlock(qutip.sigmax(), is_unitary=True)
     vqa = VQA(num_qubits=1)
     final_state = vqa.get_final_state([])
     assert final_state == qutip.basis(2, 0)
     vqa.add_block(block)
     final_state = vqa.get_final_state([])
     assert final_state == qutip.basis(2, 1)
Exemple #2
0
 def test_parameterized_circuit(self):
     block = VQABlock(qutip.sigmax())
     vqa = VQA(num_qubits=1)
     final_state = vqa.get_final_state([0])
     assert final_state == qutip.basis(2, 0)
     vqa.add_block(block)
     final_state = vqa.get_final_state([np.pi / 2])
     assert final_state == qutip.Qobj([[0], [-1j]])
Exemple #3
0
 def test_parameterized_hamiltonian_blocks(self):
     """
     Test that parameterized hamiltonian blocks correctly
     apply parameters
     """
     # Hamiltonian that looks like (t_1*X  +  t_2*Z)
     block = VQABlock(
         ParameterizedHamiltonian([qutip.sigmax(), qutip.sigmaz()])
     )
     vqa = VQA(num_qubits=1, num_layers=2)
     vqa.add_block(block)
     # Do (pi/2*X + 0*Z) and then (0*X + pi/2*Z)
     final_state = vqa.get_final_state([np.pi / 2, 0, 0, np.pi / 2])
     # expect |1>
     assert final_state == qutip.basis(2, 1)