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("}"); }
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}"); }
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)); } } } }
public MarkovChainEnumerator(DiscreteTimeMarkovChain markovChain) { _markovChain = markovChain; _enumerator = markovChain.ProbabilityMatrix.GetEnumerator(); Reset(); }
public DtmcToMrmc(DiscreteTimeMarkovChain markovChain) { _markovChain = markovChain; }
internal static void ExportToMrmc(this DiscreteTimeMarkovChain dtmc, TextWriter streamTransitions, TextWriter streamStateLabelings) { var dtmcToMrmc = new DtmcToMrmc(dtmc); dtmcToMrmc.WriteMarkovChainToStream(streamTransitions, streamStateLabelings); }
// 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; }