improvements, updated report
[talweg.git] / R / F_Level.R
index e0132ae..a186c1a 100644 (file)
@@ -2,8 +2,7 @@
 #'
 #' @title Level Forecaster
 #'
-#' @description Return flat serie of last observed level (on similar day).
-#'   Inherits \code{\link{ShapeForecaster}}
+#' @description Return flat serie of last observed level. Inherits \code{\link{ShapeForecaster}}
 LevelForecaster = setRefClass(
        Class = "LevelForecaster",
        contains = "Forecaster",
@@ -13,39 +12,23 @@ LevelForecaster = setRefClass(
                {
                        callSuper(...)
                },
-               predict = function(today, memory, horizon, all_memory=TRUE, ...)
+               predict = function(today, memory, horizon, ...)
                {
-                       #return last (similar) day level, or on all memory if all_memory==TRUE
+                       #return last day level
                        first_day = max(1, today-memory)
-                       index = today-7 + 1
-                       if (all_memory)
-                       {
-                               sum_level = 0.
-                               nb_series = 0
-                       }
+                       same_day = ifelse(hasArg("same_day"), list(...)$same_day, TRUE)
+                       index = today - ifelse(same_day,6,0)
                        repeat
                        {
                                {
-                                       last_similar_serie = data$getSerie(index)[1:horizon]
-                                       index = index - 7
+                                       last_serie = data$getSerie(index)[1:horizon]
+                                       index = index - ifelse(same_day,7,1)
                                };
                                #TODO: next test is too strict
-                               if (!any(is.na(last_similar_serie)))
-                               {
-                                       if (all_memory)
-                                       {
-                                               sum_level = sum_level + mean(last_similar_serie)
-                                               nb_series = nb_series + 1
-                                       }
-                                       else
-                                               return (rep(mean(last_similar_serie), horizon))
-                               };
+                               if (!any(is.na(last_serie)))
+                                       return (rep(mean(last_serie), horizon));
                                if (index < first_day)
-                               {
-                                       if (all_memory)
-                                               return (rep(sum_level / nb_series, horizon))
                                        return (NA)
-                               }
                        }
                }
        )