19template<
typename POMDPValueType>
22 std::vector<std::vector<POMDPValueType>>
lower;
23 std::vector<std::vector<POMDPValueType>>
upper;
33 template<
typename OutputValueType>
34 OutputValueType
getLowerBound(uint64_t scheduler_id, uint64_t
const& state) {
44 template<
typename OutputValueType>
45 OutputValueType
getUpperBound(uint64_t scheduler_id, uint64_t
const& state) {
55 template<
typename OutputValueType>
58 auto it =
lower.begin();
59 POMDPValueType result = (*it)[state];
60 for (++it; it !=
lower.end(); ++it) {
61 result = std::max(result, (*it)[state]);
70 template<
typename OutputValueType>
73 auto it =
upper.begin();
74 POMDPValueType result = (*it)[state];
75 for (++it; it !=
upper.end(); ++it) {
76 result = std::min(result, (*it)[state]);
81 template<
typename OutputValueType>
84 for (
auto const& vec :
lower) {
87 for (
auto const& vec :
upper) {
96 return convertedBounds;
103template<
typename POMDPValueType>
113 template<
typename OutputValueType>
118 template<
typename OutputValueType>
123 template<
typename OutputValueType>
127 convertedBounds.
min =
min;
129 return convertedBounds;
136template<
typename POMDPValueType>
139 std::optional<ExtremePOMDPValueBound<POMDPValueType>>
extremeBounds = std::nullopt;
A bit vector that is internally represented as a vector of 64-bit values.
#define STORM_LOG_ASSERT(cond, message)
std::vector< TargetType > convertNumericVector(std::vector< SourceType > const &oldVector)
Converts the given vector to the given ValueType Assumes that both, TargetType and SourceType are num...
TargetType convertNumber(SourceType const &number)
Struct for storing precomputed values bounding the actual values on the POMDP.
std::optional< ExtremePOMDPValueBound< POMDPValueType > > extremeBounds
std::optional< PreprocessingPomdpValueBounds< POMDPValueType > > preprocessingBounds
Struct to store the extreme bound values needed for the reward correction values when clipping is use...
storm::storage::BitVector isInfinite
std::vector< PomdpValueType > values
OutputValueType getValueForState(uint64_t const &state)
Get the extreme bound value for a given state.
ExtremePOMDPValueBound< OutputValueType > toValueType()
std::vector< OutputValueType > copyValues() const
Struct for storing precomputed values bounding the actual values on the POMDP.
PreprocessingPomdpValueBounds< OutputValueType > toValueType()
OutputValueType getSmallestUpperBound(uint64_t const &state)
Picks the smallest precomputed upper bound for a given state of the POMDP.
OutputValueType getHighestLowerBound(uint64_t const &state)
Picks the largest precomputed lower bound for a given state of the POMDP.
std::vector< storm::storage::Scheduler< PomdpValueType > > lowerSchedulers
OutputValueType getLowerBound(uint64_t scheduler_id, uint64_t const &state)
Picks the precomputed lower bound for a given scheduler index and state of the POMDP.
OutputValueType getUpperBound(uint64_t scheduler_id, uint64_t const &state)
Picks the precomputed upper bound for a given scheduler index and state of the POMDP.
std::vector< std::vector< PomdpValueType > > lower
std::vector< storm::storage::Scheduler< PomdpValueType > > upperSchedulers
std::vector< std::vector< PomdpValueType > > upper