Ejemplo n.º 1
0
def main():
    # Utility object for reading, writing parameters, etc. 
    utils = UTILS()

    # Reading parameters from para.dat file
    parameters = utils.read_parameter_file(file="../para.dat")
    parameters['root'] = "../data/"

    utils.read_command_line_arg(parameters,sys.argv)

    # Printing parameters for user
    utils.print_parameters(parameters)

    # Defining Hamiltonian
    H = HAMILTONIAN(**parameters)

    # Defines the model, and precomputes
    model = MODEL(H, parameters)

    # save interacting states
    if abs(parameters['J'] - 1.0) < 0.001 :
        with open('psi_L=2_J=1.pkl','wb') as f :
            pickle.dump([model.psi_i, model.psi_target], f)

    # load interacting states
    if abs(parameters['J']) < 0.0001:
        with open('psi_L=2_J=1.pkl','rb') as f :
            model.psi_i, model.psi_target = pickle.load(f)
    

    print(model.psi_i)
Ejemplo n.º 2
0
def main():
    # Utility object for reading, writing parameters, etc.
    utils = UTILS()

    # Reading parameters from para.dat file
    parameters = utils.read_parameter_file()

    # Command line specified parameters overide parameter file values
    utils.read_command_line_arg(parameters, sys.argv)

    parameters_nonint = parameters.copy()
    parameters_nonint['J'] = 0.0

    # Printing parameters for user
    utils.print_parameters(parameters)

    # Defining Hamiltonian
    H = HAMILTONIAN(**parameters)
    H_nonint = HAMILTONIAN(**parameters_nonint)

    # Defines the model, and precomputes evolution matrices given set of states
    model = MODEL(H, parameters)
    model_nonint = MODEL(H_nonint, parameters_nonint)

    # evolve with non-int H but starting and targeting interacting states
    model_nonint.psi_i = model.psi_i.copy()
    model_nonint.psi_target = model.psi_target.copy()
    model_nonint.H_target = model.H_target.copy()
    # model_nonint.param=model.param.copy()

    model = model_nonint
    parameters = parameters_nonint

    #print( abs(model.psi_i.T.dot(model.psi_target))**2 )

    #exit()

    root = 'data/non-int-evo/'
    #root='data/data_non-int/'

    # Run simulated annealing
    if parameters['task'] == 'SA':
        print("Simulated annealing")
        run_SA(parameters, model, utils, root)
    elif parameters['task'] == 'GB':
        print("Gibbs sampling")
        run_GS(parameters, model)
    elif parameters['task'] == 'SD' or parameters['task'] == 'SD2':
        print("Stochastic descent")
        run_SD(parameters, model, utils, root)
    elif parameters['task'] == 'ES':
        print("Exact spectrum")
        run_ES(parameters, model, utils, root)
    elif parameters['task'] == 'SASD':
        print("Simulating annealing followed by stochastic descent")
        run_SA(parameters, model, utils, root)

    exit()
Ejemplo n.º 3
0
def main():
    # Utility object for reading, writing parameters, etc.
    utils = UTILS()

    # Reading parameters from para.dat file
    parameters = utils.read_parameter_file()

    # Command line specified parameters overide parameter file values
    utils.read_command_line_arg(parameters, sys.argv)

    # Printing parameters for user
    utils.print_parameters(parameters)

    # Defining Hamiltonian
    H = HAMILTONIAN(**parameters)

    # Defines the model, and precomputes evolution matrices given set of states
    model = MODEL(H, parameters)

    #root='data/data_ES/'
    #root='data/data_SD/'
    root = 'data/data_GRAPE/'

    # Run simulated annealing
    if parameters['task'] == 'SA':
        print("Simulated annealing")
        run_SA(parameters, model, utils, root)
    elif parameters['task'] == 'GB':
        print("Gibbs sampling")
        run_GS(parameters, model)
    elif parameters['task'] == 'SD' or parameters['task'] == 'SD2':
        print("Stochastic descent")
        run_SD(parameters, model, utils, root)
    elif parameters['task'] == 'GRAPE':
        print("GRAPE")
        run_GRAPE(parameters, model, utils, root)
    elif parameters['task'] == 'ES':
        print("Exact spectrum")
        run_ES(parameters, model, utils, root)
    elif parameters['task'] == 'SASD':
        print("Simulating annealing followed by stochastic descent")
        run_SA(parameters, model, utils, root)

    exit()
Ejemplo n.º 4
0
def main():
    # Utility object for reading, writing parameters, etc.
    utils = UTILS()

    # Reading parameters from para.dat file
    parameters = utils.read_parameter_file()

    # Command line specified parameters overide parameter file values
    utils.read_command_line_arg(parameters, sys.argv)

    # Printing parameters for user
    utils.print_parameters(parameters)

    # Defining Hamiltonian
    H = HAMILTONIAN(**parameters)

    # Defines the model, and precomputes evolution matrices given set of states
    model = MODEL(H, parameters)

    #n_step = parameters['n_step']
    #X,y=sample_m0(10000,n_step,model)
    #print(y[0:10])
    #plt.hist(y,bins=20)
    #plt.show()

    rob_vs_T = {}
    n_eval = {}
    fid = {}
    res = {}
    visit = {}
    T_list = np.arange(0.1, 4.01, 0.1)
    n_step = 100
    fid_list = []

    for T in T_list:
        parameters['T'] = T
        parameters['n_step'] = n_step
        parameters['dt'] = T / n_step
        file = utils.make_file_name(parameters, root='data/')
        res = parse_data(file, v=3)
        fid_list.append(np.mean(res['F']))
        #n_eval[(n_step,hash(T))]=res['n_fid']
        #fid[(n_step,hash(T))]=res['F']
        #visit[(n_step,hash(T))] = res['n_visit']
    plt.plot(T_list, fid_list)
    plt.xlabel('T')
    plt.ylabel('Fidelity')
    plt.show()
    exit()

    n_step_list = [40, 50, 60, 70, 80, 90, 100, 110]

    for T in T_list:
        for n_step in n_step_list:  #[40,50,60,70,80,90,100,110,120]:

            ##for T in np.arange(0.025,10.001,0.025):
            #    for n_step in [100,200,400] :
            parameters['T'] = T
            parameters['n_step'] = n_step
            parameters['dt'] = T / n_step

            file = utils.make_file_name(parameters, root='data/')
            res = parse_data(file)
            n_eval[(n_step, hash(T))] = res['n_fid']
            fid[(n_step, hash(T))] = res['F']
            visit[(n_step, hash(T))] = res['n_visit']
        '''    with open(file,'rb') as f:
                _, data = pickle.load(f)
                n_elem = len(data)
                n_eval[(n_step,hash(T))]=[]
                n_fid[(n_step,hash(T))]=[]
                for elem in data:
                    n_eval[(n_step,hash(T))].append(elem[0])
                    n_fid[(n_step,hash(T))].append(elem[1])'''

    #print(n_eval)
    #exit()
    n_eval_mean = {}
    fid_mean = {}
    visit_mean = {}
    #print(visit[(40,115292150460684704)])
    #exit()
    for n_step in n_step_list:
        n_eval_mean[n_step] = []
        fid_mean[n_step] = []
        visit_mean[n_step] = []
        for T in T_list:
            hT = hash(T)
            n_eval_mean[n_step].append(
                [T, np.mean(n_eval[(n_step, hT)]) / (n_step * n_step)])
            fid_mean[n_step].append([T, np.mean(fid[(n_step, hT)])])
            visit_mean[n_step].append(
                [T, np.mean(visit[(n_step, hT)]) / (n_step)])

    c_list = [
        '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#e6f598', '#abdda4',
        '#66c2a5', '#3288bd'
    ]
    for i, n_step in enumerate(n_step_list):
        x = np.array(n_eval_mean[n_step])
        plt.plot(x[:, 0], x[:, 1], c='black', zorder=0)
        plt.scatter(x[:, 0],
                    x[:, 1],
                    c=c_list[i],
                    marker='o',
                    s=5,
                    label='$N=%i$' % n_step,
                    zorder=1)

    plt.title('Number of fidelity evaluations vs. ramp time \n for 2 flip')
    plt.ylabel('$N_{eval}/N^2$')
    plt.xlabel('$T$')
    plt.legend(loc='best')
    plt.tight_layout()
    plt.show()

    for i, n_step in enumerate(n_step_list):
        x = np.array(visit_mean[n_step])
        plt.plot(x[:, 0], x[:, 1], c='black', zorder=0)
        plt.scatter(x[:, 0],
                    x[:, 1],
                    c=c_list[i],
                    marker='o',
                    s=5,
                    label='$N=%i$' % n_step,
                    zorder=1)

    plt.title('Number of visited states vs. ramp time \n for 2 flip')
    plt.ylabel('$N_{visit}/N$')
    plt.xlabel('$T$')
    plt.legend(loc='best')
    plt.tight_layout()
    plt.show()





    '''