from os import system import json import numpy as np from scipy.integrate import dblquad import matplotlib.pyplot as plt Nb_run = 5 solvers = [ '-m num_greedy -n 45 -i 20 -r 0.08 -t 10000 -w 100 -a 0.01', '-m bit_greedy -n 45 -i 20 -r 0.08 -t 10000 -w 100 -a 0.01' ] datas = [] for solver in solvers: print("python3 draw_ert.py --nb-run " + str(Nb_run) + " --save-proba " + solver) system("python3 draw_ert.py --nb-run " + str(Nb_run) + " --save-proba " + solver) with open('proba.json') as json_file: data = json.load(json_file) datas.append(data) temps_max = 0 value_max = 0 value_min = np.inf for data in datas: for run in data: m = max([int(k) for k,v in run.items()]) if m > temps_max: temps_max = m m = max([v for k,v in run.items()]) if m > value_max: value_max = m m = min([v for k,v in run.items()]) if m < value_min: value_min = m def probability(data,time,value): num = 0 for attempt in data: good = False for t,v in attempt.items(): if int(t) <= time and v >= value: good = True break if good: num += 1 return num/len(data) probability = np.vectorize(probability, excluded=[0]) m = 0 v = 0 for i in range(len(solvers)): volume = dblquad(lambda x,y: probability(datas[i],x,y),value_min,value_max,0,temps_max)[0] print(solvers[i]) print(volume) if volume > v: m = i v = volume print("Best solveur:") print(solvers[m])