You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

54 lines
2.1 KiB

#pragma once
#include <boost/optional.hpp>
#include "storm/logic/Formulas.h"
#include "storm/logic/Bound.h"
#include "storm/logic/TimeBound.h"
#include "storm/logic/TimeBoundType.h"
#include "storm/solver/OptimizationDirection.h"
namespace storm {
namespace modelchecker {
namespace multiobjective {
template <typename ValueType>
struct Objective {
// the original input formula
std::shared_ptr<storm::logic::Formula const> originalFormula;
// The preprocessed (simplified) formula
std::shared_ptr<storm::logic::OperatorFormula const> formula;
// True iff the complementary event is considered.
// E.g. if we consider P<1-t [F !"safe"] instead of P>=t [ G "safe"]
bool considersComplementaryEvent;
// Limitations for the quantitative objective value (e.g. 0 <= value <= 1 for probabilities).
// Can be used to guide the underlying solver
boost::optional<ValueType> lowerResultBound, upperResultBound;
void printToStream(std::ostream& out) const {
out << "Original: " << *originalFormula;
out << " \t";
out << "Preprocessed: " << *formula;
if (considersComplementaryEvent) {
out << " (Complementary event)";
}
out << " \t";
out << "result bounds: ";
if (lowerResultBound && upperResultBound) {
out << "[" << *lowerResultBound << ", " << *upperResultBound << "]";
} else if (lowerResultBound) {
out << ">=" << *lowerResultBound;
} else if (upperResultBound) {
out << "<=" << *upperResultBound;
} else {
out << " -none- ";
}
}
};
}
}
}