@@ -86,9 +86,21 @@ def safe_best(path, penalty):
8686
8787 inst_sizes = list (perfs .keys ())
8888 inst_sizes .reverse ()
89+ best = list (perfs [inst_sizes [0 ]].keys ())[0 ]
90+ best_perf = perfs [inst_sizes [0 ]][best ]
91+
92+ # Check if last entry had enough evaluation
8993 for i , isize in enumerate (inst_sizes ):
90- if len (perfs [isize ]) > 1 :
91- nn_1 = sum (1 for v in data [list (perfs [isize ].keys ())[0 ]].values ()
94+ if len (perfs [isize ]) > 1 and len (inst_sizes ) > i + 1 :
95+ if (perfs [isize ][list (perfs [isize ].keys ())[0 ]]
96+ < perfs [inst_sizes [i + 1 ]]
97+ [list (perfs [inst_sizes [i + 1 ]].keys ())[0 ]]):
98+ best = list (perfs [isize ].keys ())[0 ]
99+ best_perf = perfs [isize ][best ]
100+ break
101+
102+ nn_1 = sum (1 for v in data [list (perfs [isize ].keys ())[0 ]]
103+ .values ()
92104 if not math .isnan (v ))
93105 nn_sum_1 = sum (v for v in data [list (perfs [isize ]
94106 .keys ())[0 ]].values ()
@@ -99,18 +111,11 @@ def safe_best(path, penalty):
99111 .keys ())[0 ]].values ()
100112 if not math .isnan (v ))
101113
102- if (perfs [isize ][list (perfs [isize ].keys ())[0 ]]
103- < perfs [inst_sizes [i + 1 ]]
104- [list (perfs [inst_sizes [i + 1 ]].keys ())[0 ]]):
105- best = list (perfs [isize ].keys ())[0 ]
106- best_perf = perfs [isize ][best ]
107- break
108-
109- elif nn_1 >= nn_2 and nn_sum_1 <= nn_sum_2 :
114+ if nn_1 < nn_2 and nn_sum_1 < nn_sum_2 :
110115 best = list (perfs [isize ].keys ())[0 ]
111116 best_perf = perfs [isize ][best ]
112117
113- elif nn_1 <= nn_2 and nn_sum_1 >= nn_sum_2 :
118+ elif nn_1 > nn_2 and nn_sum_1 > nn_sum_2 :
114119 best = list (perfs [inst_sizes [i + 1 ]].keys ())[0 ]
115120 best_perf = perfs [inst_sizes [i + 1 ]][best ]
116121
0 commit comments