Browse Source

Explicit models: Move some transition/choice counting methods to default implementations in interfaces.

accumulation-v4.7
Dave Parker 6 years ago
parent
commit
ea6bff877e
  1. 7
      prism/src/explicit/MDP.java
  2. 18
      prism/src/explicit/NondetModel.java
  3. 7
      prism/src/explicit/modelviews/DTMCView.java
  4. 37
      prism/src/explicit/modelviews/MDPView.java

7
prism/src/explicit/MDP.java

@ -39,6 +39,7 @@ import java.util.TreeMap;
import java.util.PrimitiveIterator.OfInt;
import common.IterableStateSet;
import common.IteratorTools;
import explicit.graphviz.Decorator;
import explicit.rewards.MCRewards;
import explicit.rewards.MDPRewards;
@ -179,6 +180,12 @@ public interface MDP extends MDPGeneric<Double>
// Accessors (for NondetModel) - default implementations
@Override
default int getNumTransitions(final int s, final int i)
{
return IteratorTools.count(getTransitionsIterator(s, i));
}
@Override
default void exportToDotFileWithStrat(PrismLog out, BitSet mark, int strat[])
{

18
prism/src/explicit/NondetModel.java

@ -48,12 +48,26 @@ public interface NondetModel extends Model
/**
* Get the maximum number of nondeterministic choices in any state.
*/
public int getMaxNumChoices();
default int getMaxNumChoices()
{
int maxNumChoices = 0;
for (int state = 0, numStates = getNumStates(); state < numStates; state++) {
maxNumChoices = Math.max(maxNumChoices, getNumChoices(state));
}
return maxNumChoices;
}
/**
* Get the total number of nondeterministic choices over all states.
*/
public int getNumChoices();
default int getNumChoices()
{
int numChoices = 0;
for (int state = 0, numStates = getNumStates(); state < numStates; state++) {
numChoices += getNumChoices(state);
}
return numChoices;
}
/**
* Get the action label (if any) for choice {@code i} of state {@code s}.

7
prism/src/explicit/modelviews/DTMCView.java

@ -34,7 +34,6 @@ import java.util.PrimitiveIterator;
import java.util.function.IntFunction;
import common.IterableStateSet;
import common.IteratorTools;
import common.iterable.MappingIterator;
import explicit.DTMC;
import explicit.Distribution;
@ -95,12 +94,6 @@ public abstract class DTMCView extends ModelView implements DTMC, Cloneable
//--- Model ---
@Override
public int getNumTransitions(final int s)
{
return IteratorTools.count(getTransitionsIterator(s));
}
@Override
public SuccessorsIterator getSuccessors(final int state)
{

37
prism/src/explicit/modelviews/MDPView.java

@ -32,7 +32,6 @@ import java.util.Iterator;
import java.util.Map.Entry;
import java.util.PrimitiveIterator;
import common.IteratorTools;
import explicit.DTMCFromMDPAndMDStrategy;
import explicit.Distribution;
import explicit.MDP;
@ -93,16 +92,6 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable
//--- Model ---
@Override
public int getNumTransitions(int s)
{
int numTransitions = 0;
for (int j = 0, numChoices = getNumChoices(s); j < numChoices; j++) {
numTransitions += getNumTransitions(s, j);
}
return numTransitions;
}
@Override
public String infoString()
{
@ -129,26 +118,6 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable
//--- NondetModel ---
@Override
public int getNumChoices()
{
int numChoices = 0;
for (int state = 0, numStates = getNumStates(); state < numStates; state++) {
numChoices += getNumChoices(state);
}
return numChoices;
}
@Override
public int getMaxNumChoices()
{
int maxNumChoices = 0;
for (int state = 0, numStates = getNumStates(); state < numStates; state++) {
maxNumChoices = Math.max(maxNumChoices, getNumChoices(state));
}
return maxNumChoices;
}
@Override
public boolean areAllChoiceActionsUnique()
{
@ -168,12 +137,6 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable
return true;
}
@Override
public int getNumTransitions(final int state, final int choice)
{
return IteratorTools.count(getTransitionsIterator(state, choice));
}
@Override
public SuccessorsIterator getSuccessors(final int state, final int choice)
{

Loading…
Cancel
Save