Was already enabled for steady-state probabilities in 3cb4f42d,
following addition of no-sparse printing for MTBDD vectors.
Not sure why this was not enabled too.
Was previously being parsed as a PRISM expression as a fallback,
but the parser currently does not handle big integers.
Test case added. And these tests moved to a new "testing" directory.
Like --args <file>, this allow a list of lists of arguments to be provided,
with each element of the outer list representing a separate run of PRISM
to be performed on all benchmarks. Here, these can be provided directly
on the command-line, as a comma-separated list, rather than creating a file.
For example:
prism-auto ... --args-list '-gs,-jac,-jor -omega 0.9'
The prism-log-extract script extracts and collates info from a
collection of PRISM log files.
The basic usage is "prism-log-extract <targets>" where <targets>
is one or more log files or directories containing log files.
The default behaviour is to extract all known fields from all logs
and then print the resulting table of values in CSV format.
Run "prism-log-extract --help" for details of further options.
New switch --filter-models X which restricts the list of models used from
a directory to those that match the filter X. Currently, this can refer to
the number of states and/or the model type. Examples:
* prism-auto . --filter-models "states>100 and states<10000"
* prism-auto . --filter-models "model_type=='DTMC'"
* prism-auto . --filter-models "'MC' in model_type"
The model metadata is by default read in from a models.csv file (as found,
for example, in the PRISM benchmark suite). The name of the file used can
be changed with --models-info FILE.
When using the -l (--log) option and also the -a (--args) option,
subirectories are created for each entry in the args file.
This makes it easier to process the log files afterwards.
Relatedly, if the directory specified in the -l switch, or the required
subdirectories, do not exist, there is now no error and they are created.
Calling code should be calling Prism.setPRISMModelConstants now,
after recent changes to the usage of Prism. But the methods
in GUISimulator got missed when this was updated elsewhere.
Introduced in symbolic engines during recent-ish refactoring.
Seems to have been wrong in explicit engines for longer.
Format is 0=0.27109177824020264, not 0:=0.27109177824020264
This allows simulation and statistical model checking to be performed on
a wider range of model sources, not just PRISM language models.
SimulatorEngine and associated files have had their dependencies on
ModulesFile removed, now using ModelGenerator and RewardGenerator
instead. SimulatorEngine also no longer uses TransitionList and Updater:
these are internal to the ModulesFileModelGenerator which provides
ModelGenerator access to a PRISM model.
Associated simulator classes have been altered too. Path and Sampler
classes now use a ModelInfo and RewardGenerator, rather than a
ModulesFile and TransitionList. Path classes store an action object and
action string, rather than action info specific to a ModulesFile. This
means that the methods getTransitionModuleOrAction and
getTransitionModuleOrActionIndex disappear from SimulatorEngine,replaced
by getTransitionAction and getTransitionActionString.
Usage of SimulatorEngine changes slightly. There is now a loadModel()
method, after which paths are created or statistical model checking
initiated, rather than a ModulesFile being passed to these latter
methods as done previously. The main function of SimulatorEngine is
manual/automatic path creation and statistical model checking. Exploring
states/transitions of a model is now de-emphasised, since this is
already provided directly by the passed in ModelGenerator. But
SimulatorEngine still provide access to information about transitions
etc. in the model because it allows this to be queried for arbitrary
states along created paths. The method checkModelForSimulation() has
been removed - since these checks now occur earlier at the point of
creating a ModelGenerator - and is now in Prism instead.
In Prism, in line with other recent changes, simulation-based methods
now use the currently loaded model, rather than taking a passed in
ModulesFile. For use within these methods, or from other methods that
want to access SimulatorEngine directly, there is a new method
loadModelIntoSimulator().