@hackage numeric-optimization0.1.0.1
Unified interface to various numerical optimization algorithms
Categories
License
BSD-3-Clause
Maintainer
masahiro.sakai@gmail.com
Links
Versions
Installation
Tested Compilers
Dependencies (8)
- base >=4.12 && <5
- constraints
- data-default-class >=0.1.2.0 && <0.2
- hmatrix >=0.20.0.0
- lbfgs >=0.1 && <0.2
- nonlinear-optimization >=0.3.7 && <0.4 Show all…
Dependents (2)
@hackage/numeric-optimization-backprop, @hackage/numeric-optimization-ad
Package Flags
build-examples
(off by default)
Build example programs
with-cg-descent
(off by default)
Enable CGDescent optimization algorithm provided by nonlinear-optimization package and CG_DESCENT-C library. Since they are licensed under GPL, setting this flag True implies that resulting binary is also under GPL.
numeric-optimization
Unified interface to various numerical optimization algorithms.
Note that the package name is numeric-optimization and not numerical-optimization.
The name numeric-optimization comes from the module name Numeric.Optimization.
Example Usage
{-# LANGUAGE OverloadedLists #-}
import Data.Vector.Storable (Vector)
import Numeric.Optimization
main :: IO ()
main = do
result <- minimize LBFGS def (WithGrad rosenbrock rosenbrock') [-3,-4]
print (resultSuccess result) -- True
print (resultSolution result) -- [0.999999999009131,0.9999999981094296]
print (resultValue result) -- 1.8129771632403013e-18
-- https://en.wikipedia.org/wiki/Rosenbrock_function
rosenbrock :: Vector Double -> Double
rosenbrock [x,y] = sq (1 - x) + 100 * sq (y - sq x)
rosenbrock' :: Vector Double -> Vector Double
rosenbrock' [x,y] =
[ 2 * (1 - x) * (-1) + 100 * 2 * (y - sq x) * (-2) * x
, 100 * 2 * (y - sq x)
]
sq :: Floating a => a -> a
sq x = x ** 2
Supported Algorithms
| Algorithm | Solver implemention | Haskell binding | |
|---|---|---|---|
| CG_DESCENT | CG_DESCENT-C | nonlinear-optimization | Requires with-cg-descent flag |
| Limited memory BFGS (L-BFGS) | liblbfgs | lbfgs | |
| Newton's method | Pure Haskell implementation using HMatrix | - |
Related Packages
- Packages for using with automatic differentiation:
- numeric-optimization-ad for using with ad package
- numeric-optimization-backprop for using with backprop package
- MIP for solving linear programming and mixed-integer linear programming problems
LICENSE
The code in thie packaged is licensed under BSD-3-Clause.
If you enable with-cg-descent flag, it uses GPL-licensed packages and the resulting binary should be distributed under GPL.