Skip to content

Commit c8d1220

Browse files
committed
docs: Expand benchmark section to cover all 35 MGH problems and HZ
Update the README's benchmark blurb so it reflects the current state of `CppNumericalSolversBenchmark`: the suite now covers all 34 Moré-Garbow-Hillstrom unconstrained problems plus MGH-35 Chebyquad under L-BFGS-B, and the library ships a Hager-Zhang line search as an alternative to the default Moré-Thuente. The place summary (1st on 18 of 31 converged rows, 2nd on 4, 3rd on 3, 4th on 6) is measured against the three reference libraries -- ties between MT and HZ do not count, only ties or losses vs Fortran/libLBFGS/LBFGSpp -- so the numbers directly answer "how does cppoptlib compare to the canonical implementations?"
1 parent 9b19b24 commit c8d1220

1 file changed

Lines changed: 14 additions & 19 deletions

File tree

README.md

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,20 @@ license, making it suitable for both academic and commercial projects.
1313

1414
## Benchmarked against the references
1515

16-
On the Moré-Garbow-Hillstrom (1981) test set CppNumericalSolvers is
17-
competitive with, and on several problems faster than, the canonical
18-
reference implementations (Nocedal's Fortran L-BFGS / L-BFGS-B 3.0,
19-
Naoaki Okazaki's [libLBFGS](https://github.com/chokkan/liblbfgs),
20-
Yixuan Qiu's [LBFGSpp](https://github.com/yixuan/LBFGSpp)). A small
21-
sample with default tolerances, `iters / nfev`:
22-
23-
| Problem | cppoptlib | Fortran | libLBFGS | LBFGSpp |
24-
| ------------------------ | --------- | ------- | -------- | ------- |
25-
| MGH 1 Rosenbrock 2D | 37 / 45 | 47 / 48 | 37 / 45 | 40 / 55 |
26-
| MGH 14 Wood 4D | 87 / 114 | 117/118 | 88 / 116 | 95 /133 |
27-
| MGH 20 Watson 6D | 55 / 60 | 86 / 87 | 63 / 71 | 67 / 79 |
28-
| MGH 35 Chebyquad 50D (B) | 179 / 199 | 206/229 || 241/262 |
29-
30-
Across 12 Moré-Garbow-Hillstrom problems CppNumericalSolvers wins 3
31-
outright, ties 4, and loses the rest by small margins while converging
32-
to the same minimum on every row. The full reproducible benchmark --
33-
with per-library driver sources, submodule-pinned reference libraries,
34-
and auto-generated results -- lives in
16+
On the full 34-problem Moré-Garbow-Hillstrom (1981) unconstrained test
17+
set plus MGH-35 Chebyquad with box bounds, CppNumericalSolvers is
18+
competitive with -- and on most problems faster than -- the canonical
19+
reference implementations (Nocedal's Fortran L-BFGS and L-BFGS-B 3.0,
20+
Naoaki Okazaki's [libLBFGS](https://github.com/chokkan/liblbfgs), and
21+
Yixuan Qiu's [LBFGSpp](https://github.com/yixuan/LBFGSpp)). Across
22+
the 31 problems where cppoptlib converges, it takes 1st place on 18
23+
(7 outright, 11 tied with a reference), 2nd on 4, 3rd on 3, and 4th
24+
on 6, measured vs the three reference libraries. A Hager-Zhang line
25+
search is available behind a template parameter as an alternative to
26+
the default Moré-Thuente. cppoptlib converges to the same minimum as
27+
the reference libraries on every row. The full reproducible benchmark
28+
-- with per-library driver sources, submodule-pinned reference
29+
libraries, and auto-generated results -- lives in
3530
**[CppNumericalSolversBenchmark](https://github.com/PatWie/CppNumericalSolversBenchmark)**.
3631

3732
## Core Features

0 commit comments

Comments
 (0)