This repository is the public companion to the paper "Neural network response optimization via iterative domain contraction" (Scala, Lopez, Assumpção, Dewil at Advances in Computational Science and Engineering / AIMS).
https://doi.org/10.3934/acse.2026010
It contains the worked examples reported in §7 of the paper, the benchmark suite, the held-out validation protocol, and a reproduction recipe — all built on top of the open-source library OpenNN.
Status. The C++ worked examples (§7.3–§7.5), the BBOB / Olympus validation runners, the
photo_pce1021-seed sweep + aggregation, the surrogate-quality audit, the MO figure-regeneration, the pymoo/pycma baselines for the three §7 example problems (benchmarks/baselines/), and the in-tree datasets are present and runnable. OpenNN is pinned to the immutable tagv1.2-IDC-paperfor byte-reproducibility. Only the broader ~30-problem benchmark catalog the paper's §7.1 points to and its baseline sweep are run from the authors' workspace.
OpenNN (Artelnics/opennn) is an
open-source neural-networks C++ library released under LGPL v3.
IDC is implemented as the ResponseOptimization class inside OpenNN; this
companion repository ships worked examples and reproduction tooling
around that core, version-pinned to a specific OpenNN release so the
paper's numbers are byte-reproducible.
If you want to use IDC inside your own project, depend on OpenNN directly. This repo is the paper-reproduction layer.
git clone https://github.com/Siscanalysis/IDC.git
cd IDC
mkdir build && cd build
cmake .. # downloads + builds the pinned OpenNN release
cmake --build . --config Release
./bin/photo_pce10 # runs the §7.4 real-application SO case studyExpected output: a result.csv containing the IDC-recommended input
configuration and corresponding surrogate output, matching the headline
number in the §7.4 table of the paper.
./scripts/reproduce_paper.sh # build + the three C++ case studies + BBOB + OlympusThis configures and builds (fetching the pinned OpenNN), runs the three
C++ case studies (§7.3 MOEED13, §7.4 photo_pce10, §7.5 concrete_uci_mo),
then runs the §7.2 BBOB validation, the §6.3 f15–f24 stress test, and the
§7.4 Olympus real-data SO sweep. The three C++ examples finish in
seconds; the BBOB / Olympus runners take longer, dominated by the pymoo
baselines (IDC itself is sub-second per seed). It then runs the
photo_pce10 21-seed sweep + aggregation, renders the surrogate-quality
audit, and regenerates the §7 MO figures from the committed result CSVs.
The pymoo/pycma baselines for the three §7 example problems ship in
benchmarks/baselines/ and run on the same surrogate + YAML as the C++
binaries. Only the broader ~30-problem benchmark catalog (the §7.1
catalog) and its baseline sweep, plus the SO holdout cross-table, are run
from the authors' workspace and are not bundled in this companion.
The paper's §7 reports four headline case studies, split into a
validation block and a real-applications block. The two C++
neural-network case studies are under examples/; the analytical BBOB
validation is driven from benchmarks/bbob/:
| § | Example | Block | Type | Location |
|---|---|---|---|---|
| 8.2 | BBOB bi-objective mixed-integer | Validation | Analytical MO | benchmarks/bbob/ |
| 8.3 | MOEED13 economic-emission dispatch | Validation | Simulator MO | examples/moeed13/ |
| 8.4 | photo_pce10 (Olympus OPV) | Real application | Real SO | examples/photo_pce10/ |
| 8.5 | concrete_uci_mo (UCI Concrete) | Real application | Real MO | examples/concrete_uci_mo/ |
The broader catalog (~30 additional benchmark problems §7.1 refers to —
other BBOB suites, other Olympus tasks, classical engineering, chemistry
HTE) is reproduced from benchmarks/, plus two extra
real-data examples under
examples/additional/ that are not shown in
the manuscript.
benchmarks/ contains the validation and catalog runners used in the
paper:
run_olympus.py— Olympus real-data runner;--taskselects the task (defaultphoto_pce10; other tasks are not shown in the paper)bbob/run_bbob_suites.py— COCO suite driver;--suiteselects the suite (defaultbbob-biobj-mixint, the only one shown explicitly)bbob/run_bbob_stress.py— the f15–f24 hard-multimodal stress test (§6.3 limitations)baselines/run_baselines.py— pymoo/pycma baselines (CMA-ES/DE/GA/PSO, NSGA-II/III/MOEA-D) for the three §7 example problems, on the same surrogate + YAML as the C++ IDC binaries; emits feasibility and the mean constraint-violation magnitude (seebenchmarks/baselines/)make_convergence_figure.py— regenerates the §7.4 convergence figure from the committedextra_results/CSVsrequirements.txt— Python dependencies for the runners
See benchmarks/README.md for the switch
reference and details.
IDC/
├── README.md ← this file
├── LICENSE ← LGPL v3, matching OpenNN
├── CITATION.cff ← paper citation metadata
├── CMakeLists.txt ← C++ build entry point
├── cmake/
│ └── FindOrFetchOpenNN.cmake ← three-tier OpenNN resolution
├── examples/ ← C++ NN case studies (§7.3–§7.5) + additional/
├── benchmarks/ ← BBOB (§7.2) + catalog sweep + figures + switches
├── scripts/ ← reproduction orchestrators
├── data/ ← curated dataset subset
└── docs/
├── architecture.md ← IDC overview + how OpenNN is used
├── reproducing.md ← exact reproduction recipe
└── holdout_procedure.md ← held-out validation protocol
@article{Scala2026,
title = {Neural network response optimization via iterative domain contraction},
author = {Scala, Simone and Matias, Jose and Dewil, Raf and Lopez, Roberto},
journal = {Advances in Computational Science and Engineering},
volume = {9},
pages = {1--46},
year = {2026},
issn = {2837-1739},
publisher = {American Institute of Mathematical Sciences (AIMS)},
doi = {10.3934/acse.2026010},
url = {https://doi.org/10.3934/acse.2026010}
}https://doi.org/10.3934/acse.2026010
Released under the GNU Lesser General Public License v3.0 (LGPL-3.0-or-later) — matching OpenNN.
See LICENSE for the full text.
Funded by the European Union (Marie Skłodowska-Curie Grant Agreement no. 101169541 — NEUTEN). Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Research Executive Agency (REA). Neither the European Union nor the granting authority can be held responsible for them.