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