Application Programmers Manual: Node Value

From DSL

Jump to: navigation, search

The value part contains the actual value of the node. This value is a function of the definition of the node and the value of its parents. The value is dynamic, meaning that it changes during the "inference" phase. For example, the value of a discrete decision node will be the expected utility of each of the choices whereas the value of a discrete chance node will be the belief state of that node. Each value type is "coupled" with a given definition type as shown in the following table:

Node Type Value Type
DSL_LIST DSL_listOfDecisions
DSL_TRUTHTABLE DSL_beliefVector
DSL_CPT DSL_beliefVector
DSL_NOISY_MAX DSL_beliefVector
DSL_TABLE DSL_expectedUtility
DSL_MAU DSL_mauExpectedUtility

The different types of node values that are defined in SMILE are:

  • DSL_beliefVector

This value represents the calculated beliefs of the different states of the node. These beliefs will be stored in a DSL_Dmatrix object indexed by the nodes that affect this node (i.e., decision nodes and informational predecessors of decision nodes that are ancestors of this node).

  • DSL_expectedUtility

Represents the calculated expected utility for each of the policies. These utilities will be stored in a DSL_Dmatrix object indexed by the choices of those nodes that affect this utility node.

  • DSL_listOfDecisions

Represents the calculated expected utility for each of the choices of this node. These utilities will be stored in a DSL_Dmatrix object indexed by the choices of those other decision nodes that precede this node in the temporal sequence. It will also be indexed by the informational predecessors of this and previous decision nodes.

  • DSL_mauExpectedUtility

Represents the calculated expected utility for each of the policies. These utilities will be stored in a DSL_Dmatrix object indexed by the configurations of those nodes that affect this utility node (i.e., decision nodes and informational predecessors of decision nodes). This value differs from DSL_expectedUtility in that its parents are continuous (as opposed to the parents of a DSL_expectedUtility, which are discrete).


The value of a node will be calculated (updated) when the UpdateBeliefs() network method is called. After that, the DSL_nodeValue class IsValueValid() method should return a non-zero value (see the description of DSL_nodeValue class for more information).


On the other hand, certain types of operations performed on the node/network can invalidate the value of a node. For example, consider a node that is updated (its value is calculated). If the user introduces some observation (evidence) in one of its parents, the beliefs of that node are no longer up to date with the latest information and therefore will be invalidated by SMILE. At this point, IsValueValid() will return zero. Check the section on relevance reasoning and invalidation of node values for more details on the operations that can cause a node value to become invalid.

Personal tools