21 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs,
22 std::set<storm::expressions::Variable>
const& player1Variables, std::set<storm::expressions::Variable>
const& player2Variables,
23 std::set<storm::expressions::Variable>
const& nondeterminismVariables, std::map<std::string, storm::expressions::Expression> labelToExpressionMap,
24 std::unordered_map<std::string, RewardModelType>
const& rewardModels)
26 rowVariables, rowExpressionAdapter, columnVariables, rowColumnMetaVariablePairs, nondeterminismVariables,
27 labelToExpressionMap, rewardModels),
28 player1Variables(player1Variables),
29 player2Variables(player2Variables) {
37 std::set<storm::expressions::Variable>
const& columnVariables,
38 std::vector<std::pair<storm::expressions::Variable, storm::expressions::Variable>>
const& rowColumnMetaVariablePairs,
39 std::set<storm::expressions::Variable>
const& player1Variables, std::set<storm::expressions::Variable>
const& player2Variables,
40 std::set<storm::expressions::Variable>
const& nondeterminismVariables, std::map<std::string,
storm::dd::Bdd<Type>> labelToBddMap,
41 std::unordered_map<std::string, RewardModelType>
const& rewardModels)
43 rowVariables, columnVariables, rowColumnMetaVariablePairs, nondeterminismVariables, labelToBddMap, rewardModels),
44 player1Variables(player1Variables),
45 player2Variables(player2Variables) {
49template<storm::dd::DdType Type,
typename ValueType>
52 this->illegalPlayer1Mask = this->getTransitionMatrix().notZero().existsAbstract(this->getColumnVariables()).existsAbstract(this->getPlayer2Variables());
55 illegalPlayer2Mask = this->getIllegalMask() && this->illegalPlayer1Mask;
58 this->illegalPlayer1Mask = !illegalPlayer1Mask && this->getReachableStates();
61template<storm::dd::DdType Type,
typename ValueType>
63 return illegalPlayer1Mask;
66template<storm::dd::DdType Type,
typename ValueType>
68 return illegalPlayer2Mask;
71template<storm::dd::DdType Type,
typename ValueType>
73 return player1Variables;
76template<storm::dd::DdType Type,
typename ValueType>
78 return player2Variables;
81template<storm::dd::DdType Type,
typename ValueType>
82template<
typename NewValueType>
85 std::unordered_map<std::string, NewRewardModelType> newRewardModels;
87 for (
auto const& e : this->getRewardModels()) {
88 newRewardModels.emplace(e.first, e.second.template toValueType<NewValueType>());
91 auto newLabelToBddMap = this->getLabelToBddMap();
92 newLabelToBddMap.erase(
"init");
93 newLabelToBddMap.erase(
"deadlock");
95 return std::make_shared<StochasticTwoPlayerGame<Type, NewValueType>>(
96 this->getManagerAsSharedPointer(), this->getReachableStates(), this->getInitialStates(), this->getDeadlockStates(),
97 this->getTransitionMatrix().template toValueType<NewValueType>(), this->getRowVariables(), this->getColumnVariables(),
98 this->getRowColumnMetaVariablePairs(), this->getPlayer1Variables(), this->getPlayer2Variables(), this->getNondeterminismVariables(), newLabelToBddMap,
102template<storm::dd::DdType Type,
typename ValueType>
104 return this->getQualitativeTransitionMatrix().existsAbstract(this->getColumnVariables()).getNonZeroCount();
110#ifdef STORM_HAVE_CARL
112template std::shared_ptr<StochasticTwoPlayerGame<storm::dd::DdType::Sylvan, double>>