def test_qaoa_initial_point(self, w, solutions, init_pt): """ Check first parameter value used is initial point as expected """ optimizer = COBYLA() qubit_op, _ = max_cut.get_operator(w) first_pt = [] def cb_callback(eval_count, parameters, mean, std): nonlocal first_pt if eval_count == 1: first_pt = list(parameters) quantum_instance = QuantumInstance( BasicAer.get_backend('statevector_simulator')) qaoa = QAOA(qubit_op, optimizer, initial_point=init_pt, callback=cb_callback, quantum_instance=quantum_instance) result = qaoa.compute_minimum_eigenvalue() x = sample_most_likely(result.eigenstate) graph_solution = max_cut.get_graph_solution(x) if init_pt is None: # If None the preferred initial point of QAOA variational form init_pt = [0.0, 0.0] # i.e. 0,0 should come through as the first point with self.subTest('Initial Point'): self.assertListEqual(init_pt, first_pt) with self.subTest('Solution'): self.assertIn(''.join([str(int(i)) for i in graph_solution]), solutions)
def test_qaoa_initial_point(self, w, solutions, init_pt): """ Check first parameter value used is initial point as expected """ aqua_globals.random_seed = 10598 optimizer = COBYLA() qubit_op, _ = max_cut.get_operator(w) first_pt = [] def cb_callback(eval_count, parameters, mean, std): nonlocal first_pt if eval_count == 1: first_pt = list(parameters) quantum_instance = QuantumInstance( BasicAer.get_backend('statevector_simulator'), seed_simulator=aqua_globals.random_seed, seed_transpiler=aqua_globals.random_seed) qaoa = QAOA(qubit_op, optimizer, initial_point=init_pt, callback=cb_callback, quantum_instance=quantum_instance) result = qaoa.compute_minimum_eigenvalue() x = sample_most_likely(result.eigenstate) graph_solution = max_cut.get_graph_solution(x) with self.subTest('Initial Point'): # If None the preferred random initial point of QAOA variational form if init_pt is None: np.testing.assert_almost_equal([1.5108, 0.3378], first_pt, decimal=4) else: self.assertListEqual(init_pt, first_pt) with self.subTest('Solution'): self.assertIn(''.join([str(int(i)) for i in graph_solution]), solutions)
print("Number of Qubits: %s" % qubit_op.num_qubits) aqua_globals.random_seed = 10598 optimizer = COBYLA(maxiter=1, tol=1e3) backend = Aer.get_backend('qasm_simulator') backend.set_options(method=method) backend.set_options(max_memory_mb=307200) #backend.set_options(fusion_enable=False) # TODO: Make this an option qaoa = QAOA(qubit_op, optimizer, quantum_instance=backend) #circ = qaoa.construct_circuit([0.0, 0.0]) #qobject = assemble(circ) #qobject.to_dict() #with open("qaoa.job", 'w') as f: # f.write(json.dumps(qobject.to_dict())) # # #backend_options = {'method': 'statevector_gpu'} #with open("qaoa.config", 'w') as f: # f.write(json.dumps(backend_options)) start = time.time() result = qaoa.compute_minimum_eigenvalue() end = time.time() x = sample_most_likely(result.eigenstate) ising_sol = graph_partition.get_graph_solution(x) print(ising_sol) print(f'Objective value computed by QAOA is {graph_partition.objective_value(x, w)}') print("Execution time: %s" % (end - start))