Public reproduction code for the paper "A Unified Constraint-Repair Hierarchy for Feasible-by-Construction Optimization over Neural Network Surrogates" (Simone Scala, Jose Matias, Raf Dewil, Roberto Lopez — under review). This repository is the paper's reproduction layer: it regenerates the tables, plots, and result CSVs from the committed data bundle and held-out surrogates. It does not contain the manuscript itself.
It is the sequel to "Neural network response optimization via iterative domain contraction"
(cited here as Scala2026IDC). The first paper's constraint repair was exact only for a single
affine input-only constraint and fell back to rejection sampling for everything else. This work
replaces that step with a unified projection-repair hierarchy: a router decomposes the
constraint system into independent variable blocks and sends each to the cheapest exact-enough
operator — alternating projection on affine blocks, active-set Gauss–Newton on smooth nonlinear
manifolds, and projection through the frozen surrogate for output-coupled constraints — with
integer, allowed-set, and categorical structure satisfied by construction. Everything is
benchmarked exclusively on measured real-world data (no simulator) against the mixed-variable /
constrained state of the art on the same held-out surrogate and a shared evaluation budget.
The repair-hierarchy method is implemented in OpenNN (LGPL v3); this repository is the reproduction layer around it.
| Path | Contents |
|---|---|
experiments/ |
The reproduction code: data bundle, held-out surrogates, baseline runners, and the table/figure generators. Start at experiments/README.md. |
figures/ |
Result plots produced by experiments/make_figures.py (plus the method diagrams). |
tables/ |
LaTeX result tables produced by experiments/companion/benchmarks/make_baseline_tables.py (baseline confrontation matrix + time-to-target). |
The baselines, tables, and figures run from Python with no external data dependency. The IDC rows
additionally need the C++ driver built against a pinned OpenNN checkout. Full recipe:
experiments/docs/reproducing.md and
experiments/docs/OPENNN_BUILD.md.
cd experiments
python -m venv companion/.venv && companion/.venv/Scripts/activate # or: source .../bin/activate
pip install -r companion/requirements.txt
# regenerate the result plots (-> ../figures/) and the LaTeX tables (-> ../tables/)
python make_figures.py
cd companion/benchmarks && python make_baseline_tables.pyThe confrontation runners (companion/benchmarks/run_all.py and the per-case run_*.py) rerun the
optimizers and refresh the result CSVs the tables and plots are built from; the IDC rows use the
C++ driver, every other baseline runs from Python.
Every measured dataset is redistributed under experiments/companion/data/ in a slim modelling
view, for reproducibility only; each entry carries its source (publication, DOI, download URL) in
a description.txt and is used under its original license. Re-users must cite the original source.
See experiments/README.md.
@article{Scala2026IDCrepair,
author = {Scala, Simone and Matias, Jose and Dewil, Raf and Lopez, Roberto},
title = {A Unified Constraint-Repair Hierarchy for Feasible-by-Construction
Optimization over Neural Network Surrogates},
year = {2026},
note = {Under review}
}(Update the venue/DOI once the paper is accepted.) See CITATION.cff.
Reproduction code: MIT (see LICENSE). The IDC method is implemented in OpenNN
(LGPL-3.0-or-later), fetched/built separately and not redistributed here. Bundled datasets retain
their upstream licenses. See NOTICE.
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.