PofoliaShared via Pofolia

The Journal of Open Source Software· 2018

Optim: A mathematical optimization package for Julia

Patrick Kofod Mogensen, Asbjørn Nilsen Riseth

Short summary

Optim is a new Julia package offering a wide range of optimization capabilities, including support for manifolds, complex numbers, and arbitrary precision inputs, with routines for derivative-free, first-order, and second-order methods.

AI-generated from the title and abstract; the full text is not read.

Key points

  • Optim is a Julia package for mathematical optimization.
  • Supports optimization on manifolds, complex numbers, and arbitrary precision inputs.
  • Includes derivative-free, first-order, and second-order optimization methods.
  • Offers automatic differentiation and finite difference methods for derivative calculation.
  • Primarily focuses on unconstrained optimization, with ongoing development for constrained problems.

AI-generated from the title and abstract; the full text is not read.

Abstract

Optim provides a range of optimization capabilities written in the Julia programming language (Bezanson et al. 2017). Our aim is to enable researchers, users, and other Julia packages to solve optimization problems without writing such algorithms themselves. The package supports optimization on manifolds, functions of complex numbers, and input types such as arbitrary precision vectors and matrices. We have implemented routines for derivative free, first-order, and second-order optimization methods. The user can provide derivatives themselves, or request that they are calculated using automatic differentiation or finite difference methods. The main focus of the package has currently been on unconstrained optimization, however, box-constrained optimization is supported, and a more comprehensive support for constraints is underway. Similar to Optim, the C library NLopt (Johnson 2008) contains a collection of nonlinear optimization routines. In Python, scipy.optimize supports many of the same algorithms as Optim does, and Pymanopt (Townsend, Niklas, and Weichwald 2016) is a toolbox for manifold optimization. Within the Julia community, the packages BlackBoxOptim.jl and Optimize.jl provide optimization capabilities focusing on derivative-free and large-scale smooth problems respectively. The packages Convex.jl and JuMP.jl (Dunning, Huchette, and Lubin 2017) define modelling languages for which users can formulate optimization problems. In contrast to the previously mentioned optimization codes, Convex and JuMP work as abstraction layers between the user and solvers from a other packages.

The authors' abstract, as published at the source. The Journal of Open Source Software, 2018 · DOI ↗

TakeawaysPremium
Ask the paperFree account

Continue with a free account

Ask the paper: 3 free questions a day about this paper; save it, get its citation, new summaries every day for your field. Takeaways are Premium.

Continue free on the web

Sign in with Google or Apple; no card needed. You come back to this paper.

On your phone:

Field: Computer Graphics and Computer-Aided Design

Computer Graphics and Computer-Aided DesignComputer Science