Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
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))