Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
CuddSettings.cpp
Go to the documentation of this file.
2
4
9
12
13namespace storm {
14namespace settings {
15namespace modules {
16
17const std::string CuddSettings::moduleName = "cudd";
18const std::string CuddSettings::precisionOptionName = "precision";
19const std::string CuddSettings::maximalMemoryOptionName = "maxmem";
20const std::string CuddSettings::reorderOptionName = "dynreorder";
21const std::string CuddSettings::reorderTechniqueOptionName = "reordertechnique";
22
24 this->addOption(storm::settings::OptionBuilder(moduleName, precisionOptionName, true, "Sets the precision used by Cudd.")
25 .setIsAdvanced()
27 "value", "The precision up to which to constants are considered to be different.")
30 .build())
31 .build());
32
33 this->addOption(
34 storm::settings::OptionBuilder(moduleName, maximalMemoryOptionName, true, "Sets the upper bound of memory available to Cudd in MB.")
35 .setIsAdvanced()
36 .addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("value", "The memory available to Cudd (0 means unlimited).")
38 .build())
39 .build());
40
41 this->addOption(
42 storm::settings::OptionBuilder(moduleName, reorderOptionName, false, "Sets whether dynamic reordering is allowed.").setIsAdvanced().build());
43
44 std::vector<std::string> reorderingTechniques;
45 reorderingTechniques.push_back("none");
46 reorderingTechniques.push_back("random");
47 reorderingTechniques.push_back("randompivot");
48 reorderingTechniques.push_back("sift");
49 reorderingTechniques.push_back("siftconv");
50 reorderingTechniques.push_back("ssift");
51 reorderingTechniques.push_back("ssiftconv");
52 reorderingTechniques.push_back("gsift");
53 reorderingTechniques.push_back("gsiftconv");
54 reorderingTechniques.push_back("win2");
55 reorderingTechniques.push_back("win2conv");
56 reorderingTechniques.push_back("win3");
57 reorderingTechniques.push_back("win3conv");
58 reorderingTechniques.push_back("win4");
59 reorderingTechniques.push_back("win4conv");
60 reorderingTechniques.push_back("annealing");
61 reorderingTechniques.push_back("genetic");
62 reorderingTechniques.push_back("exact");
63 this->addOption(
64 storm::settings::OptionBuilder(moduleName, reorderTechniqueOptionName, true, "Sets the reordering technique used by Cudd.")
65 .setIsAdvanced()
66 .addArgument(storm::settings::ArgumentBuilder::createStringArgument("method", "Sets which technique is used by Cudd's reordering routines.")
67 .setDefaultValueString("gsift")
69 .build())
70 .build());
71}
72
74 return this->getOption(precisionOptionName).getArgumentByName("value").getValueAsDouble();
75}
76
78 return this->getOption(maximalMemoryOptionName).getArgumentByName("value").getValueAsUnsignedInteger();
79}
80
82 return this->getOption(reorderOptionName).getHasOptionBeenSet();
83}
84
86 std::string reorderingTechniqueAsString = this->getOption(reorderTechniqueOptionName).getArgumentByName("method").getValueAsString();
87 if (reorderingTechniqueAsString == "none") {
89 } else if (reorderingTechniqueAsString == "random") {
91 } else if (reorderingTechniqueAsString == "randompivot") {
93 } else if (reorderingTechniqueAsString == "sift") {
95 } else if (reorderingTechniqueAsString == "siftconv") {
97 } else if (reorderingTechniqueAsString == "ssift") {
99 } else if (reorderingTechniqueAsString == "ssiftconv") {
101 } else if (reorderingTechniqueAsString == "gsift") {
103 } else if (reorderingTechniqueAsString == "gsiftconv") {
105 } else if (reorderingTechniqueAsString == "win2") {
107 } else if (reorderingTechniqueAsString == "win2conv") {
109 } else if (reorderingTechniqueAsString == "win3") {
111 } else if (reorderingTechniqueAsString == "win3conv") {
113 } else if (reorderingTechniqueAsString == "win4") {
115 } else if (reorderingTechniqueAsString == "win4conv") {
117 } else if (reorderingTechniqueAsString == "annealing") {
119 } else if (reorderingTechniqueAsString == "genetic") {
121 } else if (reorderingTechniqueAsString == "exact") {
123 }
124 STORM_LOG_THROW(false, storm::exceptions::IllegalArgumentValueException,
125 "Illegal value '" << reorderingTechniqueAsString << "' set as reordering technique of Cudd.");
126}
127
128} // namespace modules
129} // namespace settings
130} // namespace storm
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 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 createStringArgument(std::string const &name, std::string const &description)
Creates a string argument with the given parameters.
static std::shared_ptr< ArgumentValidator< std::string > > createMultipleChoiceValidator(std::vector< std::string > const &choices)
static std::shared_ptr< ArgumentValidator< double > > createDoubleRangeValidatorIncluding(double lowerBound, double upperBound)
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.
Definition Option.cpp:79
bool getHasOptionBeenSet() const
Retrieves whether the option has been set.
Definition Option.cpp:125
static const std::string moduleName
CuddSettings()
Creates a new set of CUDD settings.
uint_fast64_t getMaximalMemory() const
Retrieves the maximal amount of memory (in megabytes) that CUDD can occupy.
bool isReorderingEnabled() const
Retrieves whether dynamic reordering is enabled.
ReorderingTechnique getReorderingTechnique() const
Retrieves the reordering technique that CUDD is supposed to use.
double getConstantPrecision() const
Retrieves the precision that CUDD is supposed to use for distinguishing constants.
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.
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:30
SettingsType const & getModule()
Get module.
LabParser.cpp.
Definition cli.cpp:18