Browse Source

ExportIterations: Export steady-state BSCC iterations to individual HTML files

master
Joachim Klein 8 years ago
parent
commit
87489f7adc
  1. 14
      prism/src/explicit/DTMCModelChecker.java
  2. 10
      prism/src/prism/ProbModelChecker.java

14
prism/src/explicit/DTMCModelChecker.java

@ -2365,6 +2365,12 @@ public class DTMCModelChecker extends ProbModelChecker
for (int i = bscc.nextSetBit(0); i >= 0; i = bscc.nextSetBit(i + 1))
soln[i] = soln2[i] = equiprob;
ExportIterations iterationsExport = null;
if (settings.getBoolean(PrismSettings.PRISM_EXPORT_ITERATIONS)) {
iterationsExport = ExportIterations.createWithUniqueFilename("Explicit DTMC BSCC steady state value iteration", "iterations-ss-bscc");
iterationsExport.exportVector(soln);
}
// Start iterations
int iters = 0;
boolean done = false;
@ -2378,12 +2384,20 @@ public class DTMCModelChecker extends ProbModelChecker
double[] tmpsoln = soln;
soln = soln2;
soln2 = tmpsoln;
if (iterationsExport != null) {
iterationsExport.exportVector(soln);
}
}
// Finished value iteration
watch.stop();
mainLog.println("Value iteration took " + iters + " iterations and " + watch.elapsedSeconds() + " seconds.");
if (iterationsExport != null) {
iterationsExport.close();
}
// Non-convergence is an error (usually)
if (!done && errorOnNonConverge) {
String msg = "Iterative method did not converge within " + iters + " iterations.";

10
prism/src/prism/ProbModelChecker.java

@ -61,6 +61,7 @@ import parser.type.TypePathDouble;
import prism.LTLModelChecker.LTLProduct;
import sparse.PrismSparse;
import dv.DoubleVector;
import explicit.ExportIterations;
/*
* Model checker for DTMCs.
@ -2569,6 +2570,11 @@ public class ProbModelChecker extends NonProbModelChecker
JDD.Ref(bscc);
init = JDD.Apply(JDD.DIVIDE, bscc, JDD.Constant(n));
if (settings.getBoolean(PrismSettings.PRISM_EXPORT_ITERATIONS)) {
String filename = ExportIterations.getUniqueFilename("iterations-ss-bscc");
PrismNative.setDefaultExportIterationsFilename(filename);
}
// compute remaining probabilities
mainLog.println("\nComputing probabilities...");
mainLog.println("Engine: " + Prism.getEngineString(engine));
@ -2593,6 +2599,10 @@ public class ProbModelChecker extends NonProbModelChecker
JDD.Deref(trf);
JDD.Deref(init);
throw e;
} finally {
if (settings.getBoolean(PrismSettings.PRISM_EXPORT_ITERATIONS)) {
PrismNative.setDefaultExportIterationsFilename(ExportIterations.getDefaultFilename());
}
}
// derefs

Loading…
Cancel
Save