diff --git a/src/storm/storage/sparse/ModelComponents.h b/src/storm/storage/sparse/ModelComponents.h index ca325b73c..29ae3d14b 100644 --- a/src/storm/storage/sparse/ModelComponents.h +++ b/src/storm/storage/sparse/ModelComponents.h @@ -21,35 +21,37 @@ namespace storm { namespace storage { namespace sparse { - + template> struct ModelComponents { - + ModelComponents(storm::storage::SparseMatrix const& transitionMatrix, storm::models::sparse::StateLabeling const& stateLabeling = storm::models::sparse::StateLabeling(), std::unordered_map const& rewardModels = std::unordered_map(), bool rateTransitions = false, boost::optional const& markovianStates = boost::none, - boost::optional> const& player1Matrix = boost::none) - : transitionMatrix(transitionMatrix), stateLabeling(stateLabeling), rewardModels(rewardModels), rateTransitions(rateTransitions), markovianStates(markovianStates), player1Matrix(player1Matrix) { + boost::optional> const& player1Matrix = boost::none, + boost::optional> const& playerActionIndices = boost::none) + : transitionMatrix(transitionMatrix), stateLabeling(stateLabeling), rewardModels(rewardModels), rateTransitions(rateTransitions), markovianStates(markovianStates), player1Matrix(player1Matrix), playerActionIndices(playerActionIndices) { // Intentionally left empty } - + ModelComponents(storm::storage::SparseMatrix&& transitionMatrix = storm::storage::SparseMatrix(), storm::models::sparse::StateLabeling&& stateLabeling = storm::models::sparse::StateLabeling(), std::unordered_map&& rewardModels = std::unordered_map(), bool rateTransitions = false, boost::optional&& markovianStates = boost::none, - boost::optional>&& player1Matrix = boost::none) - : transitionMatrix(std::move(transitionMatrix)), stateLabeling(std::move(stateLabeling)), rewardModels(std::move(rewardModels)), rateTransitions(rateTransitions), markovianStates(std::move(markovianStates)), player1Matrix(std::move(player1Matrix)) { + boost::optional>&& player1Matrix = boost::none, + boost::optional>&& playerActionIndices = boost::none) + : transitionMatrix(std::move(transitionMatrix)), stateLabeling(std::move(stateLabeling)), rewardModels(std::move(rewardModels)), rateTransitions(rateTransitions), markovianStates(std::move(markovianStates)), player1Matrix(std::move(player1Matrix)), playerActionIndices(std::move(playerActionIndices)) { // Intentionally left empty } - - - - + + + + // General components (applicable for all model types): - + // The transition matrix. storm::storage::SparseMatrix transitionMatrix; // The state labeling. @@ -80,7 +82,11 @@ namespace storm { // Stochastic two player game specific components: // The matrix of player 1 choices (needed for stochastic two player games boost::optional> player1Matrix; + + // Stochastic multiplayer game specific components: + // The vector mapping state choices to players + boost::optional> playerActionIndices; }; } } -} \ No newline at end of file +}