packages feed

optimization 0.1.5 → 0.1.6

raw patch · 3 files changed

+6/−9 lines, 3 filesdep ~linear

Dependency ranges changed: linear

Files

optimization.cabal view
@@ -1,6 +1,6 @@ name:          optimization category:      Math-version:       0.1.5+version:       0.1.6 license:       BSD3 cabal-version: >= 1.10 license-file:  LICENSE@@ -52,7 +52,7 @@     base                >= 4.4          && < 5,     vector              >= 0.10         && < 1.0,     ad                  >= 3.4          && < 4.3,-    linear              >= 1.0          && < 2.0,+    linear              >= 1.16         && < 2.0,     semigroupoids       >= 3.0          && < 5.0,     distributive        >= 0.3          && < 0.5 
src/Optimization/LineSearch.hs view
@@ -36,7 +36,6 @@  import Prelude hiding (pred) import Linear-import Debug.Trace  -- | A line search method @search df p x@ determines a step size -- in direction @p@ from point @x@ for function @f@ with gradient @df@@@ -64,7 +63,7 @@ {-# INLINE armijo #-}  -- | Curvature condition-curvature :: (Num a, Ord a, Additive f, Metric f, Show a, Show (f a))+curvature :: (Num a, Ord a, Additive f, Metric f)           => a             -- ^ curvature condition strength c2           -> (f a -> f a)  -- ^ gradient of function           -> f a           -- ^ point to evaluate at@@ -72,7 +71,6 @@           -> a             -- ^ search step size           -> Bool          -- ^ is curvature condition satisfied curvature c2 df x p a =-    traceShow (df (x ^+^ a *^ p) `dot` p, c2 * (df x `dot` p), p) $     df (x ^+^ a *^ p) `dot` p >= c2 * (df x `dot` p) {-# INLINE curvature #-} @@ -117,7 +115,7 @@ -- @wolfeSearch gamma alpha c1@ starts with the given step size @alpha@ -- and reduces it by a factor of @gamma@ until both the Armijo and -- curvature conditions is satisfied.-wolfeSearch :: (Show a, Num a, Ord a, Metric f, Show (f a))+wolfeSearch :: (Num a, Ord a, Metric f)              => a                   -- ^ step size reduction factor gamma              -> a                   -- ^ initial step size alpha              -> a                   -- ^ Armijo condition strength c1@@ -126,8 +124,7 @@              -> LineSearch f a wolfeSearch gamma alpha c1 c2 f df p x =     backtrackingSearch gamma alpha wolfe df p x-  where wolfe a = traceShow (a, armijo c1 f df p x a, curvature c2 df x p a)-                $ armijo c1 f df p x a && curvature c2 df x p a+  where wolfe a = armijo c1 f df p x a && curvature c2 df x p a {-# INLINEABLE wolfeSearch #-}  -- | Line search by Newton's method
src/Optimization/LineSearch/BFGS.hs view
@@ -32,7 +32,7 @@                          -- Sherman-Morrison update of inverse Hessian                          sy = s `dot` y                          rho = if nearZero sy then 1000 else 1 / sy-                         i = kronecker (pure 1)+                         i = scaled (pure 1)                          u = i !-! rho *!! outer y s                          v = i !-! rho *!! outer s y                          b1 = u !*! b0 !*! v !+! rho *!! outer s s