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)
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()
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()
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() '''