Browse Source
forgotten files
forgotten files
Former-commit-id:tempestpy_adaptions3d9bce824d
[formerlya347808794
] Former-commit-id:a11fa06972
dehnert
8 years ago
2 changed files with 168 additions and 0 deletions
@ -0,0 +1,129 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include <string> |
||||
|
#include <vector> |
||||
|
#include <set> |
||||
|
|
||||
|
#include <boost/variant.hpp> |
||||
|
#include <boost/optional.hpp> |
||||
|
|
||||
|
#include "src/storage/expressions/Expression.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace expressions { |
||||
|
class ExpressionManager; |
||||
|
} |
||||
|
|
||||
|
namespace models { |
||||
|
namespace sparse { |
||||
|
class StateLabeling; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
namespace logic { |
||||
|
class Formula; |
||||
|
} |
||||
|
|
||||
|
namespace builder { |
||||
|
|
||||
|
class LabelOrExpression { |
||||
|
public: |
||||
|
LabelOrExpression(storm::expressions::Expression const& expression); |
||||
|
LabelOrExpression(std::string const& label); |
||||
|
|
||||
|
bool isLabel() const; |
||||
|
std::string const& getLabel() const; |
||||
|
bool isExpression() const; |
||||
|
storm::expressions::Expression const& getExpression() const; |
||||
|
|
||||
|
private: |
||||
|
/// An optional label for the expression. |
||||
|
boost::variant<std::string, storm::expressions::Expression> labelOrExpression; |
||||
|
}; |
||||
|
|
||||
|
class BuilderOptions { |
||||
|
public: |
||||
|
/*! |
||||
|
* Creates an object representing the default options. |
||||
|
*/ |
||||
|
BuilderOptions(bool buildAllRewardModels = false, bool buildAllLabels = false); |
||||
|
|
||||
|
/*! |
||||
|
* Creates an object representing the suggested building options assuming that the given formula is the |
||||
|
* only one to check. Additional formulas may be preserved by calling <code>preserveFormula</code>. |
||||
|
* |
||||
|
* @param formula The formula based on which to choose the building options. |
||||
|
*/ |
||||
|
BuilderOptions(storm::logic::Formula const& formula); |
||||
|
|
||||
|
/*! |
||||
|
* Creates an object representing the suggested building options assuming that the given formulas are |
||||
|
* the only ones to check. Additional formulas may be preserved by calling <code>preserveFormula</code>. |
||||
|
* |
||||
|
* @param formula Thes formula based on which to choose the building options. |
||||
|
*/ |
||||
|
BuilderOptions(std::vector<std::shared_ptr<storm::logic::Formula const>> const& formulas); |
||||
|
|
||||
|
/*! |
||||
|
* Changes the options in a way that ensures that the given formula can be checked on the model once it |
||||
|
* has been built. |
||||
|
* |
||||
|
* @param formula The formula that is to be ''preserved''. |
||||
|
*/ |
||||
|
void preserveFormula(storm::logic::Formula const& formula); |
||||
|
|
||||
|
/*! |
||||
|
* Analyzes the given formula and sets an expression for the states states of the model that can be |
||||
|
* treated as terminal states. Note that this may interfere with checking properties different than the |
||||
|
* one provided. |
||||
|
* |
||||
|
* @param formula The formula used to (possibly) derive an expression for the terminal states of the |
||||
|
* model. |
||||
|
*/ |
||||
|
void setTerminalStatesFromFormula(storm::logic::Formula const& formula); |
||||
|
|
||||
|
std::vector<std::string> const& getRewardModelNames() const; |
||||
|
std::set<std::string> const& getLabelNames() const; |
||||
|
std::vector<storm::expressions::Expression> const& getExpressionLabels() const; |
||||
|
std::vector<std::pair<LabelOrExpression, bool>> const& getTerminalStates() const; |
||||
|
bool hasTerminalStates() const; |
||||
|
void clearTerminalStates(); |
||||
|
bool isBuildChoiceLabelsSet() const; |
||||
|
bool isBuildAllRewardModelsSet() const; |
||||
|
bool isBuildAllLabelsSet() const; |
||||
|
|
||||
|
BuilderOptions& setBuildAllRewardModels(); |
||||
|
BuilderOptions& addRewardModel(std::string const& rewardModelName); |
||||
|
BuilderOptions& setBuildAllLabels(); |
||||
|
BuilderOptions& addLabel(storm::expressions::Expression const& expression); |
||||
|
BuilderOptions& addLabel(std::string const& labelName); |
||||
|
BuilderOptions& addTerminalExpression(storm::expressions::Expression const& expression, bool value); |
||||
|
BuilderOptions& addTerminalLabel(std::string const& label, bool value); |
||||
|
BuilderOptions& setBuildChoiceLabels(bool newValue); |
||||
|
|
||||
|
private: |
||||
|
/// A flag that indicates whether all reward models are to be built. In this case, the reward model names are |
||||
|
/// to be ignored. |
||||
|
bool buildAllRewardModels; |
||||
|
|
||||
|
/// The names of the reward models to generate. |
||||
|
std::vector<std::string> rewardModelNames; |
||||
|
|
||||
|
/// A flag that indicates whether all labels are to be built. In this case, the label names are to be ignored. |
||||
|
bool buildAllLabels; |
||||
|
|
||||
|
/// A set of labels to build. |
||||
|
std::set<std::string> labelNames; |
||||
|
|
||||
|
/// The expression that are to be used for creating the state labeling. |
||||
|
std::vector<storm::expressions::Expression> expressionLabels; |
||||
|
|
||||
|
/// If one of these labels/expressions evaluates to the given bool, the builder can abort the exploration. |
||||
|
std::vector<std::pair<LabelOrExpression, bool>> terminalStates; |
||||
|
|
||||
|
/// A flag indicating whether or not to build choice labels. |
||||
|
bool buildChoiceLabels; |
||||
|
}; |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include <memory> |
||||
|
|
||||
|
#include "src/builder/jit/ModelComponentsBuilder.h" |
||||
|
|
||||
|
namespace storm { |
||||
|
namespace models { |
||||
|
namespace sparse { |
||||
|
template <typename ValueType> |
||||
|
class StandardRewardModel; |
||||
|
|
||||
|
template <typename ValueType, typename RewardModelType> |
||||
|
class Model; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
namespace builder { |
||||
|
namespace jit { |
||||
|
|
||||
|
template <typename IndexType, typename ValueType> |
||||
|
class JitModelBuilderInterface { |
||||
|
public: |
||||
|
JitModelBuilderInterface(ModelComponentsBuilder<IndexType, ValueType>& modelComponentsBuilder); |
||||
|
|
||||
|
virtual ~JitModelBuilderInterface(); |
||||
|
|
||||
|
virtual storm::models::sparse::Model<ValueType, storm::models::sparse::StandardRewardModel<ValueType>>* build() = 0; |
||||
|
|
||||
|
void addStateBehaviour(IndexType const& stateId, StateBehaviour<IndexType, ValueType>& behaviour); |
||||
|
|
||||
|
protected: |
||||
|
ModelComponentsBuilder<IndexType, ValueType>& modelComponentsBuilder; |
||||
|
}; |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue