Klasse SimpleMovingAverage

java.lang.Object
net.simplace.sim.model.FWSimComponent
net.simplace.sim.components.util.SimpleMovingAverage
Alle implementierten Schnittstellen:
net.simplace.sim.util.FWSimFieldContainer

public class SimpleMovingAverage extends net.simplace.sim.model.FWSimComponent
Calculates simple moving average of a variable (non centered)

Averaging

Calculates the simple moving average by taking the sum of the last cDays values of the variable iValue and dividing by the number of days with available data during the averaging window.

Missing values are null - notice: null is not 0.0! \(idx_j\) indicates if a value on simulation day \(j\) is available (i.e. non-null).

\[ idx_j = \begin{cases} 1 <span class="invalid-tag">Ungültige Eingabe: "&"</span> \text{if } iValue_j \neq \text{null} \\ 0 <span class="invalid-tag">Ungültige Eingabe: "&"</span> \text{else} \end{cases} \]

If \(k\) is the actual simulation day, then \(DaysInBuffer_k\) counts how many values where available the last cDays.

\[ DaysInBuffer_k = \sum_{j=k- cDays + 1}^k idx_j \]

The values are summed up, where null values are treated as 0.0.

\[ Sum_k = \sum_{j=k- cDays + 1}^k idx_j \cdot iValue_j \]

\[ Average_k = \frac{Sum_k}{DaysInBuffer_k} \]

Missing data at begin or in between

At simulation start the values from pre-startdate are missing. There could also occur missing values in between. Missing values contribute as 0 to the Sum and are ignored for the Average, by summing only available values and dividing by available days. If there is no data at all in the actual window, the average is set to 0.

The variable StrictAverage gives only the average, if there is data for all days in the window. Otherwise the value is null. (Notice: null is not 0.0! Depending where the output is used, this can cause NullPointerExceptions).

\[ StrictAverage_k = \begin{cases} Average_k <span class="invalid-tag">Ungültige Eingabe: "&"</span> \text{if } DaysInBuffer_k = cDays \\ \text{null} <span class="invalid-tag">Ungültige Eingabe: "&"</span> \text{else} \end{cases} \]

Notice: non centered

As the values from following days are not available, the moving average can be calculated only from the past and today's values.

Autor:
Gunther Krauss, gk@uni-bonn.de

Component Variables

Content TypeNameDescriptionData TypeUnitMin ValueMax ValueDefault Value
constantcDayswindow size in days (average taken over last cDays days, including today)INT--1
inputiValuedaily values to be averagedDOUBLE---
outActualValueBufferbuffered values of last cDays - first in / first outDOUBLEARRAY---
outAverageaverage of the non-missing (non-null) values, i.e. Sum/DaysInBufferDOUBLE--0.0
outDaysInBuffernumber of values that are used for averaging, possibly smaller than cDays when null values occur or at beginINT--0
outStrictAverageaverage, if no data missing. null otherwiseDOUBLE---
outSumsum of the past values (use 0.0 for missing/null values)DOUBLE--0.0
outTotalDayscount of total simulated daysINT--0
  • Verschachtelte Klassen - Übersicht

    Von Klasse geerbte verschachtelte Klassen/Schnittstellen net.simplace.sim.model.FWSimComponent

    net.simplace.sim.model.FWSimComponent.TEST_STATE
  • Feldübersicht

    Von Klasse geerbte Felder net.simplace.sim.model.FWSimComponent

    iFieldMap, iFrequence, iInputMap, iJexlRule, iMasterComponentGroup, iName, iOrderNumber, isComponentGroup, iSimComponentElement, iSimModel, iVarMap
  • Konstruktorübersicht

    Konstruktoren
    Konstruktor
    Beschreibung
    Empty constructor used by class.forName()
  • Methodenübersicht

    Modifizierer und Typ
    Methode
    Beschreibung
    protected net.simplace.sim.model.FWSimComponent
    clone(net.simplace.sim.util.FWSimVarMap aVarMap)
     
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
    Create the FWSimVariables as interface for this SimComponent
    HashMap<String,net.simplace.sim.util.FWSimVariable<?>>
    fillTestVariables(int aParamIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck)
    called for single component test to check the components algorithm.
    protected void
    Initializes the fields by getting input and output FWSimVariables from VarMap
    protected void
    Process the algorithm and write the results back to VarMap

    Von Klasse geerbte Methoden net.simplace.sim.model.FWSimComponent

    addVariable, bind, checkCondition, createSimComponent, createSimComponent, createSimComponent, createSimComponent, doProcess, getConstantVariables, getContentType, getCreateFormXML, getDescription, getEditFormXML, getFieldMap, getFrequence, getFrequenceRuleScript, getInputs, getInputVariables, getMasterComponentGroup, getName, getOrderNumber, getOutputVariables, getVariable, getVariableField, getVarMap, initialize, isConditionCheck, isVariableAvailable, performLinks, performLinks, readInputs, removeVariable, reset, runComponentTest, setVariablesDefault, toComponentLinkingXML, toDocXML, toGroupXML, toOutputDefinitionXML, toResourcesDataXML, toResourcesDefinitionXML, toString, toXML, writeVarInfos

    Von Klasse geerbte Methoden java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Konstruktordetails

    • SimpleMovingAverage

      public SimpleMovingAverage()
      Empty constructor used by class.forName()
  • Methodendetails

    • createVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> createVariables()
      Create the FWSimVariables as interface for this SimComponent
      Angegeben von:
      createVariables in Schnittstelle net.simplace.sim.util.FWSimFieldContainer
      Angegeben von:
      createVariables in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.createVariables()
    • init

      protected void init()
      Initializes the fields by getting input and output FWSimVariables from VarMap
      Angegeben von:
      init in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.init()
    • process

      protected void process()
      Process the algorithm and write the results back to VarMap
      Angegeben von:
      process in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.process()
    • fillTestVariables

      public HashMap<String,net.simplace.sim.util.FWSimVariable<?>> fillTestVariables(int aParamIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck)
      called for single component test to check the components algorithm.
      Angegeben von:
      fillTestVariables in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • Ungültige Referenz
        net.simplace.sim.util.FWSimFieldContainer#fillTestVariables(int aParamIndex, TEST_STATE aDefineOrCheck)
    • clone

      protected net.simplace.sim.model.FWSimComponent clone(net.simplace.sim.util.FWSimVarMap aVarMap)
      Angegeben von:
      clone in Klasse net.simplace.sim.model.FWSimComponent
      Siehe auch:
      • FWSimComponent.clone(net.simplace.sim.util.FWSimVarMap)