#pragma once #include #include #include "storm/modelchecker/multiobjective/Objective.h" namespace storm { namespace modelchecker { namespace multiobjective { template class DeterministicSchedsObjectiveHelper { public: typedef typename ModelType::ValueType ValueType; DeterministicSchedsObjectiveHelper(ModelType const& model, Objective const& objective); /*! * Returns states and values for states that are independent of the scheduler. */ std::map const& getSchedulerIndependentStateValues() const; /*! * Returns offsets of each choice value (e.g., the reward) if non-zero. * This does not include choices of states with independent state values */ std::map const& getChoiceValueOffsets() const; ValueType const& getUpperValueBoundAtState(uint64_t state) const; ValueType const& getLowerValueBoundAtState(uint64_t state) const; private: mutable boost::optional> schedulerIndependentStateValues; mutable boost::optional> choiceValueOffsets; ModelType const& model; Objective const& objective; }; } } }