Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Considers constrained variables from Dualization #163

Open
joaquimg opened this issue Mar 5, 2022 · 5 comments
Open

Considers constrained variables from Dualization #163

joaquimg opened this issue Mar 5, 2022 · 5 comments

Comments

@joaquimg
Copy link
Owner

joaquimg commented Mar 5, 2022

Since #171 the latest Dualization is supported.
Additional changes are required to support compact for of dual because more data has to be read from PrimalDualMap.

@joaquimg joaquimg changed the title Update to newest Dualization.jl that considers constrained variables Considers constrained variables from Dualization Apr 20, 2022
@LukasBarner
Copy link

What needs to be done on this end?
I think this should greatly decrease solution times for problems with many variable bounds...
For quite a few examples, it already seems to work fine.
Some of the tests still seem to fail, but this may also be for other reasons...

@joaquimg
Copy link
Owner Author

joaquimg commented Oct 3, 2022

I am not 100% sure this will change considerably the solution times.

Right now, BilevelJuMP is only able to write a KKT from a Dualization.jl Standard form.
To support this, we need to be able to handle Compact form.
The main missing piece is the second complementarity condition in: https://jump.dev/Dualization.jl/dev/manual/#KKT-3
but there is some bookkeeping to be done around.

@LukasBarner
Copy link

So it would be required to add complements for the inequality stationarity conditions related to primal bounded variables, right? My guess that this would speed things up was because one dual variable per bound could actually be cut out then

@LukasBarner
Copy link

Think I may have found a way for this without too much unnecessary bookkeeping: #189.
Relevant are only the last three commits (the rest is the iterative stuff, just wanted to make sure it also works for that..).
Do you think this might be worth further efforts?

@LukasBarner
Copy link

PS: sorry for the spam here and on Dualization.jl the last few days :D

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

No branches or pull requests

2 participants