3#include <boost/optional.hpp>
16namespace modelchecker {
17namespace multiobjective {
18namespace preprocessing {
20template<
class SparseModelType>
33 std::vector<Objective<typename SparseModelType::ValueType>>
objectives;
49 if (obj.formula->isRewardOperatorFormula() && obj.formula->getSubformula().isTotalRewardFormula()) {
63 if (obj.formula->isRewardOperatorFormula() && obj.formula->getSubformula().isLongRunAverageRewardFormula()) {
77 if (obj.formula->isRewardOperatorFormula() && obj.formula->getSubformula().isTotalRewardFormula()) {
80 if (obj.formula->isRewardOperatorFormula() && obj.formula->getSubformula().isLongRunAverageRewardFormula()) {
83 if (obj.formula->isRewardOperatorFormula() && obj.formula->getSubformula().isCumulativeRewardFormula()) {
84 auto const& subf = obj.formula->getSubformula().asCumulativeRewardFormula();
85 if (!subf.isMultiDimensional() && (subf.getTimeBoundReference().isTimeBound() || subf.getTimeBoundReference().isStepBound())) {
96 out <<
"\n---------------------------------------------------------------------------------------------------------------------------------------\n";
97 out <<
" Multi-objective Query \n";
98 out <<
"---------------------------------------------------------------------------------------------------------------------------------------\n";
99 out <<
"\nOriginal Formula: \n";
100 out <<
"--------------------------------------------------------------\n";
102 out <<
"\nThe query considers " <<
objectives.size() <<
" objectives:\n";
103 out <<
"--------------------------------------------------------------\n";
105 obj.printToStream(out);
110 out <<
"--------------------------------------------------------------\n";
111 out <<
"\nOriginal Model Information:\n";
113 out <<
"\nPreprocessed Model Information:\n";
115 out <<
"\n---------------------------------------------------------------------------------------------------------------------------------------\n";
A bit vector that is internally represented as a vector of 64-bit values.
bool containsLongRunAverageRewardFormulas() const
std::optional< storm::storage::SparseModelMemoryProductReverseData > memoryIncorporationReverseData
uint64_t getNumberOfLongRunAverageRewardFormulas() const
bool containsOnlyTrivialObjectives() const
SparseModelType const & originalModel
SparseMultiObjectivePreprocessorResult(storm::logic::MultiObjectiveFormula const &originalFormula, SparseModelType const &originalModel)
std::shared_ptr< SparseModelType > preprocessedModel
std::vector< Objective< typename SparseModelType::ValueType > > objectives
bool containsOnlyTotalRewardFormulas() const
storm::storage::BitVector maybeInfiniteRewardObjectives
friend std::ostream & operator<<(std::ostream &out, SparseMultiObjectivePreprocessorResult< SparseModelType > const &ret)
storm::logic::MultiObjectiveFormula const & originalFormula
void printToStream(std::ostream &out) const
uint64_t getNumberOfTotalRewardFormulas() const