Closed dfridovi closed 1 month ago
For documentation purposes, at 5a1b9ad the stats are
julia> stats = SolverBenchmarks.summary_statistics(data)
(ip = (success_rate = 0.995, μ = 0.05398038283718592, σ = 0.00722662057721707), path = (success_rate = 0.995, μ = 0.007355797381909546, σ = 0.0016724800239494542))
So... we are about 10x slower than PATH.
And now only 5x slower
julia> data = SolverBenchmarks.benchmark(; data.ip_mcp, data.path_mcp, ip_kwargs = (; tightening_rate = 0.05, loosening_rate = 0.5, max_inner_iters = 5, tol = 1e-6))
julia> stats = SolverBenchmarks.summary_statistics(data)
(ip = (success_rate = 0.995, μ = 0.03280799303115578, σ = 0.005423971573040027), path = (success_rate = 0.995, μ = 0.007583776933668342, σ = 0.0022406690554635476))
Adds support for benchmarking against the PATH solver.
Adding additional solver kwargs:
tightening_rate
(default1.0
): if an inner loop succeeds, scalesε
by1 - exp(-tightening_rate * inner_iters)
loosening_rate
(default1.0
): if an inner loop fails, scalesε
by1 + exp(-loosening_rate * inner_iters)
verbose
(defaultfalse
): only print warnings iftrue
Also, adding a small amount of regularization to the Newton step computation for numerical stability.