C Sharp Tutorial Code 1: Creating a Bayesian Network

From DSL

Jump to: navigation, search
public void CreateNetwork() {
 try {
   Network net = 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
   double[] aSuccessDef = {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
   double[] aForecastDef = {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 (SmileException e) {
   Console.WriteLine(e.Message);
 }
}
Personal tools