From 928a44101d7a6cc6c88e011eac2b648d3ed73361 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Mon, 6 Jan 2014 13:05:32 +0000 Subject: [PATCH] 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 --- prism/src/simulator/SimulatorEngine.java | 3 +-- prism/src/simulator/Updater.java | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/prism/src/simulator/SimulatorEngine.java b/prism/src/simulator/SimulatorEngine.java index 9a5e6140..e976422d 100644 --- a/prism/src/simulator/SimulatorEngine.java +++ b/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; diff --git a/prism/src/simulator/Updater.java b/prism/src/simulator/Updater.java index 16c3ba50..5f4b9268 100644 --- a/prism/src/simulator/Updater.java +++ b/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;