14const std::string MultiObjectiveSettings::methodOptionName =
"method";
15const std::string MultiObjectiveSettings::exportPlotOptionName =
"exportplot";
16const std::string MultiObjectiveSettings::precisionOptionName =
"precision";
17const std::string MultiObjectiveSettings::maxStepsOptionName =
"maxsteps";
18const std::string MultiObjectiveSettings::schedulerRestrictionOptionName =
"purescheds";
19const std::string MultiObjectiveSettings::printResultsOptionName =
"printres";
20const std::string MultiObjectiveSettings::encodingOptionName =
"encoding";
21const std::string MultiObjectiveSettings::lexicographicOptionName =
"lex";
24 std::vector<std::string>
methods = {
"pcaa",
"constraintbased"};
35 "directory",
"A path to an existing directory in which the results will be saved.")
38 std::vector<std::string>
precTypes = {
"abs",
"reldiff"};
53 "Aborts the computation after the given number of refinement steps (= computed pareto optimal points).")
56 "value",
"the threshold for the number of refinement steps to be performed.")
59 std::vector<std::string>
memoryPatterns = {
"positional",
"goalmemory",
"arbitrary",
"counter"};
62 "Restricts the class of considered schedulers to non-randomized schedulers with the provided memory pattern.")
70 "The Number of memory states (only if supported by the pattern).")
102 "If set, lexicographic model checking instead of normal multi objective is performed.")
109 return storm::modelchecker::multiobjective::MultiObjectiveMethod::Pcaa;
112 return storm::modelchecker::multiobjective::MultiObjectiveMethod::ConstraintBased;
122 if (
result.back() !=
'/') {
160 STORM_LOG_THROW(states <= 1, storm::exceptions::IllegalArgumentException,
161 "The number of memory states should not be provided for the given memory pattern.");
162 }
else if (
pattern ==
"goalmemory") {
164 STORM_LOG_THROW(states == 0, storm::exceptions::IllegalArgumentException,
165 "The number of memory states should not be provided for the given memory pattern.");
166 }
else if (
pattern ==
"arbitrary") {
167 STORM_LOG_THROW(states > 0, storm::exceptions::IllegalArgumentException,
168 "Invalid number of memory states for provided pattern. Please specify a positive number.");
170 result.setMemoryStates(states);
171 }
else if (
pattern ==
"counter") {
172 STORM_LOG_THROW(states > 0, storm::exceptions::IllegalArgumentException,
173 "Invalid number of memory states for provided pattern. Please specify a positive number.");
175 result.setMemoryStates(states);
177 STORM_LOG_THROW(
false, storm::exceptions::IllegalArgumentException,
"Invalid memory pattern: " +
pattern +
".");
virtual std::string getValueAsString() const =0
Retrieves the value of this argument as a string.
virtual uint_fast64_t getValueAsUnsignedInteger() const =0
Retrieves the value of this argument as an unsigned integer.
virtual bool getValueAsBoolean() const =0
Retrieves the value of this argument as a boolean.
virtual double getValueAsDouble() const =0
Retrieves the value of this argument as a double.
static ArgumentBuilder createUnsignedIntegerArgument(std::string const &name, std::string const &description)
Creates an unsigned integer argument with the given parameters.
static ArgumentBuilder createDoubleArgument(std::string const &name, std::string const &description)
Creates a double argument with the given parameters.
static ArgumentBuilder createBooleanArgument(std::string const &name, std::string const &description)
Creates a boolean argument with the given parameters.
static ArgumentBuilder createStringArgument(std::string const &name, std::string const &description)
Creates a string argument with the given parameters.
static std::shared_ptr< ArgumentValidator< double > > createDoubleRangeValidatorExcluding(double lowerBound, double upperBound)
static std::shared_ptr< ArgumentValidator< std::string > > createMultipleChoiceValidator(std::vector< std::string > const &choices)
static std::shared_ptr< ArgumentValidator< std::string > > createWritableFileValidator()
This class provides the interface to create an option...
ArgumentBase const & getArgumentByName(std::string const &argumentName) const
Returns a reference to the argument with the specified long name.
bool getHasOptionBeenSet() const
Retrieves whether the option has been set.
This is the base class of the settings for a particular module.
void addOption(std::shared_ptr< Option > const &option)
Adds and registers the given option.
Option & getOption(std::string const &longName)
Retrieves the option with the given long name.
bool isClassicEncodingSet() const
Retrieves whether the classic encoding for constraint-based methods is to be preferred.
storm::modelchecker::multiobjective::MultiObjectiveMethod getMultiObjectiveMethod() const
Returns the preferred method for multi objective model checking.
bool isPrintResultsSet() const
Retrieves whether output of intermediate results is enabled.
bool isAutoEncodingSet() const
Retrieves whether the encoding for constraint-based methods should be picked automatically.
storm::storage::SchedulerClass getSchedulerRestriction() const
Retrieves the scheduler restriction if it has been set.
bool isRedundantBsccConstraintsSet() const
Retrieves whether redundant BSCC constraints are to be added.
static const std::string moduleName
bool getPrecisionAbsolute() const
Retrieves whether the desired precision is considered to be absolute.
bool isBsccDetectionViaFlowConstraintsSet() const
Retrieves whether the encoding for constraint-based methods should use flow constraints for BSCC dete...
bool isMaxStepsSet() const
Retrieves whether or not a threshold for the number of performed refinement steps is given.
bool getPrecisionRelativeToDiff() const
Retrieves whether the desired precision is considered to be relative to the difference between highes...
std::string getExportPlotDirectory() const
The path to a directory in which the plot data should be stored.
virtual bool check() const override
Checks whether the settings are consistent.
MultiObjectiveSettings()
Creates a new set of multi-objective model checking settings.
bool hasSchedulerRestriction() const
Retrieves whether a scheduler restriction has been set.
uint_fast64_t getMaxSteps() const
Retrieves The maximum number of refinement steps that should be performed (if given).
bool isFlowEncodingSet() const
Retrieves whether the flow encoding for constraint-based methods is to be preferred.
bool isBsccDetectionViaOrderConstraintsSet() const
Retrieves whether the encoding for constraint-based methods should use order constraints for BSCC det...
bool isLexicographicModelCheckingSet() const
Retrieves whether lexicographic model checking has been set.
double getPrecision() const
Retrieves the desired precision for quantitative- and pareto queries.
bool isIndicatorConstraintsSet() const
Retrieves whether the encoding for constraint-based methods should use indicator constraints.
bool isBigMConstraintsSet() const
Retrieves whether the encoding for constraint-based methods should use BigM constraints.
bool isExportPlotSet() const
Retrieves whether the data for plotting should be exported.
SchedulerClass & setIsDeterministic(bool value=true)
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_THROW(cond, exception, message)
std::vector< std::string > memoryPatterns
SettingsType const & getModule()
Get module.