From 9aae5befb46c1ddb2270e0ec751ea9c0070b47ed Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Wed, 24 Jun 2015 09:40:11 +0000 Subject: [PATCH] DTMCFromMDPMemorylessAdversary gives actions from MDP. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10077 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- .../DTMCFromMDPMemorylessAdversary.java | 42 +++++++++---------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/prism/src/explicit/DTMCFromMDPMemorylessAdversary.java b/prism/src/explicit/DTMCFromMDPMemorylessAdversary.java index c75628c6..24497c99 100644 --- a/prism/src/explicit/DTMCFromMDPMemorylessAdversary.java +++ b/prism/src/explicit/DTMCFromMDPMemorylessAdversary.java @@ -26,15 +26,19 @@ package explicit; -import java.util.*; +import java.util.ArrayList; +import java.util.BitSet; +import java.util.Iterator; +import java.util.List; import java.util.Map.Entry; -import explicit.rewards.MCRewards; import parser.State; import parser.Values; import prism.ModelType; +import prism.Pair; import prism.PrismException; import prism.PrismNotSupportedException; +import explicit.rewards.MCRewards; /** * Explicit-state representation of a DTMC, constructed (implicitly) @@ -175,37 +179,31 @@ public class DTMCFromMDPMemorylessAdversary extends DTMCExplicit // Accessors (for DTMC) + @Override public int getNumTransitions(int s) { return adv[s] >= 0 ? mdp.getNumTransitions(s, adv[s]) : 0; } + @Override public Iterator> getTransitionsIterator(int s) { if (adv[s] >= 0) { return mdp.getTransitionsIterator(s, adv[s]); } else { // Empty iterator - return new Iterator>() - { - @Override - public boolean hasNext() - { - return false; - } - - @Override - public Entry next() - { - return null; - } - - @Override - public void remove() - { - throw new UnsupportedOperationException(); - } - }; + return new ArrayList>().iterator(); + } + } + + @Override + public Iterator>> getTransitionsAndActionsIterator(int s) + { + if (adv[s] >= 0) { + return new DTMCExplicit.AddDefaultActionToTransitionsIterator(mdp.getTransitionsIterator(s, adv[s]), mdp.getAction(s, adv[s])); + } else { + // Empty iterator + return new ArrayList>>().iterator(); } }