19const std::string NativeEquationSolverSettings::techniqueOptionName =
"method";
20const std::string NativeEquationSolverSettings::omegaOptionName =
"soromega";
21const std::string NativeEquationSolverSettings::maximalIterationsOptionName =
"maxiter";
22const std::string NativeEquationSolverSettings::maximalIterationsOptionShortName =
"i";
23const std::string NativeEquationSolverSettings::precisionOptionName =
"precision";
24const std::string NativeEquationSolverSettings::absoluteOptionName =
"absolute";
25const std::string NativeEquationSolverSettings::powerMethodMultiplicationStyleOptionName =
"powmult";
26const std::string NativeEquationSolverSettings::intervalIterationSymmetricUpdatesOptionName =
"symmetricupdates";
29 std::vector<std::string>
methods = {
"jacobi",
"gaussseidel",
"sor",
"walkerchae",
30 "power",
"sound-value-iteration",
"svi",
"optimistic-value-iteration",
31 "ovi",
"interval-iteration",
"ii",
"ratsearch"};
33 "The method to be used for solving linear equation systems with the native engine.")
42 "The maximal number of iterations to perform before iterative solving is aborted.")
44 .setShortName(maximalIterationsOptionShortName)
65 "Sets whether the relative or the absolute error is considered for detecting convergence.")
71 "Sets which method multiplication style to prefer for the power method.")
80 "If set, interval iteration performs an update on both, lower and upper bound in each iteration")
97 return storm::solver::NativeLinearEquationSolverMethod::Jacobi;
99 return storm::solver::NativeLinearEquationSolverMethod::GaussSeidel;
101 return storm::solver::NativeLinearEquationSolverMethod::SOR;
103 return storm::solver::NativeLinearEquationSolverMethod::WalkerChae;
105 return storm::solver::NativeLinearEquationSolverMethod::Power;
107 return storm::solver::NativeLinearEquationSolverMethod::SoundValueIteration;
109 return storm::solver::NativeLinearEquationSolverMethod::OptimisticValueIteration;
111 return storm::solver::NativeLinearEquationSolverMethod::IntervalIteration;
113 return storm::solver::NativeLinearEquationSolverMethod::RationalSearch;
115 STORM_LOG_THROW(
false, storm::exceptions::IllegalArgumentValueException,
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.
virtual bool wasSetFromDefaultValue() const =0
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< double > > createDoubleRangeValidatorExcluding(double lowerBound, double upperBound)
static std::shared_ptr< ArgumentValidator< std::string > > createMultipleChoiceValidator(std::vector< std::string > const &choices)
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 isLinearEquationSystemTechniqueSetFromDefaultValue() const
Retrieves whether the linear equation system technique is set from its default value.
bool isPrecisionSet() const
Retrieves whether the precision has been set.
static const std::string moduleName
uint_fast64_t getMaximalIterationCount() const
Retrieves the maximal number of iterations to perform until giving up on converging.
bool isConvergenceCriterionSet() const
Retrieves whether the convergence criterion has been set.
bool check() const override
Checks whether the settings are consistent.
bool isForceIntervalIterationSymmetricUpdatesSet() const
Retrievew whether updates in interval iteration have to be made symmetrically.
bool isLinearEquationSystemTechniqueSet() const
Retrieves whether the linear equation system technique has been set.
double getOmega() const
Retrieves the value of omega to be used for the SOR method.
double getPrecision() const
Retrieves the precision that is used for detecting convergence.
bool isMaximalIterationCountSet() const
Retrieves whether the maximal iteration count has been set.
storm::solver::NativeLinearEquationSolverMethod getLinearEquationSystemMethod() const
Retrieves the method that is to be used for solving systems of linear equations.
NativeEquationSolverSettings()
Creates a new set of native equation solver settings.
storm::solver::MultiplicationStyle getPowerMethodMultiplicationStyle() const
Retrieves the multiplication style to use in the power method.
ConvergenceCriterion getConvergenceCriterion() const
Retrieves the selected convergence criterion.
#define STORM_LOG_THROW(cond, exception, message)
SettingsType const & getModule()
Get module.