You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
46 lines
1.3 KiB
#!/usr/bin/env ruby
|
|
require 'yaml'
|
|
yaml = YAML::load(File.open(ARGV[0]))
|
|
|
|
int_format = "%d,"
|
|
number_format = "%.2f,"
|
|
string_format = "%s,"
|
|
|
|
presolve_opt = yaml['sol_value'][0]
|
|
mir_opt = yaml['sol_value'][1]
|
|
wedges_opt = yaml['sol_value'][2]
|
|
mip_opt = yaml['mip_value']
|
|
|
|
if presolve_opt == mip_opt then
|
|
print (string_format * 6 + "\n") % (["---"] * 6)
|
|
else
|
|
|
|
orig_gap = (mip_opt-presolve_opt) / mip_opt.abs
|
|
mip_perf = (mir_opt-presolve_opt) / (mip_opt-presolve_opt)
|
|
w_perf = (wedges_opt-presolve_opt) / (mip_opt-presolve_opt)
|
|
|
|
n_cuts_mir = yaml['n_added_cuts']['depth'][0]
|
|
n_cuts_w = yaml['n_added_cuts']['depth'].values.reduce(:+) - n_cuts_mir
|
|
|
|
print int_format % n_cuts_mir
|
|
print int_format % n_cuts_w
|
|
print number_format % (100 * orig_gap)
|
|
print number_format % (100 * mip_perf)
|
|
print number_format % (100 * w_perf)
|
|
|
|
if presolve_opt == wedges_opt
|
|
print (string_format * 2) % (["---"] * 2)
|
|
else
|
|
mir_contrib = (mir_opt-presolve_opt) / (wedges_opt-presolve_opt)
|
|
w_contrib = (wedges_opt-mir_opt) / (wedges_opt-presolve_opt)
|
|
|
|
print number_format % (100 * mir_contrib)
|
|
print number_format % (100 * w_contrib)
|
|
end
|
|
|
|
w_improv = (wedges_opt-mir_opt) / (mip_opt-mir_opt)
|
|
|
|
# improvement
|
|
print (number_format + "\n") % (100 * w_improv.abs)
|
|
end
|