Skip to content

[WIP] MVP for lower dimensional reformulation#1

Draft
dfridovi wants to merge 55 commits intomainfrom
lower-dimensional-reformulation
Draft

[WIP] MVP for lower dimensional reformulation#1
dfridovi wants to merge 55 commits intomainfrom
lower-dimensional-reformulation

Conversation

@dfridovi
Copy link
Copy Markdown
Member

@dfridovi dfridovi commented Jul 18, 2025

Reworking the KKT system to be lower dimensional by handling each nested problem as follows:

  • use an interior point relaxation on all inequality constraints
  • keep the primal feasibility constraints, dual feasibility, and complementarity (actually, relax via the interior point scheme and ignore dual feasibility and interior point slack feasibility constraints)
  • every time we move up a level in the hierarchy, do the following:
    1. add the constraints above to a list
    2. create a constraint on the current level that enforces Lagrangian stationarity of the lower level, but only taking the gradient wrt the upper level primal and not wrt duals or slacks at lower levels (i.e., no "induced primals")

Main features:

  • new KKT system structure
  • general construction of the new KKT system
  • recursive symbolic derivation of the KKT system for equality-constrained problems
  • custom Newton solver with fraction-to-the-boundary linesearches that handles non-square kkt system
  • add preference slacks/inequality constraints
  • test problem set up with CI
  • profile vs original GOOP
  • try dropping \nabla^k \pi for k \geq 2

@dfridovi dfridovi marked this pull request as draft July 21, 2025 13:12
@dfridovi
Copy link
Copy Markdown
Member Author

@leedh0124 why is there a dependency on IntelOpenMP? Can we rm that? It's causing the tests to fail: https://github.com/CLeARoboticsLab/Quasi-GOOP/actions/runs/16454832091/job/46509114257?pr=1

@leedh0124
Copy link
Copy Markdown
Collaborator

leedh0124 commented Jul 22, 2025 via email

@dfridovi
Copy link
Copy Markdown
Member Author

@leedh0124 I think it should be fixed now. I just removed a bunch of unnecessary dependencies. Btw, when you put back in the examples with intersections and stuff that you want to visualize, put those into a separate examples module that has its own separate dependencies. You can see how I did it in MCPs.jl so it doesn't pollute the main package deps.

…tional lagrangian hessian regularization (eta) per NW
…comparison_QP_tests.jl for comprehensive testing of new and older GOOP solutions.
… (inter-level) Lagrangian functions, tested for bilevel and trilevel QP settings.
- Added new experiment script for running nonlinear GOOP tests.
- Improved structure and readability of the code.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants