Add RunwayLibProtectionLevels package#152
Open
RomeoV wants to merge 14 commits into
Open
Conversation
Implements compute_zero_fault_protection_level() using Nelder-Mead with log-barrier penalties and progressive tightening, followed by a line search to push to the constraint boundary. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ction - direction=0 (default) computes both lo/hi, warm-starting hi with flipped Δy - Val dispatch on direction for different return types - Unified _project_to_boundary replaces ad-hoc shrink/expand logic - verbose kwarg prints formatted results table with solve count - Printf dep added for table formatting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bilevel optimization (Ipopt outer + NonlinearSolve IFT inner) for ~30x faster zero-fault protection level computation. Replaces pinv with LU decomposition in integrity.jl for AD compatibility, enabling direct reuse of RunwayLib's compute_whitened_parity_residual. Relaxes LinearSolve upper bound to allow NonlinearSolveBase 2.11.2. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ectionLevels Moves compute_zero_fault_protection_level (NelderMead) and compute_worst_case_fault_direction_and_slope from RunwayLib into the RunwayLibProtectionLevels library package. Removes unused SparseArrays import from integrity.jl. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Verifies both solvers agree within 3% (or 0.1m absolute) for all three pose components. Also fixes Size-based reshape incompatibility in NM code. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add protection-levels.jl notebook showcasing the full PL workflow (pose estimation, integrity check, Ipopt/NelderMead PL comparison with plot). Include launch.jl to resolve local packages before opening Pluto. Fix stale `constraints` arg in optimization.jl from rebase, and update notebook CI to conditionally dev RunwayLibProtectionLevels. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The `dir *` multiplier was flipping the sign for `lo`, making it always positive. NelderMead returns `pos - ref` directly (negative for lo), so Ipopt should match. Updated test accordingly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This function is part of integrity monitoring, not protection levels. Move it back to src/integrity/integrity.jl and re-export from RunwayLib. RunwayLibProtectionLevels now imports and re-exports it instead of defining its own copy. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
libs/RunwayLibProtectionLevels/package with Ipopt-based gradient protection level computation (~38x faster than NelderMead)pluto_notebooks/protection-levels.jl) demoing the full PL workflow: pose estimation, integrity check, Ipopt vs NelderMead comparison with bar chartlaunch.jlscript for local development with local package resolutionTest plan
🤖 Generated with Claude Code