Browse Source

explicit engine: support -exportrows

tud-infrastructure-2018-10-12
Joachim Klein 7 years ago
parent
commit
23c02e6b06
  1. 2
      prism/src/automata/LTSFromDA.java
  2. 9
      prism/src/explicit/DTMCExplicit.java
  3. 2
      prism/src/explicit/LTSExplicit.java
  4. 30
      prism/src/explicit/MDPExplicit.java
  5. 12
      prism/src/explicit/Model.java
  6. 2
      prism/src/explicit/ModelExplicit.java
  7. 9
      prism/src/explicit/STPGAbstrSimple.java
  8. 2
      prism/src/explicit/SubNondetModel.java
  9. 10
      prism/src/explicit/modelviews/DTMCView.java
  10. 8
      prism/src/explicit/modelviews/MDPView.java
  11. 2
      prism/src/param/ParamModel.java
  12. 4
      prism/src/prism/Prism.java
  13. 4
      prism/src/strat/MDStrategyArray.java
  14. 3
      prism/src/strat/Strategy.java

2
prism/src/automata/LTSFromDA.java

@ -129,7 +129,7 @@ public class LTSFromDA extends ModelExplicit implements LTS
} }
@Override @Override
public void exportToPrismExplicitTra(PrismLog out)
public void exportToPrismExplicitTra(PrismLog out, int exportType)
{ {
throw new RuntimeException("Not implemented yet"); throw new RuntimeException("Not implemented yet");
} }

9
prism/src/explicit/DTMCExplicit.java

@ -55,8 +55,15 @@ public abstract class DTMCExplicit extends ModelExplicit implements DTMC
} }
@Override @Override
public void exportToPrismExplicitTra(PrismLog out)
public void exportToPrismExplicitTra(PrismLog out, int exportType) throws PrismException
{ {
switch (exportType) {
case prism.Prism.EXPORT_PLAIN:
case prism.Prism.EXPORT_ROWS:
break;
default:
throw new PrismException("Unsupported export type");
}
int i; int i;
TreeMap<Integer, Pair<Double, Object>> sorted; TreeMap<Integer, Pair<Double, Object>> sorted;
// Output transitions to .tra file // Output transitions to .tra file

2
prism/src/explicit/LTSExplicit.java

@ -184,7 +184,7 @@ public class LTSExplicit extends ModelExplicit implements LTS
} }
@Override @Override
public void exportToPrismExplicitTra(PrismLog out)
public void exportToPrismExplicitTra(PrismLog out, int exportType)
{ {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }

30
prism/src/explicit/MDPExplicit.java

@ -78,8 +78,20 @@ public abstract class MDPExplicit extends ModelExplicit implements MDP
} }
@Override @Override
public void exportToPrismExplicitTra(PrismLog out)
public void exportToPrismExplicitTra(PrismLog out, int exportType) throws PrismException
{ {
boolean rows = false;
switch (exportType)
{
case prism.Prism.EXPORT_PLAIN:
break;
case prism.Prism.EXPORT_ROWS:
rows = true;
break;
default:
throw new PrismException("Unsupported export type");
}
int i, j, numChoices; int i, j, numChoices;
Object action; Object action;
TreeMap<Integer, Double> sorted; TreeMap<Integer, Double> sorted;
@ -96,11 +108,21 @@ public abstract class MDPExplicit extends ModelExplicit implements MDP
sorted.put(e.getKey(), e.getValue()); sorted.put(e.getKey(), e.getValue());
} }
// Print out (sorted) transitions // Print out (sorted) transitions
for (Map.Entry<Integer, Double> e : sorted.entrySet()) {
// Note use of PrismUtils.formatDouble to match PRISM-exported files
out.print(i + " " + j + " " + e.getKey() + " " + PrismUtils.formatDouble(e.getValue()));
if (rows) {
out.print(i);
for (Map.Entry<Integer, Double> e : sorted.entrySet()) {
// Note use of PrismUtils.formatDouble to match PRISM-exported files
out.print(" " + PrismUtils.formatDouble(e.getValue()) + ":" + e.getKey());
}
action = getAction(i, j); action = getAction(i, j);
out.print(action == null ? "\n" : (" " + action + "\n")); out.print(action == null ? "\n" : (" " + action + "\n"));
} else {
for (Map.Entry<Integer, Double> e : sorted.entrySet()) {
// Note use of PrismUtils.formatDouble to match PRISM-exported files
out.print(i + " " + j + " " + e.getKey() + " " + PrismUtils.formatDouble(e.getValue()));
action = getAction(i, j);
out.print(action == null ? "\n" : (" " + action + "\n"));
}
} }
sorted.clear(); sorted.clear();
} }

12
prism/src/explicit/Model.java

@ -285,8 +285,16 @@ public interface Model
/** /**
* Export transition matrix to explicit format readable by PRISM (i.e. a .tra file). * Export transition matrix to explicit format readable by PRISM (i.e. a .tra file).
*/ */
public void exportToPrismExplicitTra(PrismLog log);
public default void exportToPrismExplicitTra(PrismLog log) throws PrismException
{
exportToPrismExplicitTra(log, prism.Prism.EXPORT_PLAIN);
}
/**
* Export transition matrix to explicit format readable by PRISM (i.e. a .tra file).
*/
public void exportToPrismExplicitTra(PrismLog log, int exportType) throws PrismException;
/** /**
* Export to a dot file. * Export to a dot file.
* @param filename Name of file to export to * @param filename Name of file to export to

2
prism/src/explicit/ModelExplicit.java

@ -387,7 +387,7 @@ public abstract class ModelExplicit implements Model
} }
@Override @Override
public abstract void exportToPrismExplicitTra(PrismLog out);
public abstract void exportToPrismExplicitTra(PrismLog out, int exportType) throws PrismException;
@Override @Override
public abstract void exportToPrismLanguage(String filename) throws PrismException; public abstract void exportToPrismLanguage(String filename) throws PrismException;

9
prism/src/explicit/STPGAbstrSimple.java

@ -365,8 +365,15 @@ public class STPGAbstrSimple extends ModelExplicit implements STPG, NondetModelS
} }
@Override @Override
public void exportToPrismExplicitTra(PrismLog out)
public void exportToPrismExplicitTra(PrismLog out, int exportType) throws PrismException
{ {
switch (exportType) {
case prism.Prism.EXPORT_ROWS:
break;
default:
throw new PrismException("Unsupported export type");
}
int i, j, k; int i, j, k;
TreeMap<Integer, Double> sorted; TreeMap<Integer, Double> sorted;
// Output transitions to .tra file // Output transitions to .tra file

2
prism/src/explicit/SubNondetModel.java

@ -245,7 +245,7 @@ public class SubNondetModel implements NondetModel
} }
@Override @Override
public void exportToPrismExplicitTra(PrismLog log)
public void exportToPrismExplicitTra(PrismLog log, int exportType)
{ {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }

10
prism/src/explicit/modelviews/DTMCView.java

@ -132,8 +132,16 @@ public abstract class DTMCView extends ModelView implements DTMC, Cloneable
} }
@Override @Override
public void exportToPrismExplicitTra(final PrismLog log)
public void exportToPrismExplicitTra(final PrismLog log, int exportType) throws PrismException
{ {
switch (exportType) {
case prism.Prism.EXPORT_PLAIN:
case prism.Prism.EXPORT_ROWS:
break;
default:
throw new PrismException("Unsupported export type");
}
// Output transitions to .tra file // Output transitions to .tra file
log.print(getNumStates() + " " + getNumTransitions() + "\n"); log.print(getNumStates() + " " + getNumTransitions() + "\n");
final TreeMap<Integer, Double> sorted = new TreeMap<>(); final TreeMap<Integer, Double> sorted = new TreeMap<>();

8
prism/src/explicit/modelviews/MDPView.java

@ -120,8 +120,14 @@ public abstract class MDPView extends ModelView implements MDP, Cloneable
} }
@Override @Override
public void exportToPrismExplicitTra(final PrismLog out)
public void exportToPrismExplicitTra(final PrismLog out, int exportType) throws PrismException
{ {
switch (exportType) {
case prism.Prism.EXPORT_PLAIN:
break;
default:
throw new PrismException("Unsupported export type");
}
final int numStates = getNumStates(); final int numStates = getNumStates();
// Output transitions to .tra file // Output transitions to .tra file
out.print(numStates + " " + getNumChoices() + " " + getNumTransitions() + "\n"); out.print(numStates + " " + getNumChoices() + " " + getNumTransitions() + "\n");

2
prism/src/param/ParamModel.java

@ -277,7 +277,7 @@ public final class ParamModel extends ModelExplicit implements MDPGeneric<Functi
} }
@Override @Override
public void exportToPrismExplicitTra(PrismLog log)
public void exportToPrismExplicitTra(PrismLog log, int exportType)
{ {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }

4
prism/src/prism/Prism.java

@ -2334,7 +2334,8 @@ public class Prism extends PrismComponent implements PrismSettingsListener
PrismLog tmpLog = getPrismLogForFile(file); PrismLog tmpLog = getPrismLogForFile(file);
switch (exportType) { switch (exportType) {
case Prism.EXPORT_PLAIN: case Prism.EXPORT_PLAIN:
currentModelExpl.exportToPrismExplicitTra(tmpLog);
case Prism.EXPORT_ROWS:
currentModelExpl.exportToPrismExplicitTra(tmpLog, exportType);
break; break;
case Prism.EXPORT_MATLAB: case Prism.EXPORT_MATLAB:
throw new PrismNotSupportedException("Export not yet supported"); throw new PrismNotSupportedException("Export not yet supported");
@ -2345,7 +2346,6 @@ public class Prism extends PrismComponent implements PrismSettingsListener
currentModelExpl.exportToDotFile(tmpLog, null, true); currentModelExpl.exportToDotFile(tmpLog, null, true);
break; break;
case Prism.EXPORT_MRMC: case Prism.EXPORT_MRMC:
case Prism.EXPORT_ROWS:
throw new PrismNotSupportedException("Export not yet supported"); throw new PrismNotSupportedException("Export not yet supported");
} }
tmpLog.close(); tmpLog.close();

4
prism/src/strat/MDStrategyArray.java

@ -27,6 +27,8 @@
package strat; package strat;
import prism.Prism;
import prism.PrismException;
import prism.PrismLog; import prism.PrismLog;
import explicit.MDP; import explicit.MDP;
import explicit.Model; import explicit.Model;
@ -97,7 +99,7 @@ public class MDStrategyArray extends MDStrategy
// Methods for Strategy // Methods for Strategy
@Override @Override
public void exportInducedModel(PrismLog out)
public void exportInducedModel(PrismLog out) throws PrismException
{ {
Model dtmcInd = model.constructInducedModel(this); Model dtmcInd = model.constructInducedModel(this);
dtmcInd.exportToPrismExplicitTra(out); dtmcInd.exportToPrismExplicitTra(out);

3
prism/src/strat/Strategy.java

@ -27,6 +27,7 @@
package strat; package strat;
import prism.PrismException;
import prism.PrismLog; import prism.PrismLog;
/** /**
@ -52,7 +53,7 @@ public interface Strategy
/** /**
* Export the model induced by this strategy to a PrismLog. * Export the model induced by this strategy to a PrismLog.
*/ */
public void exportInducedModel(PrismLog out);
public void exportInducedModel(PrismLog out) throws PrismException;
/** /**
* Export the strategy to a dot file (of the model showing the strategy). * Export the strategy to a dot file (of the model showing the strategy).

Loading…
Cancel
Save