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