1#ifndef STORM_MODELCHECKER_EXPLORATION_EXPLORATION_DETAIL_BOUNDS_H_
2#define STORM_MODELCHECKER_EXPLORATION_EXPLORATION_DETAIL_BOUNDS_H_
12namespace modelchecker {
13namespace exploration_detail {
15template<
typename StateType,
typename ValueType>
16class ExplorationInformation;
18template<
typename StateType,
typename ValueType>
43 void initializeBoundsForNextState(std::pair<ValueType, ValueType>
const& vals = std::pair<ValueType, ValueType>(storm::utility::zero<ValueType>(),
44 storm::utility::one<ValueType>()));
46 void initializeBoundsForNextAction(std::pair<ValueType, ValueType>
const& vals = std::pair<ValueType, ValueType>(storm::utility::zero<ValueType>(),
47 storm::utility::one<ValueType>()));
60 std::pair<ValueType, ValueType>
const& values);
62 void setBoundsForRowGroup(StateType
const& rowGroup, std::pair<ValueType, ValueType>
const& values);
65 ValueType
const& newLowerValue);
68 ValueType
const& newUpperValue);
71 std::vector<std::pair<ValueType, ValueType>> boundsPerState;
72 std::vector<std::pair<ValueType, ValueType>> boundsPerAction;
void setLowerBoundForRowGroup(StateType const &group, ValueType const &value)
ValueType const & getLowerBoundForRowGroup(StateType const &rowGroup) const
ValueType getDifferenceOfStateBounds(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
void setBoundsForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, std::pair< ValueType, ValueType > const &values)
std::pair< ValueType, ValueType > getBoundsForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
void setBoundsForAction(ActionType const &action, std::pair< ValueType, ValueType > const &values)
ValueType const & getUpperBoundForRowGroup(StateType const &rowGroup) const
std::pair< ValueType, ValueType > const & getBoundsForAction(ActionType const &action) const
bool setLowerBoundOfStateIfGreaterThanOld(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &newLowerValue)
void initializeBoundsForNextState(std::pair< ValueType, ValueType > const &vals=std::pair< ValueType, ValueType >(storm::utility::zero< ValueType >(), storm::utility::one< ValueType >()))
ValueType getLowerBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
bool setUpperBoundOfStateIfLessThanOld(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &newUpperValue)
ValueType const & getBoundForAction(storm::OptimizationDirection const &direction, ActionType const &action) const
void setBoundsForRowGroup(StateType const &rowGroup, std::pair< ValueType, ValueType > const &values)
void initializeBoundsForNextAction(std::pair< ValueType, ValueType > const &vals=std::pair< ValueType, ValueType >(storm::utility::zero< ValueType >(), storm::utility::one< ValueType >()))
ValueType getUpperBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation) const
ValueType const & getLowerBoundForAction(ActionType const &action) const
void setUpperBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &value)
ValueType const & getUpperBoundForAction(ActionType const &action) const
void setLowerBoundForState(StateType const &state, ExplorationInformation< StateType, ValueType > const &explorationInformation, ValueType const &value)
void setUpperBoundForRowGroup(StateType const &group, ValueType const &value)