Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0
Wiki Markup
{scrollbar}

Decision Module

What

nameofinstance.xml

Description

Configuration for the Decision module

schema location

http://fews.wldelft.nl/schemas/version1.0/decisionModule.xsd

Entry in ModuleDescriptors

Code Block
xml
xml
<moduleDescriptor id="DecisionModule">
	<description>DecisionModule</description>
	<className>nl.wldelft.fews.system.plugin.decisionmodule.DecisionModule</className>
</moduleDescriptor>

...

required element used to identify the timeSerieSet.

...

xml
Code Block
xml
titleExample variable definition
xml
	<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>

...

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).

...

xml
Code Block
xml
titleExample decistionTree
xml
	<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>

...

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
xmlxml
titleExample decisionEvalution
xml
	<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>

...