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))
Esempio n. 5
0
    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('-----')
Esempio n. 6
0
        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)
Esempio n. 7
0
                    % (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)
Esempio n. 8
0
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()