72 lines
2.7 KiB
Python
72 lines
2.7 KiB
Python
import os
|
||
import pandas as pd
|
||
|
||
# Directory where CSVs are located
|
||
csv_dir = './'
|
||
# List of CSV file names as you described
|
||
csv_files = [
|
||
'bt_randon_o=100_cp=10_ap=10_MAE=0_time=20240506 115257.csv',
|
||
'bt_randon_o=100_cp=10_ap=10_MAE=5_time=20240506 172702.csv',
|
||
'bt_randon_o=100_cp=10_ap=50_MAE=0_time=20240506 115600.csv',
|
||
'bt_randon_o=100_cp=30_ap=10_MAE=5_time=20240508 222143.csv',
|
||
'bt_randon_o=100_cp=50_ap=10_MAE=5_time=20240508 222622.csv',
|
||
'bt_randon_o=100_cp=50_ap=30_MAE=5_time=20240508 223352.csv',
|
||
'bt_randon_o=100_cp=50_ap=50_MAE=5_time=20240508 224801.csv',
|
||
'bt_randon_o=300_cp=50_ap=50_MAE=5_time=20240508 232751.csv',
|
||
'bt_randon_o=500_cp=50_ap=50_MAE=0_time=20240506 124308.csv',
|
||
'bt_randon_o=500_cp=50_ap=50_MAE=5_time=20240120 020115.csv'
|
||
]
|
||
|
||
|
||
# Prepare a list to accumulate the results
|
||
results = []
|
||
# Loop through all CSV files
|
||
for file in csv_files:
|
||
# Extract the scenario details from the file name
|
||
parts = file.split('_')
|
||
scenario = {
|
||
'Objects': int(parts[2].split('=')[1]),
|
||
'Pc': int(parts[3].split('=')[1]),
|
||
'Pa': int(parts[4].split('=')[1]),
|
||
'MAE': int(parts[5].split('=')[1]),
|
||
'Time': parts[6].split('=')[1] + '_' + parts[6].split('.')[0]
|
||
}
|
||
|
||
# Load CSV into DataFrame
|
||
df = pd.read_csv(os.path.join(csv_dir, file))
|
||
|
||
# Extract results for each algorithm
|
||
obtea = df.iloc[0]
|
||
baseline = df.iloc[1]
|
||
|
||
# Collect relevant data in a single row
|
||
result = {
|
||
'Objects': scenario['Objects'],
|
||
'Pc': scenario['Pc'],
|
||
'Pa': scenario['Pa'],
|
||
'MAE': scenario['MAE'],
|
||
'Literals': round(obtea['literals_obj_count'], 1),
|
||
'States Avg': round(obtea['state_avg'], 1),
|
||
'Actions Avg': round(obtea['act_avg'], 1),
|
||
'Baseline Cost Avg': round(baseline['cost_avg'], 1),
|
||
'OBTEA Cost Avg': round(obtea['cost_avg'], 1),
|
||
'Baseline Cond Tick Avg': round(baseline['cond_tick_avg'], 1),
|
||
'OBTEA Cond Tick Avg': round(obtea['cond_tick_avg'], 1),
|
||
'OBTEA WM Cond Tick Avg': round(obtea['wm_cond_tick_avg'], 1)
|
||
}
|
||
# Add this result to the list
|
||
results.append(result)
|
||
|
||
# Convert the list of results into a DataFrame
|
||
final_results = pd.DataFrame(results)
|
||
|
||
# Sort the DataFrame
|
||
final_results.sort_values(by=['MAE', 'Objects', 'Pc', 'Pa'], inplace=True)
|
||
|
||
# Display the final results
|
||
# Output the entire DataFrame
|
||
pd.set_option('display.max_columns', None)
|
||
pd.set_option('display.width', None)
|
||
print(final_results)
|
||
# 输出的表格,每行的内容是 Objects、Pc、Pa、MAE,csv中的 literals_obj_count、state_avg、act_avg,
|
||
# Baseline的cost_avg,OBTEA的cost_avg,Baseline的cond_tick_avg,OBTEA的cond_tick_avg,OBTEA的wm_cond_tick_avg |