Skip to content

Adds VectorNonlinearOracle support#334

Merged
andrewrosemberg merged 25 commits into
masterfrom
ar/VectorOfVariables
Jun 1, 2026
Merged

Adds VectorNonlinearOracle support#334
andrewrosemberg merged 25 commits into
masterfrom
ar/VectorOfVariables

Conversation

@andrewrosemberg
Copy link
Copy Markdown
Collaborator

Adds VectorNonlinearOracle support by creating a bridge for the nonlinear backend

@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.88%. Comparing base (ca1e88a) to head (cff5092).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #334      +/-   ##
==========================================
+ Coverage   91.19%   91.88%   +0.68%     
==========================================
  Files          16       17       +1     
  Lines        2509     2722     +213     
==========================================
+ Hits         2288     2501     +213     
  Misses        221      221              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@andrewrosemberg andrewrosemberg changed the title Adds VectorNonlinearOracle support [WIP] Adds VectorNonlinearOracle support Feb 2, 2026
@andrewrosemberg andrewrosemberg changed the title [WIP] Adds VectorNonlinearOracle support Adds VectorNonlinearOracle support Feb 8, 2026
@andrewrosemberg
Copy link
Copy Markdown
Collaborator Author

andrewrosemberg commented Feb 15, 2026

There is only one issue. if I create a model with diff_optimizer it defaults to use conic backend even though it is not compatible with vno. Trying to figure out how to avoid this.

Copy link
Copy Markdown
Member

@joaquimg joaquimg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like @blegat 's eyes on it.
For now, can we move the tests to seperate file only for VNO?

Comment thread src/NonLinearProgram/vno_bridge.jl
Comment thread src/NonLinearProgram/vno_bridge.jl Outdated
@blegat
Copy link
Copy Markdown
Member

blegat commented Mar 3, 2026

The way to transform duals is by making sure the term in the x gradient of the Lagrangian function stays the same.
Say you transform x in {f(x) = 0} with dual λ into f(x) in {0} with dual μ.
The terms in the Lagrangian are ⟨λ, x⟩ and ⟨μ, f(x)⟩.
Their derivative w.r.t. x are λ and ∇f(x)' * μ. So given the dual μ, we compute λ by multiplying by the transpose jacobian, this is what is done in jump-dev/MathOptInterface.jl#2890
Here, we should invert the transposed Jacobian.

Comment thread src/NonLinearProgram/vno_bridge.jl Outdated
@andrewrosemberg andrewrosemberg requested a review from blegat March 4, 2026 01:58
@andrewrosemberg andrewrosemberg requested a review from joaquimg March 4, 2026 01:58
@andrewrosemberg andrewrosemberg merged commit 1c5368b into master Jun 1, 2026
6 checks passed
@andrewrosemberg andrewrosemberg deleted the ar/VectorOfVariables branch June 1, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants