TimQu
7 years ago
4 changed files with 1 additions and 150 deletions
-
3src/storm-pars/settings/ParsSettings.cpp
-
2src/storm/settings/SettingsManager.cpp
-
61src/storm/settings/modules/TopologicalValueIterationEquationSolverSettings.cpp
-
85src/storm/settings/modules/TopologicalValueIterationEquationSolverSettings.h
@ -1,61 +0,0 @@ |
|||||
#include "storm/settings/modules/TopologicalValueIterationEquationSolverSettings.h"
|
|
||||
|
|
||||
#include "storm/settings/Option.h"
|
|
||||
#include "storm/settings/OptionBuilder.h"
|
|
||||
#include "storm/settings/ArgumentBuilder.h"
|
|
||||
#include "storm/settings/Argument.h"
|
|
||||
|
|
||||
#include "storm/settings/SettingsManager.h"
|
|
||||
#include "storm/settings/modules/GeneralSettings.h"
|
|
||||
#include "storm/solver/SolverSelectionOptions.h"
|
|
||||
|
|
||||
namespace storm { |
|
||||
namespace settings { |
|
||||
namespace modules { |
|
||||
|
|
||||
const std::string TopologicalValueIterationEquationSolverSettings::moduleName = "topologicalValueIteration"; |
|
||||
const std::string TopologicalValueIterationEquationSolverSettings::maximalIterationsOptionName = "maxiter"; |
|
||||
const std::string TopologicalValueIterationEquationSolverSettings::maximalIterationsOptionShortName = "i"; |
|
||||
const std::string TopologicalValueIterationEquationSolverSettings::precisionOptionName = "precision"; |
|
||||
const std::string TopologicalValueIterationEquationSolverSettings::absoluteOptionName = "absolute"; |
|
||||
|
|
||||
TopologicalValueIterationEquationSolverSettings::TopologicalValueIterationEquationSolverSettings() : ModuleSettings(moduleName) { |
|
||||
|
|
||||
this->addOption(storm::settings::OptionBuilder(moduleName, maximalIterationsOptionName, false, "The maximal number of iterations to perform before iterative solving is aborted.").setShortName(maximalIterationsOptionShortName).addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("count", "The maximal iteration count.").setDefaultValueUnsignedInteger(20000).build()).build()); |
|
||||
|
|
||||
this->addOption(storm::settings::OptionBuilder(moduleName, precisionOptionName, false, "The precision used for detecting convergence of iterative methods.").addArgument(storm::settings::ArgumentBuilder::createDoubleArgument("value", "The precision to achieve.").setDefaultValueDouble(1e-06).addValidatorDouble(ArgumentValidatorFactory::createDoubleRangeValidatorExcluding(0.0, 1.0)).build()).build()); |
|
||||
|
|
||||
this->addOption(storm::settings::OptionBuilder(moduleName, absoluteOptionName, false, "Sets whether the relative or the absolute error is considered for detecting convergence.").build()); |
|
||||
} |
|
||||
|
|
||||
bool TopologicalValueIterationEquationSolverSettings::isMaximalIterationCountSet() const { |
|
||||
return this->getOption(maximalIterationsOptionName).getHasOptionBeenSet(); |
|
||||
} |
|
||||
|
|
||||
uint_fast64_t TopologicalValueIterationEquationSolverSettings::getMaximalIterationCount() const { |
|
||||
return this->getOption(maximalIterationsOptionName).getArgumentByName("count").getValueAsUnsignedInteger(); |
|
||||
} |
|
||||
|
|
||||
bool TopologicalValueIterationEquationSolverSettings::isPrecisionSet() const { |
|
||||
return this->getOption(precisionOptionName).getHasOptionBeenSet(); |
|
||||
} |
|
||||
|
|
||||
double TopologicalValueIterationEquationSolverSettings::getPrecision() const { |
|
||||
return this->getOption(precisionOptionName).getArgumentByName("value").getValueAsDouble(); |
|
||||
} |
|
||||
|
|
||||
bool TopologicalValueIterationEquationSolverSettings::isConvergenceCriterionSet() const { |
|
||||
return this->getOption(absoluteOptionName).getHasOptionBeenSet(); |
|
||||
} |
|
||||
|
|
||||
TopologicalValueIterationEquationSolverSettings::ConvergenceCriterion TopologicalValueIterationEquationSolverSettings::getConvergenceCriterion() const { |
|
||||
return this->getOption(absoluteOptionName).getHasOptionBeenSet() ? TopologicalValueIterationEquationSolverSettings::ConvergenceCriterion::Absolute : TopologicalValueIterationEquationSolverSettings::ConvergenceCriterion::Relative; |
|
||||
} |
|
||||
|
|
||||
bool TopologicalValueIterationEquationSolverSettings::check() const { |
|
||||
return true; |
|
||||
} |
|
||||
|
|
||||
} // namespace modules
|
|
||||
} // namespace settings
|
|
||||
} // namespace storm
|
|
@ -1,85 +0,0 @@ |
|||||
#ifndef STORM_SETTINGS_MODULES_TOPOLOGICALVALUEITERATIONSETTINGS_H_ |
|
||||
#define STORM_SETTINGS_MODULES_TOPOLOGICALVALUEITERATIONSETTINGS_H_ |
|
||||
|
|
||||
#include "storm/settings/modules/ModuleSettings.h" |
|
||||
|
|
||||
namespace storm { |
|
||||
namespace settings { |
|
||||
namespace modules { |
|
||||
|
|
||||
/*! |
|
||||
* This class represents the settings for topological value iteration. |
|
||||
*/ |
|
||||
class TopologicalValueIterationEquationSolverSettings : public ModuleSettings { |
|
||||
public: |
|
||||
|
|
||||
// An enumeration of all available convergence criteria. |
|
||||
enum class ConvergenceCriterion { Absolute, Relative }; |
|
||||
|
|
||||
/*! |
|
||||
* Creates a new set of topological value iteration settings. |
|
||||
*/ |
|
||||
TopologicalValueIterationEquationSolverSettings(); |
|
||||
|
|
||||
|
|
||||
/*! |
|
||||
* Retrieves whether the maximal iteration count has been set. |
|
||||
* |
|
||||
* @return True iff the maximal iteration count has been set. |
|
||||
*/ |
|
||||
bool isMaximalIterationCountSet() const; |
|
||||
|
|
||||
/*! |
|
||||
* Retrieves the maximal number of iterations to perform until giving up on converging. |
|
||||
* |
|
||||
* @return The maximal iteration count. |
|
||||
*/ |
|
||||
uint_fast64_t getMaximalIterationCount() const; |
|
||||
|
|
||||
/*! |
|
||||
* Retrieves whether the precision has been set. |
|
||||
* |
|
||||
* @return True iff the precision has been set. |
|
||||
*/ |
|
||||
bool isPrecisionSet() const; |
|
||||
|
|
||||
/*! |
|
||||
* Retrieves the precision that is used for detecting convergence. |
|
||||
* |
|
||||
* @return The precision to use for detecting convergence. |
|
||||
*/ |
|
||||
double getPrecision() const; |
|
||||
|
|
||||
/*! |
|
||||
* Retrieves whether the convergence criterion has been set. |
|
||||
* |
|
||||
* @return True iff the convergence criterion has been set. |
|
||||
*/ |
|
||||
bool isConvergenceCriterionSet() const; |
|
||||
|
|
||||
/*! |
|
||||
* Retrieves the selected convergence criterion. |
|
||||
* |
|
||||
* @return The selected convergence criterion. |
|
||||
*/ |
|
||||
ConvergenceCriterion getConvergenceCriterion() const; |
|
||||
|
|
||||
bool check() const override; |
|
||||
|
|
||||
// The name of the module. |
|
||||
static const std::string moduleName; |
|
||||
|
|
||||
private: |
|
||||
// Define the string names of the options as constants. |
|
||||
static const std::string techniqueOptionName; |
|
||||
static const std::string maximalIterationsOptionName; |
|
||||
static const std::string maximalIterationsOptionShortName; |
|
||||
static const std::string precisionOptionName; |
|
||||
static const std::string absoluteOptionName; |
|
||||
}; |
|
||||
|
|
||||
} // namespace modules |
|
||||
} // namespace settings |
|
||||
} // namespace storm |
|
||||
|
|
||||
#endif /* STORM_SETTINGS_MODULES_TOPOLOGICALVALUEITERATIONSETTINGS_H_ */ |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue