diff --git a/prism/src/explicit/MDP.java b/prism/src/explicit/MDP.java index 5ca5b8fb..e38f7512 100644 --- a/prism/src/explicit/MDP.java +++ b/prism/src/explicit/MDP.java @@ -190,14 +190,12 @@ public interface MDP extends Model * and only those columns in the probability matrix are considered, that * are elements of {@code states}. * - * The result of this multiplication is added to the contents - * of {@code dest}. + * The result of this multiplication is added to the contents of {@code dest}. * * @param states States for which to multiply * @param adv Strategy to use * @param source Vector to multiply matrix with * @param dest Vector to write result to. */ - public void mvMultRight(int[] states, int[] adv, double[] source, - double[] dest); + public void mvMultRight(int[] states, int[] adv, double[] source, double[] dest); } diff --git a/prism/src/explicit/MDPSimple.java b/prism/src/explicit/MDPSimple.java index 83f952a8..23ea10d3 100644 --- a/prism/src/explicit/MDPSimple.java +++ b/prism/src/explicit/MDPSimple.java @@ -1024,6 +1024,20 @@ public class MDPSimple extends ModelSimple implements MDP return res; } + @Override + public void mvMultRight(int[] states, int[] adv, double[] source, + double[] dest) { + for (int s : states) { + Iterator> it = this.getTransitionsIterator(s, adv[s]); + while (it.hasNext()) { + Entry next = it.next(); + int col = next.getKey(); + double prob = next.getValue(); + dest[col] += prob * source[s]; + } + } + } + // Accessors (other) /** @@ -1162,18 +1176,4 @@ public class MDPSimple extends ModelSimple implements MDP // TODO: compare actions (complicated: null = null,null,null,...) return true; } - - @Override - public void mvMultRight(int[] states, int[] adv, double[] source, - double[] dest) { - for (int s : states) { - Iterator> it = this.getTransitionsIterator(s, adv[s]); - while (it.hasNext()) { - Entry next = it.next(); - int col = next.getKey(); - double prob = next.getValue(); - dest[col] += prob * source[s]; - } - } - } } diff --git a/prism/src/explicit/MDPSparse.java b/prism/src/explicit/MDPSparse.java index b404cfec..4b7f98d3 100644 --- a/prism/src/explicit/MDPSparse.java +++ b/prism/src/explicit/MDPSparse.java @@ -1015,6 +1015,20 @@ public class MDPSparse extends ModelSparse implements MDP return res; } + @Override + public void mvMultRight(int[] states, int[] adv, double[] source, double[] dest) + { + for (int s : states) { + int j, l2, h2; + int k = adv[s]; + j = rowStarts[s] + k; + l2 = choiceStarts[j]; + h2 = choiceStarts[j + 1]; + for (k = l2; k < h2; k++) { + dest[cols[k]] += nonZeros[k] * source[s]; + } + } + } // Standard methods @Override @@ -1074,19 +1088,4 @@ public class MDPSparse extends ModelSparse implements MDP // TODO: compare actions (complicated: null = null,null,null,...) return true; } - - @Override - public void mvMultRight(int[] states, int[] adv, double[] source, double[] dest) - { - for (int s : states) { - int j, l2, h2; - int k = adv[s]; - j = rowStarts[s] + k; - l2 = choiceStarts[j]; - h2 = choiceStarts[j + 1]; - for (k = l2; k < h2; k++) { - dest[cols[k]] += nonZeros[k] * source[s]; - } - } - } }