VB.NET Tutorial Code 1: Creating a Bayesian Network

From DSL

Jump to: navigation, search
Public Sub CreateNetwork()
 Try
   Dim net As New Network
   
   ' Creating node "Success" and setting/adding outcomes:
   net.AddNode(Network.NodeType.Cpt, "Success")
   net.SetOutcomeId("Success", 0, "Success")
   net.SetOutcomeId("Success", 1, "Failure")
   
   ' Creating node "Forecast" and setting/adding outcomes:
   net.AddNode(Network.NodeType.Cpt, "Forecast")
   net.AddOutcome("Forecast", "Good")
   net.AddOutcome("Forecast", "Moderate")
   net.AddOutcome("Forecast", "Poor")
   net.DeleteOutcome("Forecast", 0)
   net.DeleteOutcome("Forecast", 0)
   
   ' Adding an arc from "Success" to "Forecast":
   net.AddArc("Success", "Forecast")
   
   ' Filling in the conditional distribution for node "Success". The
   ' probabilities are:
   ' P("Success" = Success) = 0.2
   ' P("Success" = Failure) = 0.8
   Dim aSuccessDef() As Double = {0.2, 0.8}
   net.SetNodeDefinition("Success", aSuccessDef)
   
   ' Filling in the conditional distribution for node "Forecast". The 
   ' probabilities are:
   ' P("Forecast" = Good | "Success" = Success) = 0.4
   ' P("Forecast" = Moderate | "Success" = Success) = 0.4
   ' P("Forecast" = Poor | "Success" = Success) = 0.2
   ' P("Forecast" = Good | "Success" = Failure) = 0.1
   ' P("Forecast" = Moderate | "Success" = Failure) = 0.3
   ' P("Forecast" = Poor | "Success" = Failure) = 0.6
   Dim aForecastDef() As Double = {0.4, 0.4, 0.2, 0.1, 0.3, 0.6}
   net.SetNodeDefinition("Forecast", aForecastDef)
   
   ' Changing the nodes' spacial and visual attributes:
   net.SetNodePosition("Success", 20, 20, 100, 50)
   net.SetNodeBgColor("Success", Color.Tomato)
   net.SetNodeTextColor("Success", Color.White)
   net.SetNodeBorderColor("Success", Color.Black)
   net.SetNodeBorderWidth("Success", 2)
   net.SetNodePosition("Forecast", 30, 100, 90, 130)
   
   ' Writting the network to a file:
   net.WriteFile("tutorial_a.xdsl")
 Catch e As SmileException
   Console.WriteLine(e.Message)
 End Try
End Sub
Personal tools