#ifndef STORM_MODELS_SYMBOLIC_STOCHASTICTWOPLAYERGAME_H_ #define STORM_MODELS_SYMBOLIC_STOCHASTICTWOPLAYERGAME_H_ #include "src/models/symbolic/NondeterministicModel.h" #include "src/utility/OsDetection.h" namespace storm { namespace models { namespace symbolic { /*! * This class represents a discrete-time stochastic two-player game. */ template class StochasticTwoPlayerGame : public NondeterministicModel { public: StochasticTwoPlayerGame(StochasticTwoPlayerGame const& other) = default; StochasticTwoPlayerGame& operator=(StochasticTwoPlayerGame const& other) = default; #ifndef WINDOWS StochasticTwoPlayerGame(StochasticTwoPlayerGame&& other) = default; StochasticTwoPlayerGame& operator=(StochasticTwoPlayerGame&& other) = default; #endif /*! * Constructs a model from the given data. * * @param manager The manager responsible for the decision diagrams. * @param reachableStates A DD representing the reachable states. * @param initialStates A DD representing the initial states of the model. * @param transitionMatrix The matrix representing the transitions in the model. * @param rowVariables The set of row meta variables used in the DDs. * @param rowExpressionAdapter An object that can be used to translate expressions in terms of the row * meta variables. * @param columVariables The set of column meta variables used in the DDs. * @param columnExpressionAdapter An object that can be used to translate expressions in terms of the * column meta variables. * @param rowColumnMetaVariablePairs All pairs of row/column meta variables. * @param player1Variables The meta variables used to encode the nondeterministic choices of player 1. * @param player2Variables The meta variables used to encode the nondeterministic choices of player 2. * @param allNondeterminismVariables The meta variables used to encode the nondeterminism in the model. * @param labelToExpressionMap A mapping from label names to their defining expressions. * @param optionalStateRewardVector The reward values associated with the states. * @param optionalTransitionRewardMatrix The reward values associated with the transitions of the model. */ StochasticTwoPlayerGame(std::shared_ptr> manager, storm::dd::Bdd reachableStates, storm::dd::Bdd initialStates, storm::dd::Add transitionMatrix, std::set const& rowVariables, std::shared_ptr> rowExpressionAdapter, std::set const& columnVariables, std::shared_ptr> columnExpressionAdapter, std::vector> const& rowColumnMetaVariablePairs, std::set const& player1Variables, std::set const& player2Variables, std::set const& allNondeterminismVariables, std::map labelToExpressionMap = std::map(), boost::optional> const& optionalStateRewardVector = boost::optional>(), boost::optional> const& optionalTransitionRewardMatrix = boost::optional>()); /*! * Retrieeves the set of meta variables used to encode the nondeterministic choices of player 1. * * @return The set of meta variables used to encode the nondeterministic choices of player 1. */ std::set const& getPlayer1Variables() const; /*! * Retrieeves the set of meta variables used to encode the nondeterministic choices of player 2. * * @return The set of meta variables used to encode the nondeterministic choices of player 2. */ std::set const& getPlayer2Variables() const; private: // The meta variables used to encode the nondeterministic choices of player 1. std::set player1Variables; // The meta variables used to encode the nondeterministic choices of player 2. std::set player2Variables; }; } // namespace symbolic } // namespace models } // namespace storm #endif /* STORM_MODELS_SYMBOLIC_STOCHASTICTWOPLAYERGAME_H_ */