packages feed

mdp-0.1.0.0: src/run-ex-3-1-relative.hs

import Algorithms.MDP.Examples.Ex_3_1
import Algorithms.MDP
import Algorithms.MDP.ValueIteration

import qualified Data.Vector as V

converging :: Double 
           -> (CF State Control Double, CF State Control Double) 
           -> Bool
converging tol (cf, cf') = abs (x - y) > tol
  where
    x = (\(_, _, c) -> c) (cf V.! 0)
    y = (\(_, _, c) -> c) (cf' V.! 0)

iterations = relativeValueIteration mdp

main = do
  mapM_ (putStrLn . showAll) $ take 100 iterations
  where
    costs (CFBounds cf _ _) = V.map (\(_, _, c) -> c) cf
    actions (CFBounds cf _ _) = V.map (\(_, a, _) -> a) cf
    bounds (CFBounds _ lb ub) = [lb, ub]
    showAll cf = unwords [show (costs cf), show (bounds cf), show (actions cf)]