Browse Source

Added clearRewards method to explicit rewards + better handling of set to zero.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@3392 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 15 years ago
parent
commit
7282582841
  1. 17
      prism/src/explicit/rewards/MDPRewardsSimple.java
  2. 20
      prism/src/explicit/rewards/STPGRewardsSimple.java
  3. 3
      prism/src/explicit/rewards/StateRewardsSimple.java

17
prism/src/explicit/rewards/MDPRewardsSimple.java

@ -61,6 +61,9 @@ public class MDPRewardsSimple implements MDPRewards
*/ */
public void setStateReward(int s, double r) public void setStateReward(int s, double r)
{ {
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it // If no rewards array created yet, create it
if (stateRewards == null) { if (stateRewards == null) {
stateRewards = new ArrayList<Double>(numStates); stateRewards = new ArrayList<Double>(numStates);
@ -77,6 +80,9 @@ public class MDPRewardsSimple implements MDPRewards
public void setTransitionReward(int s, int i, double r) public void setTransitionReward(int s, int i, double r)
{ {
List<Double> list; List<Double> list;
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it // If no rewards array created yet, create it
if (transRewards == null) { if (transRewards == null) {
transRewards = new ArrayList<List<Double>>(numStates); transRewards = new ArrayList<List<Double>>(numStates);
@ -101,6 +107,17 @@ public class MDPRewardsSimple implements MDPRewards
list.set(i, r); list.set(i, r);
} }
/**
* Clear all rewards for state s.
*/
public void clearRewards(int s)
{
setStateReward(s, 0.0);
if (transRewards != null && transRewards.size() > s) {
transRewards.set(s, null);
}
}
// Accessors // Accessors
@Override @Override

20
prism/src/explicit/rewards/STPGRewardsSimple.java

@ -57,6 +57,9 @@ public class STPGRewardsSimple extends MDPRewardsSimple implements STPGRewards
public void setNestedTransitionReward(int s, int i, double r) public void setNestedTransitionReward(int s, int i, double r)
{ {
List<Double> list; List<Double> list;
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it // If no rewards array created yet, create it
if (nestedTransRewards1 == null) { if (nestedTransRewards1 == null) {
nestedTransRewards1 = new ArrayList<List<Double>>(numStates); nestedTransRewards1 = new ArrayList<List<Double>>(numStates);
@ -88,6 +91,9 @@ public class STPGRewardsSimple extends MDPRewardsSimple implements STPGRewards
{ {
List<List<Double>> list1; List<List<Double>> list1;
List<Double> list2; List<Double> list2;
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it // If no rewards array created yet, create it
if (nestedTransRewards2 == null) { if (nestedTransRewards2 == null) {
nestedTransRewards2 = new ArrayList<List<List<Double>>>(numStates); nestedTransRewards2 = new ArrayList<List<List<Double>>>(numStates);
@ -126,6 +132,20 @@ public class STPGRewardsSimple extends MDPRewardsSimple implements STPGRewards
list2.set(j, r); list2.set(j, r);
} }
/**
* Clear all rewards for state s.
*/
public void clearRewards(int s)
{
super.clearRewards(s);
if (nestedTransRewards1 != null && nestedTransRewards1.size() > s) {
nestedTransRewards1.set(s, null);
}
if (nestedTransRewards2 != null && nestedTransRewards2.size() > s) {
nestedTransRewards2.set(s, null);
}
}
// Accessors // Accessors
@Override @Override

3
prism/src/explicit/rewards/StateRewardsSimple.java

@ -54,6 +54,9 @@ public class StateRewardsSimple extends StateRewards
*/ */
public void setStateReward(int s, double r) public void setStateReward(int s, double r)
{ {
// Nothing to do for zero reward
if (r == 0.0)
return;
// If list not big enough, extend // If list not big enough, extend
int n = s - stateRewards.size() + 1; int n = s - stateRewards.size() + 1;
if (n > 0) { if (n > 0) {

Loading…
Cancel
Save