Gap Atlas of 505 Global Optimization Instances: GEAR and 12 AMPL Solvers
Summary. For every instance of the 505-instance benchmark the atlas shows which solvers certify it within 180 s, how the gap between the best known optimum and each solver’s certified bound closes over time, the objectives returned by the local solvers, the problem formulation, the command that reproduces each run, and the complete logs. Choose any subset of GEAR, the six global and the six local solvers; instances are then grouped by who certifies them among the selected solvers.
1. Definitions and data
- Solvers. GEAR: the final version evaluated in the paper (configuration
int3p_crownmerge.yaml), one instance at a time on one RTX 5090 with 16 CPU threads. Global solvers through AMPL: Gurobi (Gurobi 13.0.3), SCIP (SCIP 10.0.2, configurations2_obbt_pow1: stronger RLT and OBBT, squared sums not expanded), BARON (BARON 25.12.10), Couenne (Couenne 0.5.8), LindoGlobal (LINDO Global 16.0.7099.148) and Xpress (Xpress 9.8.1). Local solvers through AMPL: Knitro (Artelys Knitro 15.1.0), IPOPT (Ipopt 3.14.19), CONOPT (CONOPT 4.38.1), LGO (LGO 2015-01-17), MINOS (AMPL/MINOS 5.51) and SNOPT (SNOPT 7.5-1.2). Each AMPL solver runs in the final configuration of the baseline study (baselines/configs/candidates/<solver>/). All runs used the same workstation (Ryzen 7 9700X, RTX 5090, 16 logical CPUs) and a 180 s wall-clock limit. - Certification (the scoring of the paper). A point counts only if it satisfies every original constraint and bound to 10−6. A global solver certifies an instance when its own bounds have relative gap (P − D) / max(1, |P|, |D|) ≤ 10−4 and the returned point is feasible and has that objective (criterion (b) of the released baseline study); a certificate contradicted by a better feasible point from any run is withdrawn, and an infeasibility verdict counts when two global solvers confirm it. A local solver has no dual bound; it is credited when its feasible point matches the tightest certified bound of a global solver within the same tolerance. GEAR is scored strictly (its returned point is replayed at 10−6) and its certified infeasibility verdict (mosel_start_folioqpgraph) counts as the baselines’ does.
- Reference optimum. P* is the best objective among the points feasible to 10−6 returned by any of the 13 solvers (GEAR’s where its point passed the replay). Maximization problems are negated, so every gap is a minimization gap.
- Gap curves. gap(t) = P* − D(t) on linear axes: time from 0 to 180 s, gap from 0 to 1.1 times the largest gap of the curves shown after each curve’s first bound (rescaled for every instance and selection); a first bound above that range, often the loose bound before presolve, is drawn at the top edge with an arrow, and its value is in the arrow’s tooltip. D(t) is the best bound in the solver’s progress table up to time t (GEAR: its root bounds and the bound of every branch-and-bound iteration), never above the bound of the solver’s final summary, which is the bound that is scored (SCIP’s concurrent display and Couenne’s node log sometimes print higher values). A curve starts at the first finite bound. The dashed line is the required gap ε = 10−4·max(1, |P*|); a dot marks the end of a certified run (a solver stops once its own gap closes); a square marks a solver whose log has a final bound but no progress table. Time is the solver’s own clock; GEAR’s bounds carry the clock of the operation that produced them, shifted so that the run ends at its process time. Times past the limit (driver overhead) are drawn at 180 s. Local solvers report no bound and appear in the table under the plot.
- Commands. Each entry lists the command that reproduces each selected solver’s run. GEAR’s is the one recorded in its log
(
#CMD), with<gear>the GEAR source tree,<env>the Python environment,benchmarksthe benchmark root andconfigsthe configuration directory. The AMPL solvers run one instance through the baseline harness of this repository (baselines/harness/bl.py wave) with the configuration file of their final run. - Logs. Every entry links to the complete logs of the runs shown, with local paths and the host name replaced. The AMPL solvers’ logs are the
copies in the release archives
logs/<solver>.tar.xz(SCIP: thes2_obbt_pow1run); logs longer than 1 MB keep their first and last 400 kB, with the number of omitted lines marked. TheConfigurations:block at the top of a GEAR log lists the argument defaults, not the settings in effect; those are in the configuration file linked above. - Formulations. The AMPL models as released (GAMS-converted scalar form). Variable domains are grouped over consecutive indices; models longer than about 6,000 characters are truncated, and the full file is under the stated path of the released benchmark.