Ejemplo n.º 1
0
def avrstats(listok,b_z):
    '''
    Parameters
    ----------
    listok : TYPE Array
        list of pok_typelist type
    d_z : TYPE DataFrame
        database of pok_typelist
    Returns array
    -------

    '''
    plt.close()
    array = []
    stats = [0,0,0,0,0,0]
    avr = 0
    podhodyat = {}
    for i in range (0,max_id+1):
        j=0
        while j<len(listok):
            if b_z["Type I"][i]==listok[j] and b_z["Type II"][i]==listok[j+1]:
                if podhodyat.get(i) is None:
                    podhodyat[i]=0
            j+=2
    for i in list(podhodyat):
        stats[0] += b_z["HP"][i]
        stats[1] += b_z["Atk"][i]
        stats[2] += b_z["Def"][i]
        stats[3] += b_z["SpA"][i]
        stats[4] += b_z["SpD"][i]
        stats[5] += b_z["Spe"][i]
        avr +=1
    arr = [stats[0]/avr,stats[1]/avr,stats[2]/avr,stats[3]/avr,stats[4]/avr,stats[0]/avr]
    arr2 = ["HP","Atk","Def","SpA","SpD","Spe"]
    colors = list('rgbkym')
    fig = plt.figure()
    a_x = fig.add_axes([0,0,1,1])
    a_x.bar(arr2,arr,color = colors)
    fig.set_figwidth(16)
    plt.title("Average Stats")
    plt.rc('xtick', labelsize=10)
    save("C:/Work/Graphics/Avr_stats")
    array.append(fig)
    # plt.show()
    plt.close()
    return array
Ejemplo n.º 2
0
def raspredelenie(typelist):
    '''
    Parameters
    ----------
    typelist : TYPE Array
        list of type
    Returns array
    -------
    False.

    '''
    array = []

    plt.close()
    listochek = pd.read_excel('C:/Work/Data/pdx.test.xlsx',sheet_name='Sheet1',index_col=0)
    for i in range(0,max_id+1):
        for j in typelist:
            if j == data["Type I"][i] or j==data["Type II"][i]:
                stats = pd.Series([data["HP"][i],data["Atk"][i],data["Def"][i],
                                   data["SpA"][i],data["SpD"][i],data["Spe"][i]],
                index=["HP","Atk","Def","SpA","SpD","Spe"])
                listochek = listochek.append(stats,ignore_index=True)
    fig, axi = plt.subplots(figsize=(10, 10))
    axi.scatter(x = listochek['Atk'], y = listochek['Def'])
    plt.xlabel("Attack")
    plt.ylabel("Defense")
    plt.rc('xtick', labelsize=10)
    array.append(fig)
    save("C:/Work/Graphics/AtkDef")
    # plt.show()
    plt.close()
    fig, axi = plt.subplots(figsize=(10, 10))
    axi.scatter(x = listochek['SpA'], y = listochek['SpD'])
    plt.xlabel("SpA")
    plt.ylabel("SpD")
    plt.rc('xtick', labelsize=10)
    array.append(fig)
    save("C:/Work/Graphics/SpASpD")
    plt.close()
    fig, axi = plt.subplots(figsize=(10, 10))
    axi.scatter(x = listochek['HP'], y = listochek['Spe'])
    plt.xlabel("HP")
    plt.ylabel("Spe")
    plt.rc('xtick', labelsize=10)
    array.append(fig)
    save("C:/Work/Graphics/HPSpe")
    plt.close()
    # plt.show()
    return array
Ejemplo n.º 3
0
#!/usr/bin/python3

import calc as cl
import database as db
import plot as pl
import view as vw

if __name__ == "__main__":
    db.connect()

    start_addr = db.get_start_address()
    stops = db.get_stop_positions()
    pos = db.get_unique_positions()
    addrs = cl.order_addresses(db.get_all_addresses(), stops)

    tot_dist = cl.total_distance(pos)
    print("Total route distance:", round(tot_dist, 2), "km")

    pl.init()
    pl.plot_addresses(start_addr, addrs)
    pl.plot_route(pos)
    pl.save()

    vw.copy_kml_public("/home/hlilje/Dropbox/")
    vw.write_kml_url()
    vw.view()

    db.close()
Ejemplo n.º 4
0
def train(env_name='PongNoFrameskip-v4',
          gamma=0.99,
          batch_size=32,
          replay_size=1000000,
          replay_start_size=50000,
          learning_rate=0.00025,
          adam_epsilon=0.0000001,
          sync_target_frames=10000,
          epsilon_decay_last_frame=1000000,
          epsilon_start=1.0,
          epsilon_final=0.1,
          train_frames=50000000,
          train_rewards=495,
          n_steps=3,
          save_checkpoints=True,
          run_name=None,
          use_double=True,
          use_dense=None,
          dueling=False,
          priority_replay=None,
          categorical=None,
          record=False,
          random_seed=None,
          index=0):
    n_atoms = v_min = v_max = None
    use_categorical = False
    if categorical is not None:
        use_categorical = True
        n_atoms = categorical['n_atoms']
        v_min = categorical['v'][0]
        v_max = categorical['v'][1]

    alpha = beta = None
    use_priority_replay = False
    if priority_replay is not None:
        use_priority_replay = True
        alpha = priority_replay['alpha']
        beta = priority_replay['beta']

    print(f'Training DQN on {env_name} environment')
    print(f'Params: gamma:{gamma}, batch_size:{batch_size}, replay_size:{replay_size}')
    print(f'        replay_start_size: {replay_start_size}, learning_rate:{learning_rate}')
    print(f'        sync_target_frames: {sync_target_frames}, epsilon_decay_last_frame:{epsilon_decay_last_frame}')
    print(f'        epsilon_start: {epsilon_start}, epsilon_final: {epsilon_final}, train_frames: {train_frames}')
    print(f'        train_rewards: {train_rewards}, n_steps: {n_steps}, save_checkpoints: {save_checkpoints}')
    print(f'        run_name: {run_name}, use_double: {use_double}, use_dense: {use_dense}, dueling: {dueling}')
    if use_categorical:
        print(f'        categorical - n_atoms: {n_atoms}, v_min: {v_min}, v_max: {v_max}')
    if use_priority_replay:
        print(f'        priority buffer - alpha: {alpha} beta: {beta}')
    print(f'        random_seed: {random_seed}, index: {index}')
    f_name = env_name + "_" + run_name if run_name is not None else env_name
    env = wrappers.make_env(env_name, record, f_name)
    if random_seed is not None:
        tf.random.set_seed(random_seed)
        env.seed(random_seed)
    optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate, epsilon=adam_epsilon)
    agent = Agent(env, replay_size, optimizer, batch_size, n_steps, gamma, use_double, use_dense, dueling,
                  use_categorical, n_atoms, v_min, v_max, train_frames if train_frames is not None else 5000000)
    if save_checkpoints:
        agent.load_checkpoint(f'checkpoints/{f_name}/checkpoint')

    total_rewards = []
    rewards_mean_std = []
    frame_idx = 0
    count = 0
    update_count = 0
    ts_frame = 0
    ts = time.time()
    best_mean_reward = None

    while True:
        frame_idx += 1
        epsilon = max(epsilon_final, epsilon_start - frame_idx / epsilon_decay_last_frame)

        reward = agent.play_step(epsilon)
        if reward is not None:
            count += 1
            total_rewards.append(reward)
            speed = (frame_idx - ts_frame) / (time.time() - ts)
            ts_frame = frame_idx
            ts = time.time()
            mean_reward = np.mean(total_rewards[-100:])
            print(f'{index}:{frame_idx}: done {count} games, mean reward: {mean_reward}, eps {epsilon}, speed: {speed}')
            if best_mean_reward is None or best_mean_reward < mean_reward:
                # Save network
                if best_mean_reward is not None:
                    if save_checkpoints:
                        agent.save_checkpoint(f'./checkpoints/{f_name}/checkpoint')
                    print(f'Best mean reward updated {best_mean_reward} -> {mean_reward}, model saved')
                best_mean_reward = mean_reward
            if train_frames is not None:
                if frame_idx >= train_frames:
                    print(f'Trained for {frame_idx} frames. Done.')
                    break
            if train_rewards is not None:
                if mean_reward >= train_rewards:
                    print(f'Reached reward: {mean_reward}. Done.')
                    break

        if agent.buffer_size() < replay_start_size:
            continue

        if frame_idx % sync_target_frames == 0:
            agent.sync_weights()
        agent.step(gamma, True if update_count % 1000 == 0 else False)
        update_count += 1
        rewards_mean_std.append({'reward': total_rewards[-1:][0],
                                 'step': update_count})
    env.close()
    plot.directory_check('./plots')
    plot.plot(rewards_mean_std, f'./plots/{f_name}.png', f_name)
    plot.directory_check('./data')
    plot.save(rewards_mean_std, f'./data/{f_name}.csv')
def main():
    np.random.seed(0)

    parser = ArgumentParser()
    parser.add_argument('--input_dir', type=str, default='results')
    parser.add_argument('--output_dir', type=str, default='plots')
    parser.add_argument('--pdf', action='store_true')
    args = parser.parse_args()

    if not os.path.exists(args.output_dir):
        os.mkdir(args.output_dir)

    # Get unique runs (ignoring seeds)
    keys = set()
    for f in os.listdir(args.input_dir):
        k = re.sub('_seed-[0-9]+(.txt)?', '', f)
        keys.add(k)

    # Compute average performance and store in dictionary
    bar_dict = defaultdict(dict)
    for k in sorted(keys):
        mean, std = compute_avg_return(k, args.input_dir)
        # print(k, mean, std)
        env = fix_env_name(grab('env-()', k))
        rmem_type = grab('rmem-()', k)
        bar_dict[env].update({rmem_type: (mean, std)})

    envs_and_scores_and_errors = []
    for env in bar_dict.keys():
        print(env)
        random_mean, _ = random_baseline(env, n=100)
        uniform_mean = bar_dict[env]['ReplayMemory'][0]
        uniform_std = bar_dict[env]['ReplayMemory'][1]
        stratified_mean = bar_dict[env]['StratifiedReplayMemory'][0]
        stratified_std = bar_dict[env]['StratifiedReplayMemory'][1]

        # print('A', stratified_mean, stratified_std)
        # print('B', uniform_mean, uniform_std)
        # print(random_mean)

        # Assumes that the random baseline is a deterministic quantity
        relative_perf = 100.0 * (stratified_mean -
                                 random_mean) / (uniform_mean - random_mean)
        std_dev = 100.0 * std_divide(stratified_mean - random_mean,
                                     stratified_std,
                                     uniform_mean - random_mean, uniform_std)
        envs_and_scores_and_errors.append((env, relative_perf, std_dev))

    # Plot
    plt.style.use('seaborn-darkgrid')
    plt.figure()
    ax = plt.gca()

    envs_and_scores_and_errors = sorted(envs_and_scores_and_errors,
                                        key=lambda x: x[1])
    envs, scores, errors = zip(*envs_and_scores_and_errors)
    bars = ax.barh(envs, scores, zorder=3)
    error_bars = ax.errorbar(scores,
                             envs,
                             xerr=errors,
                             ls='none',
                             color='black',
                             capsize=3,
                             zorder=2)
    for i, s in enumerate(scores):
        ax.text(s * 0.82,
                i - 0.125,
                '{:0.2f}%'.format(s),
                color='white',
                zorder=4)

    ylim = [-0.75, 10.75]
    plt.ylim(ylim)
    plt.vlines(100.,
               ymin=ylim[0],
               ymax=ylim[1],
               linestyles='dashed',
               color='slategray',
               zorder=0)
    save('bar_plot', args.output_dir, args.pdf, bbox_inches='tight')
    plt.close()
Ejemplo n.º 6
0
from package_simulation import simulate_packages
from scheduling import round_robin, fair_queuing

print('# =============== #')
print('# Scheduling Plot #')
print('# =============== #')
print('© Dominic Plein 11/2020')

# Plot
fig, (ax1, ax2, ax3, ax4, ax5) = plot.init_plot()

# Packages
sources, max_end_time = simulate_packages(15, 40, 10)
plot.plot_broken_barh(ax1, 'Eintreffende Pakete', sources, max_end_time)

# Round Robin (abbreviated as rr)
sources_rr, diff_rr, max_end_time_rr, data_rr = round_robin(deepcopy(sources))
plot.plot_broken_barh(ax2, 'Round-Robin', sources_rr, max_end_time_rr, diff_rr)
plot.plot_scatter(ax4, 'Round-Robin (Auswertung)', data_rr)

# Fair Queuing (abbreviated as fq)
sources_fq, diff_fq, max_end_time_fq, data_fq = fair_queuing(deepcopy(sources))
plot.plot_broken_barh(ax3, 'Fair Queuing', sources_fq, max_end_time_fq,
                      diff_fq)
plot.plot_scatter(ax5, 'Fair Queuing (Auswertung)', data_fq)

# Plot
ax1.set_xlim(0, max(max_end_time_rr, max_end_time_fq))
plot.save(fig)
plot.show_plot()
Ejemplo n.º 7
0
            while y_target == y:
                y_target = torch.randint(low=0, high=9, size=(1, ))

            success, n_queries, adv, y_hat = attack.attack(model,
                                                           x,
                                                           y_target,
                                                           target=args.target)
        else:
            success, n_queries, adv, y_hat = attack.attack(model, x, y)

        if success and args.save:
            # plot.images(x.squeeze(), y, adv.squeeze().detach(), y_hat)
            # plot.history(history)
            if images_saved < args.n_images:
                plot.save(
                    adv, y_hat, "img_%d_%.2f_%s" %
                    (i, args.epsilon, attack.__class__.__name__))
                images_saved += 1

        if success:
            t_queries.append(n_queries)
            n_success += 1

        success_rate = n_success / (i + 1)
        pbar.set_description("n_success %d success_rate %.5f" %
                             (n_success, success_rate))
        pbar.update(1)
        t_count += 1
        if t_count == args.n_samples:
            break
    pbar.close()