示例#1
0
        public void CalculateProbabilities()
        {
            const string networkPath = @"Analysis/network.json";
            var          model       = new Model();
            Func <bool>  hazard      = () => (model.Barrier.Angle != 0)
                                       &&
                                       (model.Train.Position <= Model.CrossingPosition &&
                                        model.Train.Position + model.Train.Speed > Model.CrossingPosition);
            var faults = new[]
            {
                model.CrossingController.Motor.BarrierMotorStuck,
                model.CrossingController.Sensor.BarrierSensorFailure,
                model.TrainController.Brakes.BrakesFailure,
                model.TrainController.Odometer.OdometerPositionOffset,
                model.TrainController.Odometer.OdometerSpeedOffset
            };

            var bayesianCreator = new BayesianNetworkCreator(model, 230);
            var network         = bayesianCreator.FromJson(networkPath, hazard, null, faults);
            var calculator      = new BayesianNetworkProbabilityDistributionCalculator(network, 0.000000000001);

            var result = calculator.CalculateConditionalProbabilityDistribution(new[] { "H" }, new[] { "OdometerSpeedOffset" });

            Console.Out.WriteLine(string.Join("\n", result));
        }
示例#2
0
        public void CalculateBayesianNetworkProbabilities()
        {
            const string filePath = "network.json";
            var          model    = new SimpleBayesianExampleModel();
            Func <bool>  hazard   = () => model.Component.Hazard;
            var          bayesianNetworkCreator = new BayesianNetworkCreator(model, 10);
            var          network = bayesianNetworkCreator.FromJson(filePath, hazard);

            var calculator = new BayesianNetworkProbabilityDistributionCalculator(network, 0.0000000001);
            var result     = calculator.CalculateConditionalProbabilityDistribution(new[] { "FS" }, new[] { "FV", "FL" });

            Console.Out.WriteLine(string.Join("\n", result));
        }