Untitled

mail@pastecode.io avatar
unknown
plain_text
21 days ago
2.1 kB
5
Indexable
Never
import pandas as pd
import numpy as np
import os
import matplotlib.pyplot as plt
import seaborn as sns

SERVO = 3

folders = os.listdir('./Results')
servo_total= []

for folder in folders:
    if folder.startswith(f'morphology_{SERVO}') and not folder.endswith('.pdf') and not folder.endswith('png'):
        try:
            best = []
            runs = os.listdir(f'./Results/{folder}/evals/')
            for run in runs:

                data = pd.DataFrame(pd.read_csv('./Results/{}/evals/{}'.format(folder, run)))
                if data['best_eval'].iloc[-1] >= 5.5:
                    print(data['best_eval'].iloc[-1], run)
                    plt.figure()
                    plt.plot(data['best_eval'])
                    plt.title('Suspiciously Good: {}'.format(run))
                    plt.savefig(f'./Results/{folder}/{run}.pdf')
                    plt.close()
                    # plt.show()
                best.append(data['best_eval'])

            full_data = pd.DataFrame(best).T
            full_data['mean'] = full_data.mean(numeric_only=True, axis=1)
            full_data['std'] = full_data.std(numeric_only=True, axis=1)
            plt.figure()
            plt.plot(full_data['mean'])
            plt.fill_between(full_data.index.values, full_data['mean'] - full_data['std'], full_data['mean'] + full_data['std'], alpha = 0.3)
            plt.title(folder)
            plt.xlabel('Generations')
            plt.ylabel('Fitness')
            plt.savefig(f'Results/{folder}/{folder}.pdf')
            plt.close()
            # plt.show()
            servo_total.append(full_data['mean'])

        except FileNotFoundError:
            pass

full_servo = pd.DataFrame(servo_total).T
full_servo['mean'] = full_servo.mean(numeric_only=True, axis=1)
full_servo['std'] = full_servo.std(numeric_only=True, axis=1)
plt.figure()
plt.plot(full_servo['mean'])
plt.title(f'{SERVO}')
plt.xlabel('Generations')
plt.ylabel('Fitness')
plt.savefig(f'Results/{SERVO}.pdf')
plt.close()