Browse Source

Method to build embedded DTMC.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@1543 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 17 years ago
parent
commit
24f7d04d70
  1. 34
      prism/src/explicit/CTMC.java

34
prism/src/explicit/CTMC.java

@ -26,6 +26,8 @@
package explicit; package explicit;
import java.util.Map;
import prism.ModelType; import prism.ModelType;
/** /**
@ -35,10 +37,34 @@ public class CTMC extends DTMC
{ {
// Model type // Model type
public static ModelType modelType = ModelType.CTMC; public static ModelType modelType = ModelType.CTMC;
// Uniformisation rate used to build CTMC/CTMDP // Uniformisation rate used to build CTMC/CTMDP
public double unif; public double unif;
/**
* Build the embedded DTMC for this CTMC
*/
public DTMC buildEmbeddedDTMC()
{
DTMC dtmc;
Distribution distr;
int i;
double d;
dtmc = new DTMC(numStates);
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;
}
/** /**
* Uniformise. * Uniformise.
* @param unif: Unifomisation rate * @param unif: Unifomisation rate
@ -53,7 +79,7 @@ public class CTMC extends DTMC
} }
this.unif = unif; this.unif = unif;
} }
/** /**
* Uniformise with an appropriate rate. * Uniformise with an appropriate rate.
*/ */
@ -61,7 +87,7 @@ public class CTMC extends DTMC
{ {
uniformise(1.02 * maxExitRate()); uniformise(1.02 * maxExitRate());
} }
/** /**
* Compute the maximum exit rate. * Compute the maximum exit rate.
*/ */

Loading…
Cancel
Save