Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Numerical results for BBSANME

Replication material for

H. Mohammad, H. Choi, A. B. Abubakar, M. Abdullahi and M. S. Sarkinbai, Barzilai–Borwein-like spectral algorithm with norm descent line search for monotone operator equations, submitted to Numerical Algorithms.

This repository holds the full per-instance numerical tables behind Section 4 of the paper, together with the code that produced them and the raw run logs. Table2.pdf is the table archive that Section 4.1 links to.


What is here

Table2.tex, Table2.pdf     per-instance results for all 222 benchmark instances
tables/                    the six LaTeX tables of Section 4, and the script
                           that generates them from the logs in data/
verify/                    two independent checking scripts (see below)
data/                      raw run logs, one row per run
code/ExperimentA           benchmark monotone and pseudomonotone equations
code/ExperimentB           l2-regularised logistic regression on LIBSVM
code/ExperimentC           sparse signal recovery
code/ExperimentD           sensitivity of the line-search constant a

tables/make_tables.py reads only the logs in data/ and writes tabA.tex (Table 1), tabLambda.tex (Table 2), tabDatasets.tex (Table 3), tabLogres.tex (Table 4), tabSignal.tex (Table 5) and tabSens.tex (Table 6). No number in Section 4 is typed by hand.

Each code/Experiment* folder is self-contained: cd into it in MATLAB and run the driver named in its header. The five solver files are byte-identical across the four folders.

The algorithm

BBSANME solves H(x) = 0 for a continuous monotone operator H : R^n -> R^n, without derivatives and without a hyperplane projection:

d_0 = -H(x_0);              d_k = -lambda_k H(x_k),  k >= 1
s_{k-1} = x_k - x_{k-1};    y_{k-1} = H(x_k) - H(x_{k-1})
gamma_{k-1} = y_{k-1} + r s_{k-1}
lambda_k    = <gamma_{k-1}, s_{k-1}> / <gamma_{k-1}, gamma_{k-1}>
accept the first alpha in {1, rho, rho^2, ...} with
    ||H(x_k + alpha d_k)|| <= (1 + eta_k - a alpha) ||H(x_k)||,
    eta_k = 1/exp(k^2)

Reproducing the tables

cd code/ExperimentA
run_experimentA;                            % 888 runs -> resultsA_raw.csv
make_profiles_A('outdir','figuresA');       % the Dolan-More profiles
python3 make_table2.py resultsA_raw.csv Table2.tex
pdflatex Table2.tex && pdflatex Table2.tex

The other three experiments follow the same pattern; see code/RUN_INSTRUCTIONS.md.

Conventions, stated once

Function evaluations. #Fev counts every evaluation of H: the initial H(x_0), every backtracking trial including rejected ones, and, for the projection methods, the evaluation at the projection point. The same convention applies to every solver, which is what makes the counts comparable.

What counts as solved. A run is a solve only if the residual at the point the solver returns is at or below the tolerance. Every run carries a termination status: success, max_iterations, fev_budget, line_search_failure or numerical_error. No run is dropped from any log.

Performance profiles. Dolan and Moré (2002): r_{p,s} = c_{p,s} / min_s c_{p,s} and rho_s(tau) = |{p : r_{p,s} <= tau}| / n_p, with r = inf for a run that did not solve its instance, so a solver can never be rewarded for failing quickly.

Competitor parameters come from the papers that introduced the methods, and each solver file names the section and equation it was transcribed from. The one exception is ISCGPM's initial trial step tau, which its paper never gives a numeric value for; tau = 1 is used and flagged in the file.

Verification

Two scripts check the paper against the data, in opposite directions.

python3 verify/verify_claims.py                  # 89 checks
TEXFILE=/path/to/project2R2.tex python3 verify/verify_text.py    # 27 checks

verify_claims.py recomputes every quantity reported in Section 4 from the raw logs. verify_text.py does the converse: it pulls the numbers back out of the manuscript source with regular expressions and compares them with the logs, so the text is checked against the data rather than against anyone's memory. Both pass on the committed logs.

Experiment C: which run is which

run_experimentC.m supports three stopping protocols, selected by 'mode'.

  • common is the protocol the paper reports. Both methods stop at ||H(u_k)|| <= 1e-6 or 1000 iterations, the same rule used in Experiments A and B. Table 5 is built from data/resultsC_common.csv.
  • budget runs to a fixed evaluation budget with no early stop. Its traces are what Figures 5 to 7 plot, because a trajectory comparison is only informative if both methods are followed over the same budget, whereas the residual test stops them at different iterations. The problem instances are identical in the two cases.
  • stated applies the relative objective test of the submitted version. It is retained only so that the earlier results can be reproduced; it stops Modified Algorithm 2.1 while its objective is temporarily stagnant and far from the minimiser, which is why it was replaced.

The five instances are called Instance 1 to Instance 5 in the paper. They are produced by seeding MATLAB's default generator with 15, 16, 17, 18 and 19 in turn; those values are an implementation detail recorded only so the instances regenerate exactly.

Data

The LIBSVM instances used in Experiment B come from the LIBSVM data archive and are not redistributed here. The signal-recovery instances of Experiment C are generated from a recorded seed, so they reproduce exactly.

Environment

The results committed here were produced with MATLAB 26.1.0.3251617 (R2026a) Update 2 on Microsoft Windows (PCWIN64). Every driver prints and records its own environment line in the header of its output file, so the provenance of any log in data/ can be read off the file itself.

Base MATLAB only: no toolboxes, no mex files. The LIBSVM reader is plain MATLAB, so LIBSVM's libsvmread mex is not required.

Licence

Code is released under the MIT Licence (see LICENSE). The tables and result logs are released under CC BY 4.0.

Citation

If you use this material, please cite the paper. A CITATION.cff will be added once the article has a DOI.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages