Storm
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
Bounds.h
Go to the documentation of this file.
1#ifndef STORM_MODELCHECKER_EXPLORATION_EXPLORATION_DETAIL_BOUNDS_H_
2#define STORM_MODELCHECKER_EXPLORATION_EXPLORATION_DETAIL_BOUNDS_H_
3
4#include <utility>
5#include <vector>
6
8
10
11namespace storm {
12namespace modelchecker {
13namespace exploration_detail {
14
15template<typename StateType, typename ValueType>
16class ExplorationInformation;
17
18template<typename StateType, typename ValueType>
19class Bounds {
20 public:
21 typedef StateType ActionType;
22
23 std::pair<ValueType, ValueType> getBoundsForState(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation) const;
24
25 ValueType getLowerBoundForState(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation) const;
26
27 ValueType const& getLowerBoundForRowGroup(StateType const& rowGroup) const;
28
29 ValueType getUpperBoundForState(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation) const;
30
31 ValueType const& getUpperBoundForRowGroup(StateType const& rowGroup) const;
32
33 std::pair<ValueType, ValueType> const& getBoundsForAction(ActionType const& action) const;
34
35 ValueType const& getLowerBoundForAction(ActionType const& action) const;
36
37 ValueType const& getUpperBoundForAction(ActionType const& action) const;
38
39 ValueType const& getBoundForAction(storm::OptimizationDirection const& direction, ActionType const& action) const;
40
41 ValueType getDifferenceOfStateBounds(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation) const;
42
43 void initializeBoundsForNextState(std::pair<ValueType, ValueType> const& vals = std::pair<ValueType, ValueType>(storm::utility::zero<ValueType>(),
44 storm::utility::one<ValueType>()));
45
46 void initializeBoundsForNextAction(std::pair<ValueType, ValueType> const& vals = std::pair<ValueType, ValueType>(storm::utility::zero<ValueType>(),
47 storm::utility::one<ValueType>()));
48
49 void setLowerBoundForState(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation, ValueType const& value);
50
51 void setLowerBoundForRowGroup(StateType const& group, ValueType const& value);
52
53 void setUpperBoundForState(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation, ValueType const& value);
54
55 void setUpperBoundForRowGroup(StateType const& group, ValueType const& value);
56
57 void setBoundsForAction(ActionType const& action, std::pair<ValueType, ValueType> const& values);
58
59 void setBoundsForState(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation,
60 std::pair<ValueType, ValueType> const& values);
61
62 void setBoundsForRowGroup(StateType const& rowGroup, std::pair<ValueType, ValueType> const& values);
63
64 bool setLowerBoundOfStateIfGreaterThanOld(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation,
65 ValueType const& newLowerValue);
66
67 bool setUpperBoundOfStateIfLessThanOld(StateType const& state, ExplorationInformation<StateType, ValueType> const& explorationInformation,
68 ValueType const& newUpperValue);
69
70 private:
71 std::vector<std::pair<ValueType, ValueType>> boundsPerState;
72 std::vector<std::pair<ValueType, ValueType>> boundsPerAction;
73};
74
75} // namespace exploration_detail
76} // namespace modelchecker
77} // namespace storm
78
79#endif /* STORM_MODELCHECKER_EXPLORATION_EXPLORATION_DETAIL_BOUNDS_H_ */
void setLowerBoundForRowGroup(StateType const &group, ValueType const &value)
Definition Bounds.cpp:100
ValueType const & getLowerBoundForRowGroup(StateType const &rowGroup) const
Definition Bounds.cpp:32
ValueType getDifferenceOfStateBounds(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
Definition Bounds.cpp:77
void setBoundsForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, std::pair< ValueType, ValueType > const &values)
Definition Bounds.cpp:121
std::pair< ValueType, ValueType > getBoundsForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
Definition Bounds.cpp:10
void setBoundsForAction(ActionType const &action, std::pair< ValueType, ValueType > const &values)
Definition Bounds.cpp:116
ValueType const & getUpperBoundForRowGroup(StateType const &rowGroup) const
Definition Bounds.cpp:48
std::pair< ValueType, ValueType > const & getBoundsForAction(ActionType const &action) const
Definition Bounds.cpp:53
bool setLowerBoundOfStateIfGreaterThanOld(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &newLowerValue)
Definition Bounds.cpp:133
void initializeBoundsForNextState(std::pair< ValueType, ValueType > const &vals=std::pair< ValueType, ValueType >(storm::utility::zero< ValueType >(), storm::utility::one< ValueType >()))
Definition Bounds.cpp:84
ValueType getLowerBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
Definition Bounds.cpp:21
bool setUpperBoundOfStateIfLessThanOld(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &newUpperValue)
Definition Bounds.cpp:145
ValueType const & getBoundForAction(storm::OptimizationDirection const &direction, ActionType const &action) const
Definition Bounds.cpp:68
void setBoundsForRowGroup(StateType const &rowGroup, std::pair< ValueType, ValueType > const &values)
Definition Bounds.cpp:128
void initializeBoundsForNextAction(std::pair< ValueType, ValueType > const &vals=std::pair< ValueType, ValueType >(storm::utility::zero< ValueType >(), storm::utility::one< ValueType >()))
Definition Bounds.cpp:89
ValueType getUpperBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
Definition Bounds.cpp:37
ValueType const & getLowerBoundForAction(ActionType const &action) const
Definition Bounds.cpp:58
void setUpperBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &value)
Definition Bounds.cpp:105
ValueType const & getUpperBoundForAction(ActionType const &action) const
Definition Bounds.cpp:63
void setLowerBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &value)
Definition Bounds.cpp:94
void setUpperBoundForRowGroup(StateType const &group, ValueType const &value)
Definition Bounds.cpp:111
LabParser.cpp.
Definition cli.cpp:18