Exemple #1
0
        public static void ExportToGv(this DiscreteTimeMarkovChain markovChain, TextWriter sb)
        {
            sb.WriteLine("digraph S {");
            //sb.WriteLine("size = \"8,5\"");
            sb.WriteLine("node [shape=box];");
            var enumerator = markovChain.GetEnumerator();

            while (enumerator.MoveNextState())
            {
                var state = enumerator.CurrentState;
                sb.Write($" {state} [label=\"{state}\\n(");
                for (int i = 0; i < markovChain.StateFormulaLabels.Length; i++)
                {
                    if (i > 0)
                    {
                        sb.Write(",");
                    }
                    sb.Write(markovChain.StateLabeling[state][i]);
                }
                sb.WriteLine(")\"];");
                while (enumerator.MoveNextTransition())
                {
                    sb.WriteLine($"{enumerator.CurrentState} -> {enumerator.CurrentTransition.Column} [label=\"{Probability.PrettyPrint(enumerator.CurrentTransition.Value)}\"];");
                }
            }
            sb.WriteLine("}");
        }
Exemple #2
0
        public LtmcToDtmc(LabeledTransitionMarkovChain ltmc)
        {
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            Console.Out.WriteLine("Starting to convert labeled transition Markov chain to Markov chain");
            Console.Out.WriteLine($"Ltmc: States {ltmc.SourceStates.Count}, Transitions {ltmc.Transitions}");
            CreateStates(ltmc);
            var modelCapacity = new ModelCapacityByModelSize(States, ltmc.Transitions * 8L);

            MarkovChain = new DiscreteTimeMarkovChain(modelCapacity);
            MarkovChain.StateFormulaLabels = ltmc.StateFormulaLabels;
            SetStateLabeling();
            ConvertInitialStates(ltmc);
            ConvertTransitions(ltmc);
            stopwatch.Stop();
            Console.Out.WriteLine($"Completed transformation in {stopwatch.Elapsed}");
            Console.Out.WriteLine($"Mc: States {MarkovChain.States}, Transitions {MarkovChain.Transitions}");
        }
Exemple #3
0
            public UnderlyingDigraph(DiscreteTimeMarkovChain markovChain)
            {
                //Assumption "every node is reachable" is fulfilled due to the construction
                var newGraph = new BidirectionalGraph();

                BaseGraph = newGraph;

                var enumerator = markovChain.GetEnumerator();

                while (enumerator.MoveNextState())
                {
                    while (enumerator.MoveNextTransition())
                    {
                        if (enumerator.CurrentTransition.Value > 0.0)
                        {
                            newGraph.AddVerticesAndEdge(new Edge(enumerator.CurrentState, enumerator.CurrentTransition.Column));
                        }
                    }
                }
            }
Exemple #4
0
 public MarkovChainEnumerator(DiscreteTimeMarkovChain markovChain)
 {
     _markovChain = markovChain;
     _enumerator  = markovChain.ProbabilityMatrix.GetEnumerator();
     Reset();
 }
Exemple #5
0
 public DtmcToMrmc(DiscreteTimeMarkovChain markovChain)
 {
     _markovChain = markovChain;
 }
Exemple #6
0
        internal static void ExportToMrmc(this DiscreteTimeMarkovChain dtmc, TextWriter streamTransitions, TextWriter streamStateLabelings)
        {
            var dtmcToMrmc = new DtmcToMrmc(dtmc);

            dtmcToMrmc.WriteMarkovChainToStream(streamTransitions, streamStateLabelings);
        }
Exemple #7
0
 // Note: Should be used with using(var modelchecker = new ...), otherwise the disposed method may be
 // executed by the .net framework directly after using _fileTransitions.FilePath the last time and the
 // file deleted before it could be used by the prism process
 public ExternalDtmcModelCheckerMrmc(DiscreteTimeMarkovChain markovChain, TextWriter output = null) : base(markovChain, output)
 {
 }
 // Note: Should be used with using(var modelchecker = new ...)
 public BuiltinDtmcModelChecker(DiscreteTimeMarkovChain markovChain, TextWriter output = null) : base(markovChain, output)
 {
     _underlyingDigraph = MarkovChain.CreateUnderlyingDigraph();
 }
 // Note: Should be used with using(var modelchecker = new ...)
 internal DtmcModelChecker(DiscreteTimeMarkovChain markovChain, TextWriter output = null)
 {
     MarkovChain = markovChain;
     _output     = output;
 }