Browse Source

Make simulator.Updater objects extract settings more cleanly. And respect doProbChecks option.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@7795 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 12 years ago
parent
commit
928a44101d
  1. 3
      prism/src/simulator/SimulatorEngine.java
  2. 15
      prism/src/simulator/Updater.java

3
prism/src/simulator/SimulatorEngine.java

@ -715,8 +715,7 @@ public class SimulatorEngine extends PrismComponent
transitionList = new TransitionList();
// Create updater for model
updater = new Updater(modulesFile, varList);
updater.setSumRoundOff(settings.getDouble(PrismSettings.PRISM_SUM_ROUND_OFF));
updater = new Updater(modulesFile, varList, this);
// Clear storage for strategy
strategy = null;

15
prism/src/simulator/Updater.java

@ -32,9 +32,11 @@ import parser.*;
import parser.ast.*;
import prism.*;
public class Updater
public class Updater extends PrismComponent
{
// Settings:
// Do we check that probabilities sum to 1?
protected boolean doProbChecks = true;
// The precision to which we check probabilities sum to 1
protected double sumRoundOff = 1e-5;
@ -63,10 +65,19 @@ public class Updater
protected BitSet enabledModules[];
public Updater(ModulesFile modulesFile, VarList varList)
{
this(modulesFile, varList, null);
}
public Updater(ModulesFile modulesFile, VarList varList, PrismComponent parent)
{
int i, j;
String s;
// Store some settings
doProbChecks = parent.getSettings().getBoolean(PrismSettings.PRISM_DO_PROB_CHECKS);
sumRoundOff = parent.getSettings().getDouble(PrismSettings.PRISM_SUM_ROUND_OFF);
// Get info from simulator/model
this.modulesFile = modulesFile;
modelType = modulesFile.getModelType();
@ -348,7 +359,7 @@ public class Updater
throw new PrismLangException(msg, ups);
}
// Check distribution sums to 1 (if required, and if is non-empty)
if (ch.size() > 0 && modelType.choicesSumToOne() && Math.abs(sum - 1) > sumRoundOff) {
if (doProbChecks && ch.size() > 0 && modelType.choicesSumToOne() && Math.abs(sum - 1) > sumRoundOff) {
throw new PrismLangException("Probabilities sum to " + sum + " in state " + state.toString(modulesFile), ups);
}
return ch;

Loading…
Cancel
Save