module Numeric.LBFGS.Types
( LineSearchAlgorithm(..)
, LBFGSParameters(..)
, LBFGSResult(..)
, L1NormCoefficient
) where
type L1NormCoefficient = Maybe Double
data LineSearchAlgorithm = DefaultLineSearch
| MoreThuente
| BacktrackingArmijo
| Backtracking
| BacktrackingWolfe {coeff :: Double }
| BacktrackingStrongWolfe {coeff :: Double }
data LBFGSParameters = LBFGSParameters {
lbfgsPast :: Maybe Int,
lbfgsDelta :: Double,
lbfgsLineSearch :: LineSearchAlgorithm,
lbfgsL1NormCoefficient :: L1NormCoefficient
}
data LBFGSResult
= Success
| Stop
| AlreadyMinimized
| UnknownError
| LogicError
| OutOfMemory
| Canceled
| InvalidN
| InvalidNSSE
| InvalidXSSE
| InvalidEpsilon
| InvalidTestPeriod
| InvalidDelta
| InvalidLineSearch
| InvalidMinStep
| InvalidMaxStep
| InvalidFtol
| InvalidWolfe
| InvalidGtol
| InvalidXtol
| InvalidMaxLineSearch
| InvalidOrthantwise
| InvalidOrthantwiseStart
| InvalidOrthantwiseEnd
| OutOfInterval
| IncorrectTMinMax
| RoundingError
| MinimumStep
| MaximumStep
| MaximumLineSearch
| MaximumIteration
| WidthTooSmall
| InvalidParameters
| IncreaseGradient
deriving (Eq, Show)
defaultLBFGSParameters :: LBFGSParameters
defaultLBFGSParameters = LBFGSParameters Nothing 1e-5 DefaultLineSearch Nothing