コード例 #1
0
ファイル: CTMCSimple.java プロジェクト: hawesie/prism-robots
 @Override
 public DTMCSimple buildEmbeddedDTMC() {
   DTMCSimple dtmc;
   Distribution distr;
   int i;
   double d;
   dtmc = new DTMCSimple(numStates);
   for (int in : getInitialStates()) {
     dtmc.addInitialState(in);
   }
   for (i = 0; i < numStates; i++) {
     distr = trans.get(i);
     d = distr.sum();
     if (d == 0) {
       dtmc.setProbability(i, i, 1.0);
     } else {
       for (Map.Entry<Integer, Double> e : distr) {
         dtmc.setProbability(i, e.getKey(), e.getValue() / d);
       }
     }
   }
   return dtmc;
 }
コード例 #2
0
ファイル: CTMCSimple.java プロジェクト: hawesie/prism-robots
 @Override
 public DTMCSimple buildUniformisedDTMC(double q) {
   DTMCSimple dtmc;
   Distribution distr;
   int i;
   double d;
   dtmc = new DTMCSimple(numStates);
   for (int in : getInitialStates()) {
     dtmc.addInitialState(in);
   }
   for (i = 0; i < numStates; i++) {
     // Add scaled off-diagonal entries
     distr = trans.get(i);
     for (Map.Entry<Integer, Double> e : distr) {
       dtmc.setProbability(i, e.getKey(), e.getValue() / q);
     }
     // Add diagonal, if needed
     d = distr.sumAllBut(i);
     if (d < q) {
       dtmc.setProbability(i, i, 1 - (d / q));
     }
   }
   return dtmc;
 }