def simulate(size, ansatz_name, minimizer, repeats, hamiltonian_idx, max_meas, samples, h, eig): H, qc, ansatz_, initial_params = \ core.interface.create_and_convert(ansatz_name, h) if minimizer == 'nelder-mead': vqe = vqe_nelder_mead(samples=samples, H=H, fatol=0, xatol=0) tol_para = 1e-3 max_same_para = 3 callback = cb.restart(max_same_para, tol_para) elif minimizer == 'bayes': n_calls = int(round(max_meas/samples)) vqe = vqe_bayes(n_calls=n_calls) def callback(*args, **kwargs): pass if ansatz_name == 'multi_particle': initial_params = [(-1.0, 1.0)]*(size - 1) elif ansatz_name == 'one_particle_ucc': initial_params = [(-3.0, 3.0)] * (size - 1) else: raise RuntimeError("Don't know that ansatz.") else: raise RuntimeError('Bad minimizer') result = vqe_eig.smallest(H, qc, initial_params, vqe, ansatz_, samples, callback=callback, max_meas=max_meas) result.correct = eig return result
def simulate(size, hamiltonian_idx, V, max_meas, samples, h, eig): H, qc, ansatz_, initial_params = \ core.interface.create_and_convert('multi_particle', h) vqe = vqe_nelder_mead(samples=samples, H=H, fatol=0, xatol=0) tol_para = 1e-3 max_same_para = 3 callback = cb.restart(max_same_para, tol_para) result = vqe_eig.smallest(H, qc, initial_params, vqe, ansatz_, samples, callback=callback, max_meas=max_meas) result.correct = eig return result
def simulate(ansatz_name, size, hamiltonian_idx, samples, max_same_para, repeats, h, eig): # TODO: create VQE-object here! (not multiprocess safe) # TODO: run e.g. smallest here and return result. H, qc, ansatz_, initial_params = core.interface.create_and_convert( ansatz_name, h) vqe = vqe_nelder_mead(samples=samples, H=H) tol_para = 1e-3 callback = cb.restart(max_same_para, tol_para) max_fun_evals = 200 result = vqe_eig.smallest(H, qc, initial_params, vqe, ansatz_, samples, callback=callback, max_fun_evals=max_fun_evals) result.correct = eig return result