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;
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)
bool isCritical() const
Returns true if the solver fails in case this requirement is not met.
void enable(bool critical=true)
Enables this requirement.
void clear()
Clears this requirement.
#define STORM_LOG_THROW(cond, exception, message)