示例#1
0
        public void TestScoreBasedLearning()
        {
            var         model  = new SimpleBayesianExampleModel();
            Func <bool> hazard = () => model.Component.Hazard;
            Func <bool> state  = () => model.Component.NoDataAvailable || model.Component.SubsystemError;
            var         states = new Dictionary <string, Func <bool> > { /*["State"] = state*/
            };

            var config          = BayesianLearningConfiguration.Default;
            var bayesianCreator = new BayesianNetworkCreator(model, 10, config);
            var result          = bayesianCreator.LearnScoreBasedBayesianNetwork(@"C:\SafetySharpSimulation\", 100000, hazard, states);
        }
示例#2
0
        public void CalculateHazardProbability()
        {
            var tc = SafetySharpModelChecker.TraversalConfiguration;

            tc.WriteGraphvizModels = true;
            tc.MomentOfIndependentFaultActivation          = MomentOfIndependentFaultActivation.OnFirstMethodWithoutUndo;
            SafetySharpModelChecker.TraversalConfiguration = tc;

            var model  = new SimpleBayesianExampleModel();
            var result = SafetySharpModelChecker.CalculateProbabilityToReachStateBounded(model, model.Component.Hazard, 20);

            Console.WriteLine($"Probability of hazard in model: {result}");
        }
示例#3
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));
        }
示例#4
0
        public void TestConstraintBasedLearning()
        {
            var         model  = new SimpleBayesianExampleModel();
            Func <bool> hazard = () => model.Component.Hazard;
            Func <bool> state  = () => true;
            var         states = new Dictionary <string, Func <bool> > { /*["State"] = state*/
            };


            var config = BayesianLearningConfiguration.Default;
            var bayesianNetworkCreator = new BayesianNetworkCreator(model, 10, config);
            var result = bayesianNetworkCreator.LearnConstraintBasedBayesianNetwork(hazard, states, new[] { model.Component.FL, model.Component.FS, model.Component.FV });
        }
示例#5
0
        public void SerializeAndDeserializeBayesianNetwork()
        {
            const string filePath = "network.json";
            var          model    = new SimpleBayesianExampleModel();
            Func <bool>  hazard   = () => model.Component.Hazard;

            var config = BayesianLearningConfiguration.Default;

            config.BayesianNetworkSerializationPath = filePath;
            var bayesianNetworkCreator = new BayesianNetworkCreator(model, 10, config);
            var result = bayesianNetworkCreator.LearnConstraintBasedBayesianNetwork(hazard, null, new[] { model.Component.FL, model.Component.FS, model.Component.FV });

            bayesianNetworkCreator = new BayesianNetworkCreator(model, 10);
            var network = bayesianNetworkCreator.FromJson(filePath, hazard);
        }
示例#6
0
        public void CalculateDcca()
        {
            var model = new SimpleBayesianExampleModel();

            var analysis = new SafetySharpSafetyAnalysis
            {
                Backend    = SafetyAnalysisBackend.FaultOptimizedOnTheFly,
                Heuristics = { new MaximalSafeSetHeuristic(model.Faults) }
            };
            var result = analysis.ComputeMinimalCriticalSets(model, model.Component.Hazard);

            var orderResult = SafetySharpOrderAnalysis.ComputeOrderRelationships(result);

            Console.WriteLine(orderResult);
        }
示例#7
0
        public void CalculateFaultProbabilities()
        {
            var tc = SafetySharpModelChecker.TraversalConfiguration;

            tc.WriteGraphvizModels = true;
            tc.MomentOfIndependentFaultActivation          = MomentOfIndependentFaultActivation.OnFirstMethodWithoutUndo;
            SafetySharpModelChecker.TraversalConfiguration = tc;

            var model = new SimpleBayesianExampleModel();

            var isFlActivated = SafetySharpModelChecker.CalculateProbabilityToReachStateBounded(model, model.Component.FL.IsActivated, 20);
            var isFvActivated = SafetySharpModelChecker.CalculateProbabilityToReachStateBounded(model, model.Component.FV.IsActivated, 20);
            var isFsActivated = SafetySharpModelChecker.CalculateProbabilityToReachStateBounded(model, model.Component.FS.IsActivated, 20);


            Console.WriteLine($"Probability that Fault1 is activated: {isFlActivated}");
            Console.WriteLine($"Probability that Fault2 is activated: {isFvActivated}");
            Console.WriteLine($"Probability that Fault2 is activated: {isFsActivated}");
        }