Optizelle [op-tuh-zel] is an open source software library designed to solve general purpose nonlinear optimization problems of the form
State of the art algorithms
Unconstrained – steepest descent, preconditioned nonlinear-CG (Fletcher-Reeves, Polak-Ribiere, Hestenes-Stiefel), BFGS, Newton-CG, SR1, trust-region Newton, Barzilai-Borwein two-point approximation
Equality constrained – inexact composite-step SQP
Inequality constrained – primal-dual interior point method for cone constraints (linear, second-order cone, and semidefinite), log-barrier method for cone constraints
Constrained – any combination of the above
Released under the 2-Clause BSD License
Free and ready to use with both open and closed sourced commercial codes
- Interfaces to C++, MATLAB/Octave, and Python
Robust computations and repeatability
Can stop, archive, and restart the computation from any optimization iteration
Combined with the multilanguage support, the optimization can be started in one language and migrated to another. For example, archived optimization runs that started in Python can be migrated and completed in C++.
- Fully compatible with OpenMP, MPI, or GPUs
Extensible linear algebra
Supports user-defined vector algebra and preconditioners
Enables sparse, dense, and matrix-free computations
Ability to define custom inner products and compatibility with preconditioners such as algebraic multigrid make Optizelle well-suited for PDE constrained optimization
Sophisticated Control of the Optimization Algorithms
- Allows the user to insert arbitrary code into the optimization algorithm, which enables custom heuristics to be embedded without modifying the source. For example, in signal processing applications, the optimization iterates could be run through a band-pass filter at the end of each optimization iteration.
Installation should be as easy as opening the package and following the instructions found therein.
For the source, please download a zipped archive of our code. For power users, we provide public access to our git repository on our Github page. In order to clone the Optizelle repository, use the command
git clone https://github.com/OptimoJoe/Optizelle.git
Building and installation may be as simple as executing the following commands from the base Optizelle directory:
- Configure the build
For more detailed instructions, please consult our documentation.
We appreciate community contributions to Optizelle! If you notice a bug, please file a report on our issues page. Alternatively, for more in-depth contributions, clone our repository and send a pull request via our Github page. Finally, we appreciate help in answering general user questions on our community forum.