diff --git a/prism/src/explicit/Distribution.java b/prism/src/explicit/Distribution.java index fdda1de2..b54d5ecc 100644 --- a/prism/src/explicit/Distribution.java +++ b/prism/src/explicit/Distribution.java @@ -47,6 +47,19 @@ public class Distribution implements Iterable> clear(); } + /** + * Copy constructor. + */ + public Distribution(Distribution distr) + { + this(); + Iterator> i = distr.iterator(); + while (i.hasNext()) { + Map.Entry e = i.next(); + add(e.getKey(), e.getValue()); + } + } + /** * Clear all entries of the distribution. */ diff --git a/prism/src/explicit/MDP.java b/prism/src/explicit/MDP.java index 18b3c6f6..6d5153fe 100644 --- a/prism/src/explicit/MDP.java +++ b/prism/src/explicit/MDP.java @@ -76,6 +76,21 @@ public class MDP extends Model initialise(numStates); } + /** + * Constructor: new MDP copied from an existing DTMC. + */ + public MDP(DTMC dtmc) + { + this(dtmc.numStates); + for (int s : dtmc.getInitialStates()) { + addInitialState(s); + } + for (int s = 0; s < numStates; s++) { + addChoice(s, new Distribution(dtmc.getTransitions(s))); + } + // TODO: copy rewards, etc. + } + /** * Initialise: new model with fixed number of states. */