Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
HyperplaneEnumeration.h
Go to the documentation of this file.
1#ifndef STORM_STORAGE_GEOMETRY_NATIVEPOLYTOPECONVERSION_HYPERPLANEENUMERATION_H_
2#define STORM_STORAGE_GEOMETRY_NATIVEPOLYTOPECONVERSION_HYPERPLANEENUMERATION_H_
3
4#include <vector>
6
7namespace storm {
8namespace storage {
9namespace geometry {
10
11template<typename ValueType>
13 public:
14 typedef Eigen::Matrix<ValueType, Eigen::Dynamic, Eigen::Dynamic> EigenMatrix;
15 typedef Eigen::Matrix<ValueType, Eigen::Dynamic, 1> EigenVector;
16
18 virtual ~HyperplaneEnumeration() = default;
19
20 /*
21 * Generates the vertices of the given polytope by enumerating all intersection points generated by subsets of hyperplanes of size hPoly.dimension().
22 * If the given flag is true, this method will also compute
23 * * the minimal set of hyperplanes which represent the given hPoly (can be used to remove redundant hyperplanes), and
24 * * for each hyperplane, the set of (non-redundant) vertices that lie on that hyperplane.
25 *
26 * Use the provided getter methods to retrieve the results
27 *
28 * @return true iff conversion was successful.
29 */
30 void generateVerticesFromConstraints(EigenMatrix const& constraintMatrix, EigenVector const& constraintVector,
31 bool generateRelevantHyperplanesAndVertexSets);
32
33 std::vector<EigenVector>& getResultVertices();
34
41
47 std::vector<std::vector<uint_fast64_t>>& getVertexSets();
48
49 /*
50 * Returns true if the hyperplanes with indices of subset and item are all linear independent
51 * Note that this is also used by the hybrid polytope.
52 */
53 static bool linearDependenciesFilter(std::vector<uint_fast64_t> const& subset, uint_fast64_t const& item, EigenMatrix const& A);
54
55 private:
56 std::vector<EigenVector> resultVertices;
57 EigenMatrix relevantMatrix;
58 EigenVector relevantVector;
59 std::vector<std::vector<uint_fast64_t>> vertexSets;
60};
61} // namespace geometry
62} // namespace storage
63} // namespace storm
64
65#endif /* "STORM_STORAGE_GEOMETRY_NATIVEPOLYTOPECONVERSION_HYPERPLANEENUMERATION_H_" */
static bool linearDependenciesFilter(std::vector< uint_fast64_t > const &subset, uint_fast64_t const &item, EigenMatrix const &A)
void generateVerticesFromConstraints(EigenMatrix const &constraintMatrix, EigenVector const &constraintVector, bool generateRelevantHyperplanesAndVertexSets)
EigenMatrix & getRelevantMatrix()
Returns the set of halfspaces which are not redundant.
std::vector< std::vector< uint_fast64_t > > & getVertexSets()
Returns for each hyperplane the set of vertices that lie on that hyperplane.
Eigen::Matrix< ValueType, Eigen::Dynamic, Eigen::Dynamic > EigenMatrix
Eigen::Matrix< ValueType, Eigen::Dynamic, 1 > EigenVector
LabParser.cpp.
Definition cli.cpp:18