You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

53 lines
2.1 KiB

#pragma once
#include "storm/solver/LinearEquationSolverRequirements.h"
namespace storm {
namespace solver {
class MinMaxLinearEquationSolverRequirements {
public:
// The different requirements a solver can have.
enum class Element {
// Requirements that are related to the graph structure of the system. Note that the requirements in this
// category are to be interpreted incrementally in the following sense: whenever the system has no end
// components then automatically both requirements are fulfilled.
NoEndComponents,
ValidInitialScheduler,
// Requirements that are related to bounds for the actual solution.
LowerBounds,
UpperBounds
};
MinMaxLinearEquationSolverRequirements(LinearEquationSolverRequirements const& linearEquationSolverRequirements = LinearEquationSolverRequirements());
MinMaxLinearEquationSolverRequirements& requireNoEndComponents();
MinMaxLinearEquationSolverRequirements& requireValidInitialScheduler();
MinMaxLinearEquationSolverRequirements& requireLowerBounds();
MinMaxLinearEquationSolverRequirements& requireUpperBounds();
MinMaxLinearEquationSolverRequirements& requireBounds();
bool requiresNoEndComponents() const;
bool requiresValidInitialScheduler() const;
bool requiresLowerBounds() const;
bool requiresUpperBounds() const;
bool requires(Element const& element) const;
void clearNoEndComponents();
void clearValidInitialScheduler();
void clearLowerBounds();
void clearUpperBounds();
void clearBounds();
bool empty() const;
private:
bool noEndComponents;
bool validInitialScheduler;
bool lowerBounds;
bool upperBounds;
};
}
}