Optimization.jl provides the easiest way to create an optimization problem and solve it. It enables rapid prototyping and experimentation with minimal syntax overhead by providing a uniform interface to >25 optimization libraries, hence 100+ optimization solvers encompassing almost all classes of optimization algorithms such as global, mixed-integer, non-convex, second-order local, constrained, etc. It allows you to choose an Automatic Differentiation (AD) backend by simply passing an argument to indicate the package to use and automatically generates the efficient derivatives of the objective and constraints while giving you the flexibility to switch between different AD engines as per your problem. Additionally, Optimization.jl takes care of passing problem-specific information to solvers that can leverage it such as the sparsity pattern of the hessian or constraint jacobian and the expression graph.
Features
- Tutorials and Documentation
- Examples available
- It extends the common SciML interface making it very easy to use for anyone familiar with the SciML ecosystem
- It is also very easy to extend to new solvers and new problem types
- The package is actively maintained and new features are added regularly
- The documentation of this SciML package was built using these direct dependencies