Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
DeterministicSchedsLpChecker.h
Go to the documentation of this file.
1#pragma once
2
3#include <optional>
4#include <vector>
5
12
13namespace storm {
14
15class Environment;
16
17namespace modelchecker {
18namespace multiobjective {
19
24template<typename ModelType, typename GeometryValueType>
26 public:
27 typedef typename ModelType::ValueType ValueType;
28 typedef typename std::shared_ptr<storm::storage::geometry::Polytope<GeometryValueType>> Polytope;
29 typedef typename std::vector<GeometryValueType> Point;
30
31 DeterministicSchedsLpChecker(ModelType const& model, std::vector<DeterministicSchedsObjectiveHelper<ModelType>> const& objectiveHelper);
32
36 void setCurrentWeightVector(Environment const& env, std::vector<GeometryValueType> const& weightVector);
37
50 std::optional<std::pair<Point, GeometryValueType>> check(storm::Environment const& env, Polytope overapproximation, Point const& eps = {});
51
57 std::pair<std::vector<Point>, std::vector<Polytope>> check(storm::Environment const& env,
59
64 std::string getStatistics(std::string const& prefix = "") const;
65
66 private:
67 void initialize(Environment const& env);
68
69 void initializeLpModel(Environment const& env);
70
71 // Builds the induced markov chain of the current model and checks whether the resulting value coincide with the result of the lp solver.
72 Point validateCurrentModel(Environment const& env) const;
73
74 void checkRecursive(storm::Environment const& env, storm::storage::geometry::PolytopeTree<GeometryValueType>& polytopeTree, Point const& eps,
75 std::vector<Point>& foundPoints, std::vector<Polytope>& infeasableAreas, uint64_t const& depth);
76
77 ModelType const& model;
78 std::vector<DeterministicSchedsObjectiveHelper<ModelType>> const& objectiveHelper;
79
80 std::unique_ptr<storm::solver::LpSolver<ValueType>> lpModel;
81 std::vector<storm::expressions::Expression> choiceVariables;
82 std::vector<storm::expressions::Expression> initialStateResults;
83 std::vector<storm::expressions::Variable> currentObjectiveVariables;
84 std::vector<GeometryValueType> currentWeightVector;
85 bool flowEncoding;
86
89 storm::utility::Stopwatch swCheckWeightVectors;
90 storm::utility::Stopwatch swCheckAreas;
92 uint64_t numLpQueries;
93};
94
95} // namespace multiobjective
96} // namespace modelchecker
97} // namespace storm
Represents the LP Encoding for achievability under simple strategies.
void setCurrentWeightVector(Environment const &env, std::vector< GeometryValueType > const &weightVector)
Specifies the current direction.
std::string getStatistics(std::string const &prefix="") const
Returns usage statistics in a human readable format.
std::optional< std::pair< Point, GeometryValueType > > check(storm::Environment const &env, Polytope overapproximation, Point const &eps={})
Optimizes in the currently given direction.
std::shared_ptr< storm::storage::geometry::Polytope< GeometryValueType > > Polytope
Represents a set of points in Euclidean space.
A class that provides convenience operations to display run times.
Definition Stopwatch.h:14
LabParser.cpp.
Definition cli.cpp:18