public void test_ToothacheCavityCatchModel_Distributions() { foreach (IBayesInference bi in getBayesInferenceImplementations()) { test_ToothacheCavityCatchModel_Distributions(new FiniteBayesModel( BayesNetExampleFactory .constructToothacheCavityCatchNetwork(), bi)); } }
static void bayesEnumerationAskDemo() { System.Console.WriteLine("DEMO: Bayes Enumeration Ask"); System.Console.WriteLine("==========================="); demoToothacheCavityCatchModel(new FiniteBayesModel( BayesNetExampleFactory.constructToothacheCavityCatchNetwork(), new EnumerationAsk())); demoBurglaryAlarmModel(new FiniteBayesModel( BayesNetExampleFactory.constructBurglaryAlarmNetwork(), new EnumerationAsk())); System.Console.WriteLine("==========================="); }
static void bayesGibbsAskDemo() { System.Console.WriteLine("DEMO: Bayes Gibbs Ask N = " + NUM_SAMPLES); System.Console.WriteLine("====================="); demoToothacheCavityCatchModel(new FiniteBayesModel( BayesNetExampleFactory.constructToothacheCavityCatchNetwork(), new BayesInferenceApproxAdapter(new GibbsAsk(), NUM_SAMPLES))); demoBurglaryAlarmModel(new FiniteBayesModel( BayesNetExampleFactory.constructBurglaryAlarmNetwork(), new BayesInferenceApproxAdapter(new GibbsAsk(), NUM_SAMPLES))); System.Console.WriteLine("====================="); }
public void testInferenceOnToothacheCavityCatchNetwork() { IBayesianNetwork bn = BayesNetExampleFactory .constructToothacheCavityCatchNetwork(); ICategoricalDistribution d = bayesInference.Ask( new IRandomVariable[] { ExampleRV.CAVITY_RV }, new AssignmentProposition[] { }, bn); // System.Console.WriteLine("P(Cavity)=" + d); Assert.AreEqual(2, d.getValues().Length); Assert.AreEqual(0.2, d.getValues()[0], ProbabilityModelImpl.DEFAULT_ROUNDING_THRESHOLD); Assert.AreEqual(0.8, d.getValues()[1], ProbabilityModelImpl.DEFAULT_ROUNDING_THRESHOLD); // AIMA3e pg. 493 // P(Cavity | toothache) = <0.6, 0.4> d = bayesInference.Ask(new IRandomVariable[] { ExampleRV.CAVITY_RV }, new AssignmentProposition[] { new AssignmentProposition( ExampleRV.TOOTHACHE_RV, true) }, bn); // System.Console.WriteLine("P(Cavity | toothache)=" + d); Assert.AreEqual(2, d.getValues().Length); Assert.AreEqual(0.6, d.getValues()[0], ProbabilityModelImpl.DEFAULT_ROUNDING_THRESHOLD); Assert.AreEqual(0.4, d.getValues()[1], ProbabilityModelImpl.DEFAULT_ROUNDING_THRESHOLD); // AIMA3e pg. 497 // P(Cavity | toothache AND catch) = <0.871, 0.129> d = bayesInference .Ask(new IRandomVariable[] { ExampleRV.CAVITY_RV }, new AssignmentProposition[] { new AssignmentProposition( ExampleRV.TOOTHACHE_RV, true), new AssignmentProposition(ExampleRV.CATCH_RV, true) }, bn); // System.Console.WriteLine("P(Cavity | toothache, catch)=" + d); Assert.AreEqual(2, d.getValues().Length); Assert.AreEqual(0.8709677419354839, d.getValues()[0], ProbabilityModelImpl.DEFAULT_ROUNDING_THRESHOLD); Assert.AreEqual(0.12903225806451615, d.getValues()[1], ProbabilityModelImpl.DEFAULT_ROUNDING_THRESHOLD); }