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(); transitionList = new TransitionList();
// Create updater for model // 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 // Clear storage for strategy
strategy = null; strategy = null;

15
prism/src/simulator/Updater.java

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

Loading…
Cancel
Save