From fae4eb38d7001dd09ad26002189674becd32c3f2 Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Sat, 27 Jun 2015 22:58:19 +0000 Subject: [PATCH] Add support for -exporttarget to explicit engine. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10111 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/explicit/DTMCModelChecker.java | 13 +++++++++++++ prism/src/explicit/MDPModelChecker.java | 14 +++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/prism/src/explicit/DTMCModelChecker.java b/prism/src/explicit/DTMCModelChecker.java index bc3176ab..4e553c34 100644 --- a/prism/src/explicit/DTMCModelChecker.java +++ b/prism/src/explicit/DTMCModelChecker.java @@ -27,6 +27,7 @@ package explicit; import java.io.File; +import java.util.Arrays; import java.util.BitSet; import java.util.List; import java.util.Map; @@ -438,6 +439,18 @@ public class DTMCModelChecker extends ProbModelChecker target = targetNew; } + // If required, export info about target states + if (getExportTarget()) { + BitSet bsInit = new BitSet(n); + for (i = 0; i < n; i++) { + bsInit.set(i, dtmc.isInitialState(i)); + } + List labels = Arrays.asList(bsInit, target); + List labelNames = Arrays.asList("init", "target"); + mainLog.println("\nExporting target states info to file \"" + getExportTargetFilename() + "\"..."); + exportLabels(dtmc, labels, labelNames, Prism.EXPORT_PLAIN, new PrismFileLog(getExportTargetFilename())); + } + // Precomputation timerProb0 = System.currentTimeMillis(); if (precomp && prob0) { diff --git a/prism/src/explicit/MDPModelChecker.java b/prism/src/explicit/MDPModelChecker.java index 73198e23..0a5847e4 100644 --- a/prism/src/explicit/MDPModelChecker.java +++ b/prism/src/explicit/MDPModelChecker.java @@ -26,6 +26,7 @@ package explicit; +import java.util.Arrays; import java.util.BitSet; import java.util.Iterator; import java.util.List; @@ -33,7 +34,6 @@ import java.util.Map; import parser.VarList; import parser.ast.Declaration; -import parser.ast.DeclarationInt; import parser.ast.DeclarationIntUnbounded; import parser.ast.Expression; import prism.Prism; @@ -288,6 +288,18 @@ public class MDPModelChecker extends ProbModelChecker } } + // If required, export info about target states + if (getExportTarget()) { + BitSet bsInit = new BitSet(n); + for (i = 0; i < n; i++) { + bsInit.set(i, mdp.isInitialState(i)); + } + List labels = Arrays.asList(bsInit, target); + List labelNames = Arrays.asList("init", "target"); + mainLog.println("\nExporting target states info to file \"" + getExportTargetFilename() + "\"..."); + exportLabels(mdp, labels, labelNames, Prism.EXPORT_PLAIN, new PrismFileLog(getExportTargetFilename())); + } + // If required, create/initialise strategy storage // Set choices to -1, denoting unknown // (except for target states, which are -2, denoting arbitrary)