Critical infromation mising from building info


I have a question about what we are allowed to do with the building info CityLearnEnv.get_building_information() that is available in the obs_dict and passed into the
OrderEnforcingAgent.register_reset(self, observation)

It is named observation but indeed it is an obs_dict containing building_info. But the building info is not used anywhere. Can we pass this information as information to the agent?

If so, I feel that a piece of critical information is missing from building info. The nominal battery capacity is not there. It appears rather unrealistic to run an efficient battery controller if the nominal battery capacity is unknown while all the other power data is in kWh.

This information does not matter if we can assume all buildings, notably those that will be used during evaluation, will always have the same battery capacity. Can you confirm that battery capacity can be assumed to be always the same as the one in the buildings use for training (where it is 6.4kWh).



I think building_info is not being passed in the online evaluation.

I am of the opinion that we should be able to grab it for compatibility with existing agents in the citylearn repo

1 Like

I did investigate this a little bit further. According to previous posts, we should be able to modify the orderenforcing agent such that it passes the building_info into our user agent. I now tried this to access the nominal power of the solar panel that is so nicely packed in the env.get_building_information() function like this:

building_info[building.uid][‘solar_power’] = round(building.pv.nominal_power, 3)

Unfortunately, building.uid is a random integer, and therefore, it is not easily possible to properly match the agent id and the building. (In fact, one may rely on the fact that dict is order-preserving since Python 3.6, but I still don’t understand whether building info can be used or not)

So please let us know whether the intention is that the agent guesses the building information from the data, or whether these are bugs that will be fixed?



Hi @kingsley_nweye @dipam have you checked this? It seems that some information is being provided in the local evaluation that is not being handed to the modelo on-line.

1 Like

Having the same issue here. Is it going to be possible to find the capacity of pv and batteries for unknown buildings?


Do you have an update on the question ? Thanks

@zanga, we are working on getting this resolved this week.

@kingsley_nweye Is there an update on this? It sounds like evgeny_genov was asking for the capacity of the batteries. I’d also like to have the other battery attributes added to building_info. If I’m not mistaken, none of these values are currently accessible.

Alternatively, can we assume that the battery attributes will be the same as they are in schema.json? In particular:

"attributes": {
  "capacity": 6.4,
  "efficiency": 0.9,
  "capacity_loss_coefficient": 1e-05,
  "loss_coefficient": 0.0,
  "nominal_power": 5.0

this is useful information

Hi @mt1 thanks for your question. The battery capacity as well as other attributes are not in the env.building_information property but you can access all battery properties via env.buildings[i].electrical_storage. However, your assumption is correct that the properties are the same as what is found in schema.json. One thing to note is that the capacity degrades over time and you can see that through the env.buildings[i].electrical_storage.capacity_history variable.

1 Like

Hi @kingsley_nweye, thanks for the clarification. This answers everything I wanted to know about this.

to follow up on this topic, @kingsley_nweye how can we access the env.buildings[i].electrical_storage at rutime since the register_reset function doesn’t have access to the env ? Are we allowed to modify the env_reset function ?

1 Like