21namespace modelchecker {
22namespace multiobjective {
28template<
class SparseModelType,
typename GeometryValueType>
32 typedef typename std::shared_ptr<storm::storage::geometry::Polytope<GeometryValueType>>
Polytope;
37 Point(std::vector<GeometryValueType>
const& coordinates);
38 Point(std::vector<GeometryValueType>&& coordinates);
40 std::vector<GeometryValueType>
const&
get()
const;
41 std::vector<GeometryValueType>&
get();
53 std::string
toString(
bool convertToDouble =
false)
const;
56 std::vector<GeometryValueType> coordinates;
63 typedef typename std::map<PointId, Point>::const_iterator
iterator_type;
87 uint64_t
size()
const;
96 void printToStream(std::ostream& out,
bool includeIDs =
true,
bool convertToDouble =
false);
99 std::map<PointId, Point> points;
109 std::vector<PointId>
const&
getPoints()
const;
119 std::vector<PointId> pointsOnFacet;
137 void addHalfspaceToOverApproximation(
Environment const& env, std::vector<GeometryValueType>
const& normalVector, GeometryValueType
const& offset);
153 std::vector<GeometryValueType> getReferenceCoordinates(
Environment const& env)
const;
169 void negateMinObjectives(std::vector<GeometryValueType>& vector)
const;
172 std::queue<Facet> unprocessedFacets;
174 std::vector<Polytope> unachievableAreas;
175 std::vector<GeometryValueType> eps;
176 std::shared_ptr<DeterministicSchedsLpChecker<SparseModelType, GeometryValueType>> lpChecker;
177 std::unique_ptr<PcaaWeightVectorChecker<SparseModelType>> wvChecker;
178 std::vector<DeterministicSchedsObjectiveHelper<SparseModelType>> objectiveHelper;
180 std::shared_ptr<SparseModelType>
const& model;
181 uint64_t originalModelInitialState;
182 std::vector<Objective<ModelValueType>>
const& objectives;
void addPoint(PointId const &pointId, Point const &point)
std::vector< PointId > const & getPoints() const
uint64_t getNumberOfPoints() const
storm::storage::geometry::Halfspace< GeometryValueType > const & getHalfspace() const
Polytope getInducedPolytope(Pointset const &pointset, std::vector< GeometryValueType > const &referenceCoordinates)
Creates a polytope that captures all points that lie 'under' the facet.
DominanceResult getDominance(Point const &other) const
std::string toString(bool convertToDouble=false) const
std::vector< GeometryValueType > const & get() const
uint64_t dimension() const
void setParetoOptimal(bool value=true)
void setOnFacet(bool value=true)
bool isParetoOptimal() const
std::map< PointId, Point >::const_iterator iterator_type
iterator_type end() const
void printToStream(std::ostream &out, bool includeIDs=true, bool convertToDouble=false)
Polytope downwardClosure() const
Returns the downward closure of the contained points.
Point const & getPoint(PointId const &id) const
Returns the point with the given ID.
void collectPointsInPolytope(std::set< PointId > &collectedPoints, Polytope const &polytope)
iterator_type begin() const
uint64_t size() const
Returns the number of points currently contained in the set.
boost::optional< PointId > addPoint(Environment const &env, Point &&point)
If the given point is not dominated by another point in the set, it is added to the set and its ID is...
Implements the exploration of the Pareto front.
virtual std::unique_ptr< CheckResult > check(Environment const &env)
SparseModelType::ValueType ModelValueType
void exportPlotOfCurrentApproximation(Environment const &env)
std::shared_ptr< storm::storage::geometry::Polytope< GeometryValueType > > Polytope