import os import numpy as np import pandas as pd def table_plotting(model_names = ['PPO'],experiment_names = [''], execution_type = '', PI_proportion = True): if PI_proportion: df = pd.DataFrame(columns = ['Experiment','Model','All Costs (PI%)','Holding Costs (PI%)','Lost Sales (PI%)','Setup Costs (PI%)']) else: df = pd.DataFrame(columns = ['Experiment','Model','All Costs','Holding Costs','Lost Sales','Setup Costs']) path = os.path.dirname(os.path.abspath('__file__')) for experiment in experiment_names: for model in model_names: holding_costs_path = os.path.join(path,'results',model+'_'+experiment+'_'+'holding_costs'+'_'+execution_type+'.npy') lost_sales_path = os.path.join(path,'results',model+'_'+experiment+'_'+'lost_sales'+'_'+execution_type+'.npy') setup_costs_path = os.path.join(path,'results',model+'_'+experiment+'_'+'setup_costs'+'_'+execution_type+'.npy') all_holding_costs = np.load(holding_costs_path) all_lost_sales= np.load(lost_sales_path) all_setup_costs = np.load(setup_costs_path) all_costs = all_holding_costs+all_lost_sales+all_setup_costs if model == 'PI': pi_all_holding_costs = all_holding_costs pi_all_lost_sales_path = all_lost_sales pi_all_setup_costs_path = all_setup_costs pi_all_costs = all_costs if PI_proportion: try: df_temp = pd.DataFrame( { 'Experiment': experiment, 'Model':model, 'All Costs (PI%)': str(int(round(np.mean(all_costs - pi_all_costs)*100/np.mean(pi_all_costs),0)))+'$\pm$'+str(int(round(np.std((all_costs - pi_all_costs)*100/np.mean(pi_all_costs)),0))), 'Holding Costs (PI%)': str(int(round(np.mean(all_holding_costs - pi_all_holding_costs)*100/np.mean(pi_all_holding_costs),0)))+'$\pm$'+str(int(round(np.std((all_holding_costs - pi_all_holding_costs)*100/np.mean(pi_all_holding_costs)),0))), 'Lost Sales (PI%)': str(int(round(np.mean(all_lost_sales - pi_all_lost_sales_path)*100/np.mean(pi_all_lost_sales_path),0)))+'$\pm$'+str(int(round(np.std((all_lost_sales - pi_all_lost_sales_path)*100/np.mean(pi_all_lost_sales_path)),0))), 'Setup Costs (PI%)': str(int(round(np.mean(all_setup_costs - pi_all_setup_costs_path)*100/np.mean(pi_all_setup_costs_path),0)))+'$\pm$'+str(int(round(np.std((all_setup_costs - pi_all_setup_costs_path)*100/np.mean(pi_all_setup_costs_path)),0))) }, index=[0] ) except: print('error') else: df_temp = pd.DataFrame( { 'Experiment': experiment, 'Model':model, 'All Costs': str(int(round(np.mean(np.sum(all_costs,0)),0)))+'$\pm$'+str(int(round(np.std(np.sum(all_costs,0)),0))), 'Holding Costs': str(int(round(np.mean(np.sum(all_holding_costs,0)),0)))+'$\pm$'+str(int(round(np.std(np.sum(all_holding_costs,0)),0))), 'Lost Sales': str(int(round(np.mean(np.sum(all_lost_sales,0)),0)))+'$\pm$'+str(int(round(np.std(np.sum(all_lost_sales,0)),0))), 'Setup Costs': str(int(round(np.mean(np.sum(all_setup_costs,0)),0)))+'$\pm$'+str(int(round(np.std(np.sum(all_setup_costs,0)),0))) }, index=[0] ) df = df.append(df_temp) caption = 'Average cost and inventory level for each experimented model trained on 5 different seeds. One machine and two items scenario' print( df.to_latex( index=False, label='tab:coslidated_results', caption=caption,escape = False ) )