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;
83 STORM_LOG_THROW(
false, storm::exceptions::IllegalArgumentException,
"Unknown ElementType");
87 acyclicRequirement.clear();
91 uniqueSolutionRequirement.clear();
95 validInitialSchedulerRequirement.clear();
99 lowerBoundsRequirement.clear();
103 upperBoundsRequirement.clear();
112 return acyclicRequirement || uniqueSolutionRequirement || validInitialSchedulerRequirement || lowerBoundsRequirement || upperBoundsRequirement;
116 return acyclicRequirement.isCritical() || uniqueSolutionRequirement.isCritical() || validInitialSchedulerRequirement.isCritical() ||
117 lowerBoundsRequirement.isCritical() || upperBoundsRequirement.isCritical();
121 std::string res =
"[";
131 res +=
"(mandatory)";
140 res +=
"UniqueSolution";
142 res +=
"(mandatory)";
151 res +=
"validInitialScheduler";
153 res +=
"(mandatory)";
162 res +=
"lowerBounds";
164 res +=
"(mandatory)";
173 res +=
"upperBounds";
175 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)