Skip to content

Commit 373d271

Browse files
committed
Improve compare_results script to generate tables for paper
1 parent 3effba1 commit 373d271

File tree

1 file changed

+40
-3
lines changed

1 file changed

+40
-3
lines changed

Diff for: batch/compare_results.py

+40-3
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def plot_runtime_stats(suspect):
9292
pct_data = pd.Series(pct_done, index=data.values)
9393
fig = plt.figure(figsize=(8, 4))
9494
pct_data.plot(logx=True, fig=fig)
95-
plt.xlabel('Time ($s$)')
95+
plt.xlabel('Time ($\log s$)')
9696
plt.ylabel('Instances Processed ($\%$)')
9797
plt.ylim([0, 1])
9898
plt.xlim([pct_data.index.min(), pct_data.index.max()])
@@ -114,6 +114,19 @@ def compute_results_table(suspect, minlplib):
114114
return results.pivot(index='expected', columns='have', values='count').fillna(0)
115115

116116

117+
def write_problem_list(filename, df, columns=3):
118+
with open(filename, 'w') as f:
119+
count = 0
120+
for name in df.index:
121+
f.write(' ' + str(name.replace('_', '\\_')) + ' ')
122+
if count >= (columns - 1):
123+
f.write('\\\\\n')
124+
count = 0
125+
else:
126+
f.write(' & ')
127+
count += 1
128+
129+
117130
if __name__ == '__main__':
118131
args = argparse.ArgumentParser()
119132
args.add_argument('suspect_input')
@@ -132,6 +145,8 @@ def compute_results_table(suspect, minlplib):
132145

133146
print_error_statistics(suspect)
134147

148+
suspect_orig = suspect.set_index('name')
149+
135150
# filter out errors
136151
suspect = suspect[suspect.status == 'ok']
137152

@@ -153,8 +168,18 @@ def compute_results_table(suspect, minlplib):
153168
suspect.drop('gams03', inplace=True)
154169
minlplib.drop('gams03', inplace=True)
155170

156-
minlplib.conscurvature.replace({'unknown': 'indefinite'}, inplace=True)
157-
minlplib.objcurvature.replace({'unknown': 'indefinite'}, inplace=True)
171+
cvx_replace = {
172+
'unknown': 'indefinite',
173+
'nonconcave': 'indefinite',
174+
'nonconvex': 'indefinite',
175+
}
176+
minlplib.conscurvature.replace(cvx_replace, inplace=True)
177+
minlplib.objcurvature.replace(cvx_replace, inplace=True)
178+
179+
type_replace = {
180+
'signomial': 'nonlinear'
181+
}
182+
minlplib.objtype.replace(type_replace, inplace=True)
158183

159184
diff = suspect == minlplib
160185
all_good = diff.all(axis=1)
@@ -178,3 +203,15 @@ def compute_results_table(suspect, minlplib):
178203

179204
print(' * Objective Type')
180205
print(compute_results_table(suspect.objtype, minlplib.objtype))
206+
207+
good_idx = all_good[all_good].index
208+
wrong_idx = all_good[~all_good].index
209+
correct_result = suspect_orig.loc[good_idx]
210+
wrong_result = suspect_orig.loc[wrong_idx]
211+
212+
correct_lt2 = correct_result[correct_result.runtime <= 2]
213+
correct_lt10 = correct_result[(correct_result.runtime > 2) & (correct_result.runtime <= 10)]
214+
correct_gt10 = correct_result[correct_result.runtime > 10]
215+
216+
compare_wrong = wrong_result[STRUCTURE_COLUMNS].join(minlplib[STRUCTURE_COLUMNS], how='left', lsuffix='_have', rsuffix='_expected')
217+
compare_wrong['runtime'] = wrong_result['runtime']

0 commit comments

Comments
 (0)