Partially differentiable projects
Published:
I am starting a new year in Montreal and one of the main projects for this year is to move forward in finalizing an ecosystem for optimization problems with partial differential equations in the constraints. The ecosystem is hosted under the JuliaSmoothOptimizers umbrella and contains:
- PDENLPModels.jl a package to model the PDE-constrained optimization problem using Gridap.jl Finite-Element discretization for the PDE.
- PDEOptimizationProblems contains a collection of 39 problems using PDENLPModels. It includes most of the problems from the COPS test set.
As usual modeling packages are fun, but not more than new solvers! I am focusing on two packages:
- Fletcher’s penalty method. This method is matrix-free, which would be just perfect for huge large-scale structured problems such as PDE-constrained problems. The cherry on top of the cake is that this package uses Stopping.
- DCISolver. This package uses a matrix-free feasibility process, but the tangent step still relies on an SQD matrix factorization using HSL or LDLFactorizations. Still, it is showing great performance even on large problems. I wrote a tutorial on jso-docs.github.io showing a comparison with Ipopt on a distributed Poisson control problem with Dirichlet boundary conditions (Spoiler alert: DCI is doing great). You can also play with a similar example on mybinder.org via the package’s documentation.
You can check the talk I gave at IVADO last October, on youtube.
The whole ecosystem is already in advanced testing and being used in my teaching at Polytechnique Montreal.
Upcoming
- Upgrade of PDENLPModels to Gridap 0.17 (which shows great performance improvements last JuliaCon New tools to solve PDEs in Julia with Gridap.jl).
- As usual, more problems and applications for PDEOptimizationProblems :).
- DCISolver is under review in the Journal of Open Source Software. The whole review process was pretty fun (for once) and helped improve the package’s documentation. Hoping for the good news soon.
- Why does FPS use Stopping?