From 1383ed7a9949bc799a32779a4aa2f1f33749fd9e Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Sun, 21 Feb 2010 15:43:35 +0000 Subject: [PATCH] Constructors for explicit models. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@1759 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/explicit/Distribution.java | 13 +++++++++++++ prism/src/explicit/MDP.java | 15 +++++++++++++++ 2 files changed, 28 insertions(+) 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. */