Optizelle [optuhzel] 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.