10 : lowerBoundsRequirement(linearEquationSolverRequirements.
lowerBounds()), upperBoundsRequirement(linearEquationSolverRequirements.
upperBounds()) {
15 acyclicRequirement.enable(critical);
20 uniqueSolutionRequirement.enable(critical);
25 validInitialSchedulerRequirement.enable(critical);
30 lowerBoundsRequirement.enable(critical);
35 upperBoundsRequirement.enable(critical);
46 return acyclicRequirement;
50 return uniqueSolutionRequirement;
54 return validInitialSchedulerRequirement;
58 return lowerBoundsRequirement;
62 return upperBoundsRequirement;
78 STORM_LOG_THROW(
false, storm::exceptions::IllegalArgumentException,
"Unknown ElementType.");
82 acyclicRequirement.clear();
86 uniqueSolutionRequirement.clear();
90 validInitialSchedulerRequirement.clear();
94 lowerBoundsRequirement.clear();
98 upperBoundsRequirement.clear();
107 return acyclicRequirement || uniqueSolutionRequirement || validInitialSchedulerRequirement || lowerBoundsRequirement || upperBoundsRequirement;
111 return acyclicRequirement.isCritical() || uniqueSolutionRequirement.isCritical() || validInitialSchedulerRequirement.isCritical() ||
112 lowerBoundsRequirement.isCritical() || upperBoundsRequirement.isCritical();
116 std::string res =
"[";
126 res +=
"(mandatory)";
135 res +=
"UniqueSolution";
137 res +=
"(mandatory)";
146 res +=
"validInitialScheduler";
148 res +=
"(mandatory)";
157 res +=
"lowerBounds";
159 res +=
"(mandatory)";
168 res +=
"upperBounds";
170 res +=
"(mandatory)";
MinMaxLinearEquationSolverRequirements(LinearEquationSolverRequirements const &linearEquationSolverRequirements=LinearEquationSolverRequirements())
SolverRequirement const & validInitialScheduler() const
SolverRequirement const & get(Element const &element) const
MinMaxLinearEquationSolverRequirements & requireBounds(bool critical=true)
void clearValidInitialScheduler()
void clearUniqueSolution()
SolverRequirement const & acyclic() const
MinMaxLinearEquationSolverRequirements & requireUniqueSolution(bool critical=true)
MinMaxLinearEquationSolverRequirements & requireLowerBounds(bool critical=true)
MinMaxLinearEquationSolverRequirements & requireValidInitialScheduler(bool critical=true)
MinMaxLinearEquationSolverRequirements & requireUpperBounds(bool critical=true)
bool hasEnabledRequirement() const
SolverRequirement const & uniqueSolution() const
SolverRequirement const & lowerBounds() const
bool hasEnabledCriticalRequirement() const
std::string getEnabledRequirementsAsString() const
Returns a string that enumerates the enabled requirements.
SolverRequirement const & upperBounds() const
MinMaxLinearEquationSolverRequirements & requireAcyclic(bool critical=true)
#define STORM_LOG_THROW(cond, exception, message)