| |
| """ |
| Created on Mon Mar 6 16:30:32 2023 |
| |
| @author: leona |
| """ |
|
|
| import os |
| import pandas as pd |
| import matplotlib.pyplot as plt |
| import seaborn as sns |
|
|
|
|
|
|
|
|
| def save_graph(): |
| print("============================================================================================") |
| |
| |
| |
| |
| experiment_name = '25items_15machines_t100_i100' |
| env_name = experiment_name |
| |
| rolling_window = 10 |
| |
| |
| figures_dir = "results" |
| |
| if not os.path.exists(figures_dir): |
| os.makedirs(figures_dir) |
|
|
| |
| figures_dir = figures_dir + '/' + env_name + '_PPO'+'/' |
| if not os.path.exists(figures_dir): |
| os.makedirs(figures_dir) |
|
|
| |
|
|
| |
| BASE_DIR = os.path.dirname(os.path.abspath('__file__')) |
| |
| |
| LOG_DIR = os.path.join(BASE_DIR,'logs') |
| |
| log_dir = LOG_DIR + '/' + env_name + '_PPO' + '/' |
|
|
| |
| if not os.path.exists(log_dir): |
| print(f"Directory not found: {log_dir}") |
| else: |
| |
| try: |
| current_num_files = next(os.walk(log_dir))[2] |
| print(f"Number of files in the directory: {len(current_num_files)}") |
| except StopIteration: |
| print("No files in the directory.") |
|
|
| num_runs = len(current_num_files)-1 |
|
|
| all_runs_ppo = [] |
| |
| print(num_runs) |
|
|
| |
| for run_num in range(num_runs): |
| run_num = run_num + 1 |
| log_f_name = log_dir + '/PPO_' + env_name + "_log_" + str(run_num) + ".csv" |
| print("loading data from : " + log_f_name) |
| data = pd.read_csv(log_f_name) |
| data = pd.DataFrame(data) |
|
|
| print("data shape : ", data.shape) |
|
|
| all_runs_ppo.append(data) |
| print("--------------------------------------------------------------------------------------------") |
|
|
| |
| df_concat = pd.concat(all_runs_ppo) |
| |
| |
| |
| df_concat['reward_mean'] = df_concat['reward'].rolling(window=rolling_window, win_type='triang', min_periods=1).mean() |
| |
| |
| df_concat = df_concat.dropna().reset_index(drop=True) |
| |
| |
| reward_mean = df_concat.groupby('timestep')['reward_mean'].mean().iloc[rolling_window:] |
| reward_std = df_concat.groupby('timestep')['reward_mean'].std().iloc[rolling_window:] |
| |
| |
| sns.set_style("whitegrid") |
| fig, ax = plt.subplots(figsize=(10, 6)) |
| |
| sns.set_style("whitegrid") |
| |
| sns.lineplot(x=reward_mean.index, y=reward_mean, ax=ax,label='PPO') |
| ax.fill_between(reward_mean.index, reward_mean - reward_std, reward_mean + reward_std, alpha=0.2) |
| |
|
|
|
|
| |
| |
| |
| log_dir = LOG_DIR + '/' + env_name + '_PDPPO' + '/' |
|
|
| current_num_files = next(os.walk(log_dir))[2] |
| num_runs = len(current_num_files)-1 |
|
|
| all_runs = [] |
| |
| for run_num in range(num_runs): |
| run_num = run_num + 1 |
| log_f_name = log_dir + 'PDPPO_' + env_name + "_log_" + str(run_num) + ".csv" |
| print("loading data from : " + log_f_name) |
| data = pd.read_csv(log_f_name) |
| data = pd.DataFrame(data) |
|
|
| print("data shape : ", data.shape) |
|
|
| all_runs.append(data) |
| print("--------------------------------------------------------------------------------------------") |
|
|
| |
| df_concat = pd.concat(all_runs) |
| |
| |
| df_concat['reward_mean'] = df_concat['reward'].rolling(window=rolling_window, win_type='triang', min_periods=1).mean() |
| |
| |
| df_concat = df_concat.dropna().reset_index(drop=True) |
| |
| |
| reward_mean = df_concat.groupby('timestep')['reward_mean'].mean().iloc[rolling_window:] |
| reward_std = df_concat.groupby('timestep')['reward_mean'].std().iloc[rolling_window:] |
| |
| |
| sns.lineplot(x=reward_mean.index, y=reward_mean, ax=ax,label='PDPPO') |
| ax.fill_between(reward_mean.index, reward_mean - reward_std, reward_mean + reward_std, alpha=0.2) |
| |
| ax.legend() |
| |
| |
| |
| |
|
|
| ax.grid(color='gray', linestyle='-', linewidth=1, alpha=0.2) |
|
|
| ax.set_xlabel("Timesteps", fontsize=12) |
| ax.set_ylabel("Rewards", fontsize=12) |
|
|
| fig = plt.gcf() |
|
|
|
|
| print("============================================================================================") |
| fig.savefig(os.path.join(figures_dir, f'{experiment_name}.pdf'), dpi=300, bbox_inches='tight') |
| print("figure saved at : ", figures_dir) |
| print("============================================================================================") |
| |
|
|
| if __name__ == '__main__': |
|
|
| save_graph() |