entropicalabs / openqaoa

Multi-backend SDK for quantum optimisation
MIT License
116 stars 58 forks source link

from_dict and load(s) methods for workflows #176

Closed raulconchello closed 1 year ago

raulconchello commented 1 year ago

New methods

workflows:

QAOA and RQAOA results:

Example

maxcut_qubo = MaximumCut(nx.generators.fast_gnp_random_graph(n=6,p=0.6, seed=42)).get_qubo_problem()
device = create_device(location='local', name='qiskit.shot_simulator')

q = QAOA()
q.set_device(device)
q.set_circuit_properties(p=1, param_type='extended', init_type='rand', mixer_hamiltonian='x')
q.set_backend_properties(prepend_state=None, append_state=None)
q.set_classical_optimizer(maxiter=10, optimization_progress=True)
q.set_exp_tags({'a': 1, 'b': 2})
q.compile(maxcut_qubo) 
q.optimize() 

q_asdict = q.asdict()
q_json = q.dumps()
q.dump(file_name='qaoa.json', file_path='./x/', prepend_id=False)

q_from_dict         = QAOA.from_dict(q_asdict)
q_from_json_string  = QAOA.loads(q_json)
q_from_json_file    = QAOA.load(file_name='qaoa.json', file_path='./x/')