final_iter = [get_initial_state(seed) for seed in final_iter] tmp_results = [] for initial_states in final_iter: np.random.seed(1024) result = evaluate_single_state(nimc, initial_states, nimc.k, mult=10000) tmp_results.append(result) initial_states = final_iter[np.argmax(tmp_results)] np.random.seed(1024) result = evaluate_single_state(nimc, initial_states, nimc.k, mult=250000) print(result) results.append(result) print({ 'results': results, 'num_queries': num_queries, 'original_results': original_results }) savepklz( { 'results': results, 'num_queries': num_queries, 'original_results': original_results }, '../data/PlasmaLab_%s_exp%d.pklz' % (model, exp_id)) os.system('rm ' + tmp_model_name + ' ' + tmp_spec_name)
model = 'Slplatoon' exp_id = int(sys.argv[1]) if __name__ == '__main__': budget = 800000 outputs = [] rhomaxs = [0.95, 0.9, 0.8, 0.6, 0.4, 0.16, 0.01] # run an experiment for each rho_max configuration for rhomax in rhomaxs: filename = 'data/HooVer_%s_budget%d_rhomax%f_exp%d.pklz'%(model, budget, rhomax, exp_id) os.system('cd ../; python3 check.py --nRuns 1 --model %s --budget %d --rho_max %f --output %s --seed %d'%(model, budget, rhomax, filename, exp_id*1024)) outputs.append(loadpklz('../'+filename)) results = [] optimal_xs = [o['optimal_xs'][0] for o in outputs] original_results = [o['optimal_values'][0] for o in outputs] num_nodes = [o['num_nodes'][0] for o in outputs] # Monte-Carlo estimation of the hitting probability (using 250k simulations) nimc = models.__dict__[model]() for initial_states in optimal_xs: initial_states = initial_states.tolist() np.random.seed(1024) result = evaluate_single_state(nimc, initial_states, nimc.k, mult=250000) results.append(result) print(result) savepklz({'results':results, 'rhomaxs':rhomaxs, 'original_results':original_results}, '../data/HooVer_%s_rhomax_exp%d.pklz'%(model, exp_id))
num=20, base=2).astype('int') for start, end in _budgets ] results = [] original_results = [] print(ss) for s, budgets in zip(ss, _budgets): s_results = [] for budget in budgets: filename = 'data/HooVer_%s_nqueries_regret_budget%d_s%lf_exp%d.pklz' % ( model, budget, s, exp_id) os.system( 'cd ../; python3 check.py --nRuns 1 --sigma 1e-5 --model %s --args %lf --budget %d --output %s --seed %d' % (model, s, budget, filename, exp_id * 1024)) nimc = models.__dict__[model](s=s) initial_states = loadpklz('../' + filename)['optimal_xs'][0] original_results.append( loadpklz('../' + filename)['optimal_values'][0]) result = nimc.get_prob(initial_states) s_results.append(result) results.append(s_results) savepklz( { 'results': results, 'ss': ss, 'budgets': _budgets, 'original_results': original_results }, '../data/HooVer_%s_nqueries_regret_exp%d.pklz' % (model, exp_id)) # from IPython import embed; embed()
model = 'Slplatoon' exp_id = int(sys.argv[1]) if __name__ == '__main__': budget = 800000 outputs = [] bss = [10, 20, 50, 100, 400, 1600, 6400, 25600] # run an experiment for each batch_size configuration for bs in bss[::-1]: filename = 'data/HooVer_%s_budget%d_bs%d_exp%d.pklz'%(model, budget, bs, exp_id) os.system('cd ../; python3 check.py --nRuns 1 --model %s --budget %d --batch_size %d --output %s --seed %d'%(model, budget, bs, filename, exp_id*1024)) outputs.append(loadpklz('../'+filename)) results = [] optimal_xs = [o['optimal_xs'][0] for o in outputs] original_results = [o['optimal_values'][0] for o in outputs] num_nodes = [o['num_nodes'][0] for o in outputs] # Monte-Carlo estimation of the hitting probability (using 250k simulations) nimc = models.__dict__[model]() for initial_states in optimal_xs: initial_states = initial_states.tolist() np.random.seed(1024) result = evaluate_single_state(nimc, initial_states, nimc.k, mult=250000) results.append(result) print(result) savepklz({'results':results, 'num_nodes': num_nodes, 'bss':bss, 'original_results':original_results}, '../data/HooVer_%s_bs_exp%d.pklz'%(model, exp_id))
return np.mean(reward) if os.path.exists('oracle.pklz'): data = loadpklz('oracle.pklz') args = data['args'] mu = data['mu'] else: args = np.meshgrid(range(cmab.nArms), range(cmab.nZ), range(cmab.nU)) args = np.stack([arg.reshape(-1) for arg in args]).T args = [args[i] for i in range(args.shape[0])] with Pool(processes=25) as pool: mu = list(tqdm.tqdm(pool.imap(func, args), total=len(args))) savepklz({'mu': mu, 'args': args}, 'oracle.pklz') # import ipdb; ipdb.set_trace() # func(args[0]) args = np.stack(args) mu = np.array(mu) def print_zu(z, u): idx_zu = np.logical_and(args[:, 1] == z, args[:, 2] == u) args_zu = args[idx_zu, :] mu_zu = mu[idx_zu] print('z=%d, u=%d' % (z, u)) print(args_zu[:, 0]) print(mu_zu) print('-----')
try: # call hoover.estimate_max_probability with the model and parameters optimal_x, optimal_value, depth, memory_usage, n_nodes =\ hoover.estimate_max_probability(nimc, args.nHOOs, rho_max, sigma, budget_for_each_HOO, args.batch_size) except AttributeError as e: print(e) continue end_time = time.time() running_time = end_time - start_time running_times.append(running_time) memory_usages.append(memory_usage/1024.0/1024.0) optimal_values.append(optimal_value) optimal_xs.append(optimal_x) depths.append(depth) num_nodes.append(n_nodes) # Get the real number of queries from the model object. # It may be a little bit different from the budget. n_queries = nimc.cnt_queries print('budget: ' + str(args.budget)) print('running time (s): %.2f +/- %.3f'%(np.mean(running_times), np.std(running_times))) print('memory usage (MB): %.2f +/- %.3f'%(np.mean(memory_usages), np.std(memory_usages))) print('optimal_values: %.4f +/- %.5f'%(np.mean(optimal_values), np.std(optimal_values))) print('optimal_xs: '+str(optimal_xs)) print('depth: ' + str(depths)) print('number of nodes: ' + str(num_nodes)) print('actual n_queries: '+str(n_queries)) savepklz({'budget':n_queries, 'running_times':running_times, 'memory_usages':memory_usages, 'optimal_values':optimal_values, 'optimal_xs':optimal_xs, 'depths':depths, 'num_nodes':num_nodes}, args.output)
% (model, epsilon, delta, budget, s, exp_id), 'w') as f: f.write(output) with open( '../data/PlasmaLab_%s_nqueries_regret_epsilon%lf_delta%lf_budget%d_s%lf_exp%d.txt' % (model, epsilon, delta, budget, s, exp_id), 'r') as f: output = f.readlines() # Strips the newline character output = [line.strip() for line in output] seeds = output[1:-6] final_iter = [ int(line.split(' ')[3]) for line in seeds[-budget + 10::] ] final_iter = set(final_iter) original_results.append(float(output[-2].split('|')[2])) final_iter = [get_initial_state(seed) for seed in final_iter] tmp_results = [] print(final_iter) for initial_states in final_iter: tmp_results.append(nimc.get_prob(initial_states)) s_results.append(np.max(tmp_results)) results.append(s_results) savepklz({ 'results': results, 'ss': ss, 'budgets': _budgets }, '../data/PlasmaLab_%s_nqueries_regret_exp%d.pklz' % (model, exp_id)) os.system('rm ' + tmp_model_name + ' ' + tmp_spec_name)
model = 'ConceptualModel' exp_id = int(sys.argv[1]) if __name__ == '__main__': budget = 400000 results = [] original_results = [] ss = np.array([1.7, 2.6, 2.9, 3.2, 3.6]) * 1e-4 print(ss) for s in ss: filename = 'data/HooVer_%s_budget%d_s%lf_exp%d.pklz' % (model, budget, s, exp_id) os.system( 'cd ../; python3 check.py --nRuns 1 --sigma 1e-5 --model %s --args %lf --budget %d --output %s --seed %d' % (model, s, budget, filename, exp_id * 1024)) nimc = models.__dict__[model]() initial_states = loadpklz('../' + filename)['optimal_xs'][0] original_results.append( loadpklz('../' + filename)['optimal_values'][0]) result = nimc.get_prob(initial_states) results.append(result) savepklz( { 'results': results, 'ss': ss, 'original_results': original_results }, '../data/HooVer_%s_exp%d.pklz' % (model, exp_id)) # from IPython import embed; embed()