Hi. I have been working with SMAC for the past week or so. I noticed it always returns states and observations as a single vector. I understand that, for the purposes of RL, this makes sense, as an agent only needs to tell states apart in order to build a Q table. Also, since SMAC is supposed to be used as a benchmark, it is important that every algorithm receive the same information.
However, for my research, I find myself in need of state variables in a more structured way, so I can decide how to use them later. For example, I would like to receive features for each agent and enemy separately in a dictionary and also know what each feature is. This would allow me (and other SMAC users) to build their own state representations.
To that end, I created a couple of methods inside SMAC.
One returns states as dictionaries (ally and enemy features in matrices, lists describing what each column of each matrix stores and lists containing unit types). You can see it in commit douglasrizzo/smac@235bea1.
Another method returns a visibility matrix, i.e. which agents see which units. This is on commit douglasrizzo/smac@e979e33.
I developed both methods in separate branches, so I could easily create separate pull requests. But first I'd like to know of this would be a contribution you'd be interested in.
Hi @douglasrizzo. Thanks again for contributing to SMAC. I've just merged your previous PR. Please go ahead and add new PRs for the two aforementioned methods.
Hi. I have been working with SMAC for the past week or so. I noticed it always returns states and observations as a single vector. I understand that, for the purposes of RL, this makes sense, as an agent only needs to tell states apart in order to build a Q table. Also, since SMAC is supposed to be used as a benchmark, it is important that every algorithm receive the same information. However, for my research, I find myself in need of state variables in a more structured way, so I can decide how to use them later. For example, I would like to receive features for each agent and enemy separately in a dictionary and also know what each feature is. This would allow me (and other SMAC users) to build their own state representations. To that end, I created a couple of methods inside SMAC.
I developed both methods in separate branches, so I could easily create separate pull requests. But first I'd like to know of this would be a contribution you'd be interested in.