/SNOW.jl

Optimization framework for nonlinear, gradient-based constrained, sparse optimization problems.

Primary LanguageJuliaMIT LicenseMIT

Sparse Nonlinear Optimization Wrapper (SNOW)

Dev Build Status

The problems we typically solve in our group are nonconvex, nonlinear, constrained, gradient-based, often computationally expensive, and sometimes have sparse Jacobians. This package wraps derivative computation methods and optimization solvers that are well-suited to these types of problems.

Features:

  • Allows easy switching between SNOPT and IPOPT from a common interface passing through all solver options, preserving output in files, and allowing warm starts (for SNOPT).
  • Easy switching between various differentiation methods: ForwardDiff, ReverseDiff, Zygote, FiniteDiff (forward, central, complex step), and user-defined derivatives.
  • Derivative calculations are all non-allocating during optimization.
  • Outputs are also cached as applicable to avoid unnecessary function calls.
  • Methods are provided to help determine sparsity patterns, sparse Jacobians can be updated efficiently with SparseDiffTools (using graph coloring), and the sparsity structure is passed to the solvers.

To Install

] add SNOW