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

TODO (help wanted) #4

Open
14 tasks
anriseth opened this issue Feb 25, 2018 · 9 comments
Open
14 tasks

TODO (help wanted) #4

anriseth opened this issue Feb 25, 2018 · 9 comments

Comments

@anriseth
Copy link
Collaborator

anriseth commented Feb 25, 2018

Here's a list of things that I believe we should focus on next. If anyone is interested in helping out here that would be very much appreciated.

Interface

  • Enable value! et al. for the constraints in NLSolversBase top priority
  • Add a quasi-Newton algorithm
  • Update MathProgBase interface
  • Add a Newton-Krylov scheme

Interior / IPNewton

  • Support sparse Hessian and sparse constraint Jacobian top priority
  • Figure out how to enable the autodiff-tests in constraints.jl again
  • Move "show_linesearch` to Optim.options
  • Rethink how to deal with allow_f_increases for constrained problems (it should "always" be allowed)
  • There are lots of functions from Tim's PR that are not used anywhere. Figure out what to delete.

Linesearch

  • Figure out how Tim inteded to use backtrack_constrained (only backtrack_constrained_grad works at the moment)
  • Move line searches to LineSearches.jl (after we change the interface in LineSearches)

Testing

  • Add more constrained optimization tests to OptimTestProblems
  • Update OptimTests to work with ConstrainedOptim (We need sparse Hessian + Jacobian support before going all in on CUTEst problems)
  • Compare against Ipopt
@cortner
Copy link

cortner commented Mar 12, 2018

instead of quasi-newton how about a Newton-Krylov scheme? Should be easier to build into the current code.

@pkofod
Copy link
Member

pkofod commented Mar 13, 2018

instead of quasi-newton how about a Newton-Krylov scheme? Should be easier to build into the current code.

That would be interesting as well, sure.

@anriseth
Copy link
Collaborator Author

instead of quasi-newton how about a Newton-Krylov scheme? Should be easier to build into the current code.

To clarify, do you mean supporting "Hessian-free" (Hessian-vector) type Newton-Krylov, or to support, for example, IterativeSolvers.jl? I have only dealt with Newton-Krylov in the context of nonlinear equations, where it can also mean that you use some iterative solver for the problem (Jacobian*dx = Residual), regardless of whether the Jacobian is assembled or not.

@cortner
Copy link

cortner commented Mar 13, 2018

In A NK scheme you can replace the hxv with finite differences- that is the advantage for me

@anriseth
Copy link
Collaborator Author

I've added Newton-Krylov to the list :)

@gragusa
Copy link

gragusa commented Jun 5, 2018

I will start updating the MathProgBase interface.

@anriseth
Copy link
Collaborator Author

anriseth commented Jun 6, 2018

I will start updating the MathProgBase interface.

Thanks for doing that, @gragusa :) Note that we have added the IPNewton code from this repository to Optim now, so I think you should be able to update the interface with using Optim instead of ConstrainedOptim. Ref JuliaNLSolvers/Optim.jl#608 JuliaNLSolvers/Optim.jl#609

I also see that the JuliaOpt group have started implementing the solver interfaces with MathOptInterface now, as they are planning to move away from MathProgBase (Refs jump-dev/Ipopt.jl#108 jump-dev/Ipopt.jl#116).
I don't know whether it is more complicated to interface to MOI and therefore less time consuming to do this for MPB, but it seems like MOI is the future.

@JMmontilla
Copy link

Could a SQP method be implemented as well? I use it in the NLOpt suite and is the one that works best for me in general. I would like to help and try to implement it myself, but I have a lot to learn of Julia before. Aside from that this package is great :), will probably use it.

@pkofod
Copy link
Member

pkofod commented Apr 23, 2019

Yes, SQP methods are certainly on the table. Notice that his functionality is now in Optim.jl :)

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

5 participants