dehnert
7 years ago
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