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)
{
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it
if (stateRewards == null) {
stateRewards = new ArrayList<Double>(numStates);
@ -77,6 +80,9 @@ public class MDPRewardsSimple implements MDPRewards
public void setTransitionReward(int s, int i, double r)
{
List<Double> list;
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it
if (transRewards == null) {
transRewards = new ArrayList<List<Double>>(numStates);
@ -101,6 +107,17 @@ public class MDPRewardsSimple implements MDPRewards
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
@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)
{
List<Double> list;
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it
if (nestedTransRewards1 == null) {
nestedTransRewards1 = new ArrayList<List<Double>>(numStates);
@ -88,6 +91,9 @@ public class STPGRewardsSimple extends MDPRewardsSimple implements STPGRewards
{
List<List<Double>> list1;
List<Double> list2;
// Nothing to do for zero reward
if (r == 0.0)
return;
// If no rewards array created yet, create it
if (nestedTransRewards2 == null) {
nestedTransRewards2 = new ArrayList<List<List<Double>>>(numStates);
@ -126,6 +132,20 @@ public class STPGRewardsSimple extends MDPRewardsSimple implements STPGRewards
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
@Override

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

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

Loading…
Cancel
Save