Optizelle [opt_uh_zel] is an open source software library designed to solve general purpose nonlinear optimization problems of the form
It features

State of the art algorithms

Unconstrained – steepest descent, preconditioned nonlinearCG (FletcherReeves, PolakRibiere, HestenesStiefel), BFGS, NewtonCG, SR1, trustregion Newton, BarzilaiBorwein twopoint approximation

Equality constrained – inexact compositestep SQP

Inequality constrained – primaldual interior point method for cone constraints (linear, secondorder cone, and semidefinite), logbarrier method for cone constraints

Constrained – any combination of the above


Open source

Released under the 2Clause BSD License

Free and ready to use with both open and closed sourced commercial codes


Multilanguage support
 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++.


Userdefined parallelism
 Fully compatible with OpenMP, MPI, or GPUs

Extensible linear algebra

Supports userdefined vector algebra and preconditioners

Enables sparse, dense, and matrixfree computations

Ability to define custom inner products and compatibility with preconditioners such as algebraic multigrid make Optizelle wellsuited 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 bandpass filter at the end of each optimization iteration.
Download
Platform  Package  Interfaces 

Windows  
macOS 


Linux 
Installation should be as easy as opening the package and following the instructions found therein.
Documentation
We provide a full set of instructions for building, installing, and using Optizelle in our manual (letter,a4.)
Source
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:
mkdir build
cd build
ccmake ..
 Configure the build
make install
For more detailed instructions, please consult our documentation.
Support
For general questions, please visit our community forum. In addition, we provide paid support and consulting for Optizelle. If you are interested, please contact us.
Contributing
We appreciate community contributions to Optizelle! If you notice a bug, please file a report on our issues page. Alternatively, for more indepth 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.