From 0728db06cfab80867ce11caef0675cd69c0162c9 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Mon, 11 Jul 2011 22:16:02 +0000 Subject: [PATCH] Explicit engine reward construction handles model constants properly. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@3255 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/explicit/ProbModelChecker.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/prism/src/explicit/ProbModelChecker.java b/prism/src/explicit/ProbModelChecker.java index 6ecfce96..74d74c4d 100644 --- a/prism/src/explicit/ProbModelChecker.java +++ b/prism/src/explicit/ProbModelChecker.java @@ -245,7 +245,7 @@ public class ProbModelChecker extends StateModelChecker } // Special case: constant rewards if (rewStr.getNumStateItems() == 1 && Expression.isTrue(rewStr.getStates(0)) && rewStr.getReward(0).isConstant()) { - return new MCRewardsStateConstant(rewStr.getReward(0).evaluateDouble()); + return new MCRewardsStateConstant(rewStr.getReward(0).evaluateDouble(constantValues)); } // Normal: state rewards else { @@ -256,8 +256,8 @@ public class ProbModelChecker extends StateModelChecker for (i = 0; i < n; i++) { guard = rewStr.getStates(i); for (j = 0; j < numStates; j++) { - if (guard.evaluateBoolean(statesList.get(j))) { - rewSA.setStateReward(j, rewStr.getReward(i).evaluateDouble(statesList.get(j))); + if (guard.evaluateBoolean(constantValues, statesList.get(j))) { + rewSA.setStateReward(j, rewStr.getReward(i).evaluateDouble(constantValues, statesList.get(j))); } } } @@ -284,7 +284,7 @@ public class ProbModelChecker extends StateModelChecker // Special case: constant rewards // TODO /*if (rewStr.getNumStateItems() == 1 && Expression.isTrue(rewStr.getStates(0)) && rewStr.getReward(0).isConstant()) { - return new MCRewardsStateConstant(rewStr.getReward(0).evaluateDouble()); + return new MCRewardsStateConstant(rewStr.getReward(0).evaluateDouble(constantValues)); }*/ // Normal: transition rewards else { @@ -296,12 +296,12 @@ public class ProbModelChecker extends StateModelChecker guard = rewStr.getStates(i); action = rewStr.getSynch(i); for (j = 0; j < numStates; j++) { - if (guard.evaluateBoolean(statesList.get(j))) { + if (guard.evaluateBoolean(constantValues, statesList.get(j))) { numChoices = mdp.getNumChoices(j); for (k = 0; k < numChoices; k++) { mdpAction = mdp.getAction(j, k); if (mdpAction == null ? (action == null) : mdpAction.equals(action)) { - rewSimple.setTransitionReward(j, k, rewStr.getReward(i).evaluateDouble(statesList.get(j))); + rewSimple.setTransitionReward(j, k, rewStr.getReward(i).evaluateDouble(constantValues, statesList.get(j))); } } }