14template<
typename ModelType>
19template<
typename ModelType>
21 weightedPrecision = value;
24template<
typename ModelType>
26 STORM_LOG_THROW(weightedPrecision.has_value(), storm::exceptions::InvalidOperationException,
"The weighted precision has not been set.");
27 return weightedPrecision.value();
30template<
typename ModelType>
35template<
typename ModelType>
37 STORM_LOG_THROW(
false, storm::exceptions::NotSupportedException,
"Scheduler generation is not supported in this setting.");
40template<
class SparseModelType>
44 for (
auto objIndex : objectiveFilter) {
54 result += objBound.get() * weight;
64template<
typename ModelType>
67 if constexpr (std::is_same_v<ModelType, storm::models::sparse::Mdp<typename ModelType::ValueType>>) {
69 return std::make_unique<RewardBoundedMdpPcaaWeightVectorChecker<ModelType>>(preprocessorResult);
71 return std::make_unique<StandardMdpPcaaWeightVectorChecker<ModelType>>(preprocessorResult);
74 static_assert(std::is_same_v<ModelType, storm::models::sparse::MarkovAutomaton<typename ModelType::ValueType>>);
76 "Reward-bounded objectives are not supported for multi-objective Markov automata.");
77 return std::make_unique<StandardMaPcaaWeightVectorChecker<ModelType>>(preprocessorResult);
81template class PcaaWeightVectorChecker<storm::models::sparse::Mdp<double>>;
82template class PcaaWeightVectorChecker<storm::models::sparse::Mdp<storm::RationalNumber>>;
83template class PcaaWeightVectorChecker<storm::models::sparse::MarkovAutomaton<double>>;
84template class PcaaWeightVectorChecker<storm::models::sparse::MarkovAutomaton<storm::RationalNumber>>;
ModelType::ValueType ValueType
PcaaWeightVectorChecker(std::vector< Objective< ValueType > > const &objectives)
boost::optional< ValueType > computeWeightedResultBound(bool lower, std::vector< ValueType > const &weightVector, storm::storage::BitVector const &objectiveFilter) const
Computes the weighted lower or upper bounds for the provided set of objectives.
virtual bool smallPrecisionsAreChallenging() const
Returns whether achieving precise values (i.e.
std::vector< Objective< ValueType > > objectives
void setWeightedPrecision(ValueType const &value)
Sets the precision of this weight vector checker.
ValueType const & getWeightedPrecision() const
Returns the current precision of this weight vector checker as specified by setWeightedPrecision().
virtual storm::storage::Scheduler< ValueType > computeScheduler() const
Retrieves a scheduler that induces the current values (if such a scheduler was generated).
This class represents a Markov automaton.
This class represents a (discrete-time) Markov decision process.
A bit vector that is internally represented as a vector of 64-bit values.
This class defines which action is chosen in a particular state of a non-deterministic model.
#define STORM_LOG_THROW(cond, exception, message)
std::unique_ptr< PcaaWeightVectorChecker< ModelType > > createWeightVectorChecker(preprocessing::SparseMultiObjectivePreprocessorResult< ModelType > const &preprocessorResult)
bool constexpr minimize(OptimizationDirection d)
bool isZero(ValueType const &a)
bool containsRewardBoundedObjective() const