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

Enable LP subproblem in julia/runtests.jl #77

Merged
merged 7 commits into from
Nov 14, 2024
Merged

Conversation

odow
Copy link
Contributor

@odow odow commented Nov 7, 2024

x-ref #72

@odow
Copy link
Contributor Author

odow commented Nov 7, 2024

@cvanaret
Copy link
Owner

I fixed some stuff in #82.

You can then try preset=filtersqp and subproblem=LP, which will overwrite the subproblem strategy in the filtersqp preset. We still may have troubles with infeasible instances, I need to fix something there.

.github/julia/runtests.jl Outdated Show resolved Hide resolved
.github/julia/runtests.jl Outdated Show resolved Hide resolved
@odow
Copy link
Contributor Author

odow commented Nov 12, 2024

@cvanaret have you tried to solve problems with HiGHS locally? You might want to cancel the CI run, because it seems to be taking forever.

@odow
Copy link
Contributor Author

odow commented Nov 13, 2024

The log is full of runs that look like:

image

and

image

@cvanaret
Copy link
Owner

cvanaret commented Nov 13, 2024

@cvanaret have you tried to solve problems with HiGHS locally?

Yes, I ran the SLP method with HiGHS on our subset of 429 CUTEst instances (it can solve around 60% - that's the curse of subproblems without curvature...) as well as a few infeasible instances (all solved).
I will add a couple of instances as unit tests to avoid cluttering up the CI.

The log is full of runs that look like:

Can you post the JuMP models of these two instances?

@cvanaret
Copy link
Owner

cvanaret commented Nov 13, 2024

@odow Thanks!
Locally, my trust-region SLP + HiGHS converges on all instances and gets the same result as my trust-region SQP + BQPD (except for nlp-expr/001_010 but the respective minimizers are both global, see jump-dev/MINLPTests.jl#50). For the maximization problem nlp-expr/003_015.jl, both methods find the local maximum (0, 2).

PRs #83 and #84 should have fixed a lot of issues.

@cvanaret
Copy link
Owner

@odow at least this was a quick fail :D
The problem here is that it's taking the default preset (ipopt) and replacing the subproblem with LP. Therefore it's not using a trust region and subproblems get unbounded. Can you try with the long list of options I wrote in the other message?

@odow
Copy link
Contributor Author

odow commented Nov 13, 2024

Ugh. When I rebased on your latest stuff I dropped that commit 😢

@cvanaret
Copy link
Owner

cvanaret commented Nov 13, 2024

OK looking at the first fails in the log:

I will look at the complete list and try and figure out what went wrong.

@odow
Copy link
Contributor Author

odow commented Nov 14, 2024

cannot reduce stationarity (I guess the duals don't settle fast enough). We may have to reduce the tolerance

Open to different parameter settings

.github/julia/runtests.jl Outdated Show resolved Hide resolved
.github/julia/runtests.jl Outdated Show resolved Hide resolved
@cvanaret
Copy link
Owner

@odow I implemented the precedence rules for setting options (#85) and I added a filterslp preset (trust-region filter SLP) with similar options to filtersqp (#88).
Can you rebase and replace the option list with simply preset=filterslp? This should pass more tests.

.github/julia/runtests.jl Outdated Show resolved Hide resolved
.github/julia/runtests.jl Outdated Show resolved Hide resolved
.github/julia/runtests.jl Outdated Show resolved Hide resolved
@cvanaret
Copy link
Owner

Thanks for looking at the failures. It was a good call to relax the tolerance of the tests.

Here's some feedback:

  • nlp_expr/008_010: local solution.
  • nlp_cvx_expr/501_011: I haven't tested all 20 dimensions, but the largest instance (n = 20) is solved locally in 3248 iterations (SLP methods are just sloooow), which is over the default limit 2000. So perhaps we can bump it (max_iterations=10000).
  • nlp_cvx_expr/501_010: same as nlp_cvx_expr/501_011 but requires fewer iterations.

@odow
Copy link
Contributor Author

odow commented Nov 14, 2024

Once CI finishes this is good to go from my end.

@cvanaret
Copy link
Owner

It's a wrap. Thanks a lot!

@cvanaret cvanaret merged commit 5c2d2ba into cvanaret:main Nov 14, 2024
3 checks passed
@odow odow deleted the patch-4 branch November 14, 2024 23:20
@odow
Copy link
Contributor Author

odow commented Nov 14, 2024

Merge #78 and then tag [email protected]?

@cvanaret
Copy link
Owner

Uno 1.3.0 is out!

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.

3 participants