15template<
typename ValueType,
typename RewardModelType>
24template<
typename ValueType,
typename RewardModelType>
27 statePlayerIndications(
std::move(components.statePlayerIndications.get())) {
28 if (components.playerNameToIndexMap) {
29 playerNameToIndexMap = std::move(components.playerNameToIndexMap.get());
34template<
typename ValueType,
typename RewardModelType>
36 return statePlayerIndications;
39template<
typename ValueType,
typename RewardModelType>
41 STORM_LOG_ASSERT(stateIndex < this->getNumberOfStates(),
"Invalid state index: " << stateIndex <<
".");
42 return statePlayerIndications[stateIndex];
45template<
typename ValueType,
typename RewardModelType>
47 auto findIt = playerNameToIndexMap.find(playerName);
48 STORM_LOG_THROW(findIt != playerNameToIndexMap.end(), storm::exceptions::InvalidArgumentException,
"Unknown player name '" << playerName <<
"'.");
49 return findIt->second;
52template<
typename ValueType,
typename RewardModelType>
55 std::set<storm::storage::PlayerIndex> coalitionAsIndexSet;
56 for (
auto const& player : coalition.
getPlayers()) {
57 if (std::holds_alternative<std::string>(player)) {
58 coalitionAsIndexSet.insert(getPlayerIndex(std::get<std::string>(player)));
60 STORM_LOG_ASSERT(std::holds_alternative<storm::storage::PlayerIndex>(player),
"Player identifier has unexpected type.");
61 coalitionAsIndexSet.insert(std::get<storm::storage::PlayerIndex>(player));
65 for (
auto const& pi : coalitionAsIndexSet) {
66 coalitionAsBitVector.
set(pi);
71 for (uint64_t state = 0; state < this->getNumberOfStates(); ++state) {
72 auto const& pi = statePlayerIndications[state];
73 if (pi < coalitionAsBitVector.
size() && coalitionAsBitVector.
get(pi)) {
74 result.
set(state,
true);
std::vector< std::variant< std::string, storm::storage::PlayerIndex > > const & getPlayers() const
CRewardModelType RewardModelType
The base class of sparse nondeterministic models.
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
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
A bit vector that is internally represented as a vector of 64-bit values.
void set(uint_fast64_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(uint_fast64_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