3 changed files with 79 additions and 71 deletions
			
			
		- 
					6src/storm-pars/modelchecker/region/SparseDtmcParameterLiftingModelChecker.cpp
 - 
					69src/storm/solver/MinMaxLinearEquationSolver.h
 - 
					75src/storm/solver/MinMaxLinearEquationSolverRequirements.h
 
@ -0,0 +1,75 @@ | 
			
		|||||
 | 
				#pragma once | 
			
		||||
 | 
				
 | 
			
		||||
 | 
				namespace storm { | 
			
		||||
 | 
				    namespace solver { | 
			
		||||
 | 
				         | 
			
		||||
 | 
				        class MinMaxLinearEquationSolverRequirements { | 
			
		||||
 | 
				        public: | 
			
		||||
 | 
				            enum class Element { | 
			
		||||
 | 
				                NoEndComponents, NoZeroRewardEndComponents, ValidInitialScheduler, GlobalLowerBound, GlobalUpperBound | 
			
		||||
 | 
				            }; | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            MinMaxLinearEquationSolverRequirements() : noEndComponents(false), noZeroRewardEndComponents(false), validInitialScheduler(false), globalLowerBound(false), globalUpperBound(false) { | 
			
		||||
 | 
				                // Intentionally left empty. | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            MinMaxLinearEquationSolverRequirements& setNoEndComponents(bool value = true) { | 
			
		||||
 | 
				                noEndComponents = value; | 
			
		||||
 | 
				                return *this; | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            MinMaxLinearEquationSolverRequirements& setNoZeroRewardEndComponents(bool value = true) { | 
			
		||||
 | 
				                noZeroRewardEndComponents = value; | 
			
		||||
 | 
				                return *this; | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            MinMaxLinearEquationSolverRequirements& setValidInitialScheduler(bool value = true) { | 
			
		||||
 | 
				                validInitialScheduler = value; | 
			
		||||
 | 
				                return *this; | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            MinMaxLinearEquationSolverRequirements& setGlobalLowerBound(bool value = true) { | 
			
		||||
 | 
				                globalLowerBound = value; | 
			
		||||
 | 
				                return *this; | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            MinMaxLinearEquationSolverRequirements& setGlobalUpperBound(bool value = true) { | 
			
		||||
 | 
				                globalUpperBound = value; | 
			
		||||
 | 
				                return *this; | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            MinMaxLinearEquationSolverRequirements& set(Element const& element, bool value = true) { | 
			
		||||
 | 
				                switch (element) { | 
			
		||||
 | 
				                    case Element::NoEndComponents: noEndComponents = value; break; | 
			
		||||
 | 
				                    case Element::NoZeroRewardEndComponents: noZeroRewardEndComponents = value; break; | 
			
		||||
 | 
				                    case Element::ValidInitialScheduler: validInitialScheduler = value; break; | 
			
		||||
 | 
				                    case Element::GlobalLowerBound: globalLowerBound = value; break; | 
			
		||||
 | 
				                    case Element::GlobalUpperBound: globalUpperBound = value; break; | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				                return *this; | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            bool requires(Element const& element) { | 
			
		||||
 | 
				                switch (element) { | 
			
		||||
 | 
				                    case Element::NoEndComponents: return noEndComponents; break; | 
			
		||||
 | 
				                    case Element::NoZeroRewardEndComponents: return noZeroRewardEndComponents; break; | 
			
		||||
 | 
				                    case Element::ValidInitialScheduler: return validInitialScheduler; break; | 
			
		||||
 | 
				                    case Element::GlobalLowerBound: return globalLowerBound; break; | 
			
		||||
 | 
				                    case Element::GlobalUpperBound: return globalUpperBound; break; | 
			
		||||
 | 
				                } | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				            bool empty() const { | 
			
		||||
 | 
				                return !noEndComponents && !noZeroRewardEndComponents && !validInitialScheduler && !globalLowerBound && !globalUpperBound; | 
			
		||||
 | 
				            } | 
			
		||||
 | 
				             | 
			
		||||
 | 
				        private: | 
			
		||||
 | 
				            bool noEndComponents; | 
			
		||||
 | 
				            bool noZeroRewardEndComponents; | 
			
		||||
 | 
				            bool validInitialScheduler; | 
			
		||||
 | 
				            bool globalLowerBound; | 
			
		||||
 | 
				            bool globalUpperBound; | 
			
		||||
 | 
				        }; | 
			
		||||
 | 
				         | 
			
		||||
 | 
				    } | 
			
		||||
 | 
				} | 
			
		||||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue