12template<
typename ValueType,
typename RewardModelType>
21template<
typename ValueType,
typename RewardModelType>
24 statePlayerIndications(
std::move(components.statePlayerIndications.get())) {
25 if (components.playerNameToIndexMap) {
26 playerNameToIndexMap = std::move(components.playerNameToIndexMap.get());
31template<
typename ValueType,
typename RewardModelType>
33 return statePlayerIndications;
36template<
typename ValueType,
typename RewardModelType>
38 STORM_LOG_ASSERT(stateIndex < this->getNumberOfStates(),
"Invalid state index: " << stateIndex <<
".");
39 return statePlayerIndications[stateIndex];
42template<
typename ValueType,
typename RewardModelType>
44 auto findIt = playerNameToIndexMap.find(playerName);
45 STORM_LOG_THROW(findIt != playerNameToIndexMap.end(), storm::exceptions::InvalidArgumentException,
"Unknown player name '" << playerName <<
"'.");
46 return findIt->second;
49template<
typename ValueType,
typename RewardModelType>
52 std::set<storm::storage::PlayerIndex> coalitionAsIndexSet;
53 for (
auto const& player : coalition.
getPlayers()) {
54 if (std::holds_alternative<std::string>(player)) {
55 coalitionAsIndexSet.insert(getPlayerIndex(std::get<std::string>(player)));
57 STORM_LOG_ASSERT(std::holds_alternative<storm::storage::PlayerIndex>(player),
"Player identifier has unexpected type.");
58 coalitionAsIndexSet.insert(std::get<storm::storage::PlayerIndex>(player));
62 for (
auto const& pi : coalitionAsIndexSet) {
63 coalitionAsBitVector.
set(pi);
68 for (uint64_t state = 0; state < this->getNumberOfStates(); ++state) {
69 auto const& pi = statePlayerIndications[state];
70 if (pi < coalitionAsBitVector.
size() && coalitionAsBitVector.
get(pi)) {
71 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(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