Importação dos módulos necessários para a análise dos dados
In [1]:
    
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
    
Definição de funções auxiliares para peparar os conjuntos de dados relativos a cada algoritmo
In [2]:
    
def algorithm_dataset(raw_data, algorithm_id, sorted_by="event", zero_values=False):
    data = raw_data.loc[[algorithm_id]]
    data = data.sort_values(by=sorted_by)
    if not zero_values:
        data = data[data.hypervolume != 0]
    return data
def comparison_dataset(ds):
    return ds.groupby(["algorithm","event"], as_index=False)["hypervolume"].mean()
def max_event(ds):
    return ds["event"].max()
    
Leitura dos dados a partir do arquivo de métricas dos resultados e preparação dos conjuntos de dados relativos a cada algoritmo
In [4]:
    
column_labels = ["algorithm", "instance", "execution", "event", "hypervolume"] 
data = pd.read_csv("../hypervolume/metrics.csv", 
                   delimiter=" ", 
                   header=None,     
                   names=column_labels,
                   index_col=column_labels[0])
    
In [7]:
    
ds_nsgaii = algorithm_dataset(data, "NSGAII", zero_values=True)
ds_nsgaii_dyn = algorithm_dataset(data, "NSGAIIDynamic", zero_values=True)
ds_smpso = algorithm_dataset(data, "SMPSO", zero_values=True)
#ds_smpso_dyn = algorithm_dataset(data, "SMPSODynamic", zero_values=True)
    
In [8]:
    
datasets = {
    'nsgaii': comparison_dataset(ds_nsgaii),
    'nsgaii_dyn': comparison_dataset(ds_nsgaii_dyn),
    'smpso': comparison_dataset(ds_smpso),
    #'smpso_dyn': comparison_dataset(ds_smpso_dyn)
}
min_event = min([max_event(ds) for ds in datasets.values()])
for k in datasets.keys():
    datasets[k] = datasets[k][:min_event+1]
    
In [9]:
    
datasets["nsgaii"].tail()
    
    Out[9]:
In [10]:
    
datasets["nsgaii_dyn"].tail()
    
    Out[10]:
In [11]:
    
datasets["smpso"].tail()
    
    Out[11]:
In [12]:
    
# datasets["smpso_dyn"].tail()
    
Geração dos gráficos comparativos
In [13]:
    
# f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
plt.title("NSGA-II x NSGA-II Dinamico")
plt.xlabel("Eventos dinâmicos (pontos de reescalonamento)")
plt.ylabel("Hipervolume")
plt.plot(datasets["nsgaii"].event, datasets["nsgaii"].hypervolume, "-ro", markersize=3, lw=.5, label="NSGAII")
plt.plot(datasets["nsgaii_dyn"].event, datasets["nsgaii_dyn"].hypervolume, "-go", markersize=3, lw=.5, label="NSGAIIDyn")
plt.legend()
plt.show()
    
    
In [ ]:
    
plt.title("SMPSO x SMPSO Dinamico")
plt.xlabel("Eventos dinâmicos (pontos de reescalonamento)")
plt.ylabel("Hipervolume")
plt.plot(datasets["smpso"].event, datasets["smpso"].hypervolume, "-ro", markersize=3, lw=.5, label="SMPSO")
plt.plot(datasets["smpso_dyn"].event, datasets["smpso_dyn"].hypervolume, "-go", markersize=3, lw=.5, label="SMPSODyn")
plt.legend()
plt.show()
    
In [14]:
    
plt.title("NSGA-II x SMPSO")
plt.xlabel("Eventos dinâmicos (pontos de reescalonamento)")
plt.ylabel("Hipervolume")
plt.plot(datasets["nsgaii"].event, datasets["nsgaii"].hypervolume, "-ro", markersize=3, lw=.5, label="NSGAII")
plt.plot(datasets["smpso"].event, datasets["smpso"].hypervolume, "-go", markersize=3, lw=.5, label="SMPSO")
plt.legend()
plt.show()
    
    
In [ ]:
    
plt.title("NSGA-II Dinamico x SMPSO Dinamico")
plt.xlabel("Eventos dinâmicos (pontos de reescalonamento)")
plt.ylabel("Hipervolume")
plt.plot(datasets["nsgaii_dyn"].event, datasets["nsgaii_dyn"].hypervolume, "-ro", markersize=3, lw=.5, label="NSGAIIDyn")
plt.plot(datasets["smpso_dyn"].event, datasets["smpso_dyn"].hypervolume, "-go", markersize=3, lw=.5, label="SMPSODyn")
plt.legend()
plt.show()
    
In [ ]: