experimenter-0.1.0.0: src/Experimenter/Setting.hs
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE TemplateHaskell #-}
module Experimenter.Setting where
import Control.DeepSeq
import Control.Lens
import Data.Serialize
import qualified Data.Text as T
import GHC.Generics
-- ^ ExperimentInfoParameters can be used to separate experiments from each other. These parameters will be shown in the
-- evaluation output. E.g. testing different feature extraction settings.
data ExperimentInfoParameter =
forall b. (Show b, Eq b, Serialize b) =>
ExperimentInfoParameter
{ infoParameterName :: !T.Text
, infoParameter :: !b
}
instance NFData ExperimentInfoParameter where
rnf (ExperimentInfoParameter t !_) = rnf t
-- ^ Creating an experiment setting with the input state as parameter. This allows dynamically setting values.
type MkExperimentSetting a = a -> ExperimentSetting
data ExperimentSetting = ExperimentSetting
{ _experimentBaseName :: !T.Text -- ^ Base name of experiment.
, _experimentInfoParameters :: ![ExperimentInfoParameter] -- ^ List of information parameters defining the experiment. Adding more information does not effect equality. Thus, this is only used
-- as information on the report.
, _experimentRepetitions :: !Int -- ^ Repetitions of each experiment (>=1).
, _preparationSteps :: !Int -- ^ Preparation phase length (e.g. learning phase) (>=0).
, _evaluationWarmUpSteps :: !Int -- ^ Warm up phase length before each evaluation of each experiment (>=0).
, _evaluationSteps :: !Int -- ^ Evaluation phase length (>=0).
, _evaluationReplications :: !Int -- ^ Replications of evaluation for each experiment (>=1).
, _evaluationMaxStepsBetweenSaves :: !(Maybe Int) -- ^ Maximum number of steps to take until the data is saved. If nothing then something between 500 and 50000 will be used, depending on the time
-- required for saving and running. Setting a value may slow down the execution, but limits the memory requirement tremendously.
} deriving (Generic, NFData)
makeLenses ''ExperimentSetting