16 std::set<storm::expressions::Variable>
const& rowVariables,
18 std::set<storm::expressions::Variable>
const& columnVariables,
19 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs,
20 std::map<std::string, storm::expressions::Expression> labelToExpressionMap,
21 std::unordered_map<std::string, RewardModelType>
const& rewardModels)
23 rowVariables, rowExpressionAdapter, columnVariables, rowColumnMetaVariablePairs, labelToExpressionMap, rewardModels) {
32 std::set<storm::expressions::Variable>
const& columnVariables,
33 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs,
34 std::map<std::string, storm::expressions::Expression> labelToExpressionMap,
35 std::unordered_map<std::string, RewardModelType>
const& rewardModels)
37 rowVariables, rowExpressionAdapter, columnVariables, rowColumnMetaVariablePairs, labelToExpressionMap, rewardModels),
38 exitRates(exitRateVector) {
45 std::set<storm::expressions::Variable>
const& rowVariables, std::set<storm::expressions::Variable>
const& columnVariables,
46 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs,
47 std::map<std::string,
storm::dd::Bdd<Type>> labelToBddMap, std::unordered_map<std::string, RewardModelType>
const& rewardModels)
49 rowVariables, columnVariables, rowColumnMetaVariablePairs, labelToBddMap, rewardModels) {
57 std::set<storm::expressions::Variable>
const& columnVariables,
58 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs,
59 std::map<std::string,
storm::dd::Bdd<Type>> labelToBddMap, std::unordered_map<std::string, RewardModelType>
const& rewardModels)
61 rowVariables, columnVariables, rowColumnMetaVariablePairs, labelToBddMap, rewardModels),
62 exitRates(exitRateVector) {
76 for (
auto& rewardModel : this->getRewardModels()) {
77 if (rewardModel.second.hasStateActionRewards()) {
78 rewardModel.second.getStateActionRewardVector() *= getExitRateVector();
80 rewardModel.second.reduceToStateBasedRewards(this->getTransitionMatrix(), this->getRowVariables(), this->getColumnVariables(),
true);
93 std::unordered_map<std::string, NewRewardModelType> newRewardModels;
95 for (
auto const& e : this->getRewardModels()) {
96 newRewardModels.emplace(e.first, e.second.template toValueType<NewValueType>());
99 auto newLabelToBddMap = this->getLabelToBddMap();
100 newLabelToBddMap.erase(
"init");
101 newLabelToBddMap.erase(
"deadlock");
103 return std::make_shared<Ctmc<Type, NewValueType>>(this->getManagerAsSharedPointer(), this->getReachableStates(), this->getInitialStates(),
104 this->getDeadlockStates(), this->getTransitionMatrix().template toValueType<NewValueType>(),
105 this->getExitRateVector().template toValueType<NewValueType>(), this->getRowVariables(),
106 this->getColumnVariables(), this->getRowColumnMetaVariablePairs(), newLabelToBddMap, newRewardModels);