14template<
typename ValueType,
typename RewardModelType>
18 playerNameToIndexMap = components.playerNameToIndexMap.get();
23template<
typename ValueType,
typename RewardModelType>
27 statePlayerIndications(
std::move(components.statePlayerIndications.get())) {
28 if (components.playerNameToIndexMap) {
29 playerNameToIndexMap = std::move(components.playerNameToIndexMap.get());
35template<
typename ValueType,
typename RewardModelType>
37 return statePlayerIndications;
40template<
typename ValueType,
typename RewardModelType>
43 return statePlayerIndications[stateIndex];
46template<
typename ValueType,
typename RewardModelType>
48 auto findIt = playerNameToIndexMap.find(playerName);
49 STORM_LOG_THROW(findIt != playerNameToIndexMap.end(), storm::exceptions::InvalidArgumentException,
"Unknown player name '" << playerName <<
"'.");
50 return findIt->second;
53template<
typename ValueType,
typename RewardModelType>
55 return playerNameToIndexMap;
58template<
typename ValueType,
typename RewardModelType>
60 return playerNameToIndexMap.size();
63template<
typename ValueType,
typename RewardModelType>
66 std::set<storm::storage::PlayerIndex> coalitionAsIndexSet;
67 for (
auto const& player : coalition.
getPlayers()) {
68 if (std::holds_alternative<std::string>(player)) {
69 coalitionAsIndexSet.insert(
getPlayerIndex(std::get<std::string>(player)));
71 STORM_LOG_ASSERT(std::holds_alternative<storm::storage::PlayerIndex>(player),
"Player identifier has unexpected type.");
72 coalitionAsIndexSet.insert(std::get<storm::storage::PlayerIndex>(player));
76 for (
auto const& pi : coalitionAsIndexSet) {
77 coalitionAsBitVector.
set(pi);
83 auto const& pi = statePlayerIndications[state];
84 if (pi < coalitionAsBitVector.
size() && coalitionAsBitVector.
get(pi)) {
85 result.
set(state,
true);
std::vector< std::variant< std::string, storm::storage::PlayerIndex > > const & getPlayers() const
CRewardModelType RewardModelType
virtual uint_fast64_t getNumberOfStates() const override
Returns the number of states of the model.
NondeterministicModel(ModelType modelType, storm::storage::sparse::ModelComponents< ValueType, RewardModelType > const &components)
Constructs a model from the given data.
This class represents a stochastic multiplayer game.
std::vector< storm::storage::PlayerIndex > const & getStatePlayerIndications() const
storm::storage::PlayerIndex getPlayerOfState(uint64_t stateIndex) const
storm::storage::BitVector computeStatesOfCoalition(storm::logic::PlayerCoalition const &coalition) const
std::map< std::string, storm::storage::PlayerIndex > const & getPlayerNamesToIndex() const
Smg(storm::storage::sparse::ModelComponents< ValueType, RewardModelType > const &components)
Constructs a model from the given data.
storm::storage::PlayerIndex getPlayerIndex(std::string const &playerName) const
uint64_t getNumberOfPlayers() const
A bit vector that is internally represented as a vector of 64-bit values.
void set(uint64_t index, bool value=true)
Sets the given truth value at the given index.
size_t size() const
Retrieves the number of bits this bit vector can store.
bool get(uint64_t index) const
Retrieves the truth value of the bit at the given index and performs a bound check.
#define STORM_LOG_ASSERT(cond, message)
#define STORM_LOG_THROW(cond, exception, message)
boost::optional< std::map< std::string, storm::storage::PlayerIndex > > playerNameToIndexMap