Basin-Aware Hysteresis Guard / README.md
Beats tuned baseline
Basin-Aware Hysteresis Guard MVP
basin_guard_experiment.py verifies the proposed mechanism on the tilted double-well flow
[ \dot x=x-x^3+u. ]
The positive equilibrium is the desired branch. The script uses deterministic seeds and vectorized RK4 integration, and writes results.json.
Quantitative predictions tested
- Saddle-node boundary: solving
F=0anddF/dx=0predictsu_c = 2/(3 sqrt(3)) = 0.38490018; a root-count sweep should locate the three-root boundary at the same value. - Local stability is not global recovery: for every
0 <= u < u_c, the positive branch hasJ=1-3x^2<0while negative stable and saddle branches coexist. The sweep reports the branch Jacobians and root multiplicity. - Finite basin scaling: at
u=0, the desired equilibrium isx0=1and the separatrix isx=0. For Gaussian perturbationsx0+epsilon*z, basin membership predictsB=Phi(1/epsilon). The empirical sweep tests this scaling over six perturbation amplitudes.
Result
The first three mechanism checks pass numerically. In the finite-horizon controller comparison, threshold-only release has failure rate 0.1433 and the guard has failure rate 0.2000, with guard release rate 0.0. This is not evidence of the promised practical win: multiplying this scalar vector field by damping changes time scale but not the asymptotic basin boundary. The result therefore supports the paper's distinction but does not establish that this particular intervention improves recovery.
Run:
/home/maxwelhelp/main/bin/python3 basin_guard_experiment.py