Klasse SimpleMovingAverage
- Alle implementierten Schnittstellen:
net.simplace.sim.util.FWSimFieldContainer
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 Type | Name | Description | Data Type | Unit | Min Value | Max Value | Default Value |
|---|---|---|---|---|---|---|---|
| constant | cDays | window size in days (average taken over last cDays days, including today) | INT | - | - | 1 | |
| input | iValue | daily values to be averaged | DOUBLE | - | - | - | |
| out | ActualValueBuffer | buffered values of last cDays - first in / first out | DOUBLEARRAY | - | - | - | |
| out | Average | average of the non-missing (non-null) values, i.e. Sum/DaysInBuffer | DOUBLE | - | - | 0.0 | |
| out | DaysInBuffer | number of values that are used for averaging, possibly smaller than cDays when null values occur or at begin | INT | - | - | 0 | |
| out | StrictAverage | average, if no data missing. null otherwise | DOUBLE | - | - | - | |
| out | Sum | sum of the past values (use 0.0 for missing/null values) | DOUBLE | - | - | 0.0 | |
| out | TotalDays | count of total simulated days | INT | - | - | 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 -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungprotected net.simplace.sim.model.FWSimComponentclone(net.simplace.sim.util.FWSimVarMap aVarMap) Create the FWSimVariables as interface for this SimComponentfillTestVariables(int aParamIndex, net.simplace.sim.model.FWSimComponent.TEST_STATE aDefineOrCheck) called for single component test to check the components algorithm.protected voidinit()Initializes the fields by getting input and output FWSimVariables from VarMapprotected voidprocess()Process the algorithm and write the results back to VarMapVon 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
-
Konstruktordetails
-
SimpleMovingAverage
public SimpleMovingAverage()Empty constructor used by class.forName()
-
-
Methodendetails
-
createVariables
Create the FWSimVariables as interface for this SimComponent- Angegeben von:
createVariablesin Schnittstellenet.simplace.sim.util.FWSimFieldContainer- Angegeben von:
createVariablesin Klassenet.simplace.sim.model.FWSimComponent- Siehe auch:
-
init
protected void init()Initializes the fields by getting input and output FWSimVariables from VarMap- Angegeben von:
initin Klassenet.simplace.sim.model.FWSimComponent- Siehe auch:
-
process
protected void process()Process the algorithm and write the results back to VarMap- Angegeben von:
processin Klassenet.simplace.sim.model.FWSimComponent- Siehe auch:
-
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:
fillTestVariablesin Klassenet.simplace.sim.model.FWSimComponent- Siehe auch:
-
clone
protected net.simplace.sim.model.FWSimComponent clone(net.simplace.sim.util.FWSimVarMap aVarMap) - Angegeben von:
clonein Klassenet.simplace.sim.model.FWSimComponent- Siehe auch:
-