def disabled_test_qaoa_initial_state(self, w, init_state): """ QAOA initial state test """ optimizer = COBYLA() qubit_op, _ = max_cut.get_operator(w) init_pt = [0.0, 0.0] # Avoid generating random initial point if init_state is None: initial_state = None else: initial_state = QuantumCircuit(QuantumRegister(4)) initial_state.initialize(init_state, initial_state.qubits) quantum_instance = QuantumInstance( BasicAer.get_backend('statevector_simulator')) zero_init_state = QuantumCircuit(QuantumRegister(qubit_op.num_qubits)) qaoa_zero_init_state = QAOA(optimizer=optimizer, initial_state=zero_init_state, initial_point=init_pt, quantum_instance=quantum_instance) qaoa = QAOA(optimizer=optimizer, initial_state=initial_state, initial_point=init_pt, quantum_instance=quantum_instance) zero_circuits = qaoa_zero_init_state.construct_circuit( init_pt, qubit_op) custom_circuits = qaoa.construct_circuit(init_pt, qubit_op) self.assertEqual(len(zero_circuits), len(custom_circuits)) backend = BasicAer.get_backend('statevector_simulator') for zero_circ, custom_circ in zip(zero_circuits, custom_circuits): z_length = len(zero_circ.data) c_length = len(custom_circ.data) self.assertGreaterEqual(c_length, z_length) self.assertTrue(zero_circ.data == custom_circ.data[-z_length:]) custom_init_qc = custom_circ.copy() custom_init_qc.data = custom_init_qc.data[0:c_length - z_length] if initial_state is None: original_init_qc = QuantumCircuit(qubit_op.num_qubits) original_init_qc.h(range(qubit_op.num_qubits)) else: original_init_qc = initial_state.construct_circuit() job_init_state = execute(original_init_qc, backend) job_qaoa_init_state = execute(custom_init_qc, backend) statevector_original = job_init_state.result().get_statevector( original_init_qc) statevector_custom = job_qaoa_init_state.result().get_statevector( custom_init_qc) self.assertEqual(statevector_original.tolist(), statevector_custom.tolist())
def test_qaoa_initial_state(self, w, init_state): """QAOA initial state test""" optimizer = COBYLA() qubit_op, _ = self._get_operator(w) init_pt = np.asarray([0.0, 0.0]) # Avoid generating random initial point if init_state is None: initial_state = None else: initial_state = QuantumCircuit(QuantumRegister(4, "q")) initial_state.initialize(init_state, initial_state.qubits) zero_init_state = QuantumCircuit(QuantumRegister(qubit_op.num_qubits, "q")) qaoa_zero_init_state = QAOA( optimizer=optimizer, initial_state=zero_init_state, initial_point=init_pt, quantum_instance=self.statevector_simulator, ) qaoa = QAOA( optimizer=optimizer, initial_state=initial_state, initial_point=init_pt, quantum_instance=self.statevector_simulator, ) zero_circuits = qaoa_zero_init_state.construct_circuit(init_pt, qubit_op) custom_circuits = qaoa.construct_circuit(init_pt, qubit_op) self.assertEqual(len(zero_circuits), len(custom_circuits)) for zero_circ, custom_circ in zip(zero_circuits, custom_circuits): z_length = len(zero_circ.data) c_length = len(custom_circ.data) self.assertGreaterEqual(c_length, z_length) self.assertTrue(zero_circ.data == custom_circ.data[-z_length:]) custom_init_qc = QuantumCircuit(custom_circ.num_qubits) custom_init_qc.data = custom_circ.data[0 : c_length - z_length] if initial_state is None: original_init_qc = QuantumCircuit(qubit_op.num_qubits) original_init_qc.h(range(qubit_op.num_qubits)) else: original_init_qc = initial_state job_init_state = self.statevector_simulator.execute(original_init_qc) job_qaoa_init_state = self.statevector_simulator.execute(custom_init_qc) statevector_original = job_init_state.get_statevector(original_init_qc) statevector_custom = job_qaoa_init_state.get_statevector(custom_init_qc) self.assertListEqual(statevector_original.tolist(), statevector_custom.tolist())
def test_qaoa_construct_circuit_update(self): """Test updating operators with QAOA construct_circuit""" qaoa = QAOA() ref = qaoa.construct_circuit([0, 0], I ^ Z)[0] circ2 = qaoa.construct_circuit([0, 0], I ^ Z)[0] self.assertEqual(circ2, ref) circ3 = qaoa.construct_circuit([0, 0], Z ^ I)[0] self.assertNotEqual(circ3, ref) circ4 = qaoa.construct_circuit([0, 0], I ^ Z)[0] self.assertEqual(circ4, ref)