scrollbar |
---|
*** !!! This page is under construction / valid from Delft-FEWS version 2011.01 !!! ***
Decision Module
What | nameofinstance.xml |
---|---|
Description | Configuration for the Decision module |
schema location |
Entry in ModuleDescriptors
<moduleDescriptor id="DecisionModule">
<description>DecisionModule</description>
<className>nl.wldelft.fews.system.plugin.decisionmodule.DecisionModule</className>
</moduleDescriptor>
...
...
Please note that at the moment the Decision Module is only available in the development build (2011.01).
Contents
Table of Contents |
---|
Overview
The Decision Module in Delft-FEWS is used to implement decision logic and evaluation for barriers. With this module we can iteratively evaluate configurated decision rules. The configuration file of the Decision Module contains the definition of one or more Decision Trees. These Decision Trees defined in the Decision Module are associated with a Barrier definition which are defined by the Barriers configuration file.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<variable>
<variableId>SVKW.position.in</variableId>
<timeSeriesSet>
<moduleInstanceId>RMM_Structures_Forecast_Processing_Extrapolate</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>State.position.meting</parameterId>
<locationId>SVKW</locationId>
<timeSeriesType>simulated forecasting</timeSeriesType>
<timeStep unit="minute" multiplier="10"/>
<relativeViewPeriod unit="day" start="0" end="1" endOverrulable="true"/>
<readWriteMode>add originals</readWriteMode>
</timeSeriesSet>
</variable>
<variable>
<variableId>SVKW.position.dss</variableId>
<timeSeriesSet>
<moduleInstanceId>RMM_DecisionTree</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>State.position.meting</parameterId>
<locationId>SVKW</locationId>
<timeSeriesType>simulated forecasting</timeSeriesType>
<timeStep unit="minute" multiplier="10"/>
<relativeViewPeriod unit="day" start="0" end="1" endOverrulable="true"/>
<readWriteMode>add originals</readWriteMode>
</timeSeriesSet>
</variable>
|
...
Schema definition
Rules definition
The Rules section defines the rules which will be used by the decision entries of each decisionTree.
Schema definition
variables
This section contain a set of variables defined only for the rule definitions. For a description of the variables see the section above.
...
For each barrier a decisionTree is configured. Each decision element in this decisionTree should be unique (i.e. at each moment in time only one element can be valid).
Decision definition
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<decisionTree>
<barrierId>scheepvaart</barrierId>
<decision id="Stremming (peilsluiting)">
<evaluationType>lastKnownState</evaluationType>
<stateDefinitionId>scheepvaart</stateDefinitionId>
<inputState>
<stateValueId>geen stremming</stateValueId>
</inputState>
<conditionRules>
<allValid>
<anyValid>
<isTrue>H.rotterdam.d</isTrue>
<isTrue>H.dordrecht.d</isTrue>
</anyValid>
<isFalse>Q.lobith</isFalse>
</allValid>
</conditionRules>
<transitionRules>
<anyValid>
<isTrue>scheepvaart.stremming.peilsluiting.rotterdam</isTrue>
<isTrue>scheepvaart.stremming.peilsluiting.dordrecht</isTrue>
</anyValid>
</transitionRules>
<outputState>
<stateValueId>gestremd</stateValueId>
</outputState>
</decision>
<decision id="Stremming (kenteringsluiting)">
...
</decision>
<decision id="Vrijgeven scheepvaart">
...
</decision>
</decisionTree>
|
...
Decision definition
Schema definition
...
evaluationType
stateDefinitionId
inputState
conditionRules
transitionRules
outputState
DecisionEvaluation
The last section of this file deals with the evaluation of the decision logic. If we are in the first step of the iterative loop, the last know system (barrier) state is used as initial value. The section within the 'initialConditionalWorkflow' tag is run, where the timeSeriesSets associated with the variableId's are used for initial values. From this workflow the (external) model is called (for example, a workflow through which Sobek is run from the FEWS General Adapter).
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<decisionEvaluation>
<initialConditionalWorkflow>
<variableId>SVKH.position.in</variableId>
<variableId>SVKW.position.in</variableId>
<variableId>scheepvaart.in</variableId>
<workflowId>Sobek_DSS_Forecast</workflowId>
</initialConditionalWorkflow>
<conditionalWorkflow>
<variableId>SVKH.position.dss</variableId>
<variableId>SVKW.position.dss</variableId>
<variableId>scheepvaart.dss</variableId>
<stateChanges>
<evaluationType>FirstInTime</evaluationType>
<stateChange>
<decisionTreeId>SVKH</decisionTreeId>
</stateChange>
<stateChange>
<decisionTreeId>SVKW</decisionTreeId>
</stateChange>
<stateChange>
<decisionTreeId>scheepvaart</decisionTreeId>
</stateChange>
</stateChanges>
<workflowId>Sobek_DSS_Forecast</workflowId>
</conditionalWorkflow>
</decisionEvaluation>
|
...
After running the model for the first time, we need to evaluate the decision logic prior to a (possible) second run. If a state change occurs in the decisionTree, we need to run the model again taking this state change into account. From the second iteration and onwards, the section within the 'conditionalWorkflow' tag will be run. Note that we need to evaluate three state changes in this case (SVKH = the position of the Hartelkering, SVKW = the position of the Maeslantkering and scheepvaart = the "shipping state"), each of which has a separate decisionTree definition.
evaluationType
If one state variable changes value, this will change the overall system state, and hence may effect the evaluation of the other state variables. There are to options which can be defined:
...