
Organization
Location
Badges
Activity
Challenge Categories
Challenges Entered
Advanced Building Control & Grid-Resilience
Latest submissions
Multi-Agent RL for Trains
Latest submissions
3D Seismic Image Interpretation by Machine Learning
Latest submissions
Participant | Rating |
---|
Participant | Rating |
---|
NeurIPS 2023 Citylearn Challenge


Discussion about how to find data about Neurips 2023 citylearn
Over 1 year ago@md_abu_bakar_chowdhu please, refer to the further reading list on the competition page for information about data and related papers.

[BUG FIX] Update your environment to CityLearn==2.1b12
Over 1 year agoTL;DR
- To apply the bug fixes, update your local evaluation
requirements.txt
file to useCityLearn==2.1b12
and alsopip
installCityLearn==2.1b12
in your local evaluation environment. - The online evaluator has been updated to use
CityLearn==2.1b12
. - All submissions to Phase 2 will be rerun with
CityLearn==2.1b12
to update the leaderboard by 2023-10-23. - The bug fixes will affect results for control track but not forecast track. However, both tracks participants are advised to make the update.
Summary of bug fixes
We recently made some bug fixes that will affect the KPI values of any Phase 2 local or online evaluation using CityLearn<=2.1b11
in the control track only. These bug fixes are:
-
A bug introduced when transitioning from
CityLearn==2.0.0
toCityLearn==2.1b1
affected how thedhw_storage
andelectrical_storage
were charged. Theround_trip_efficiency
was being multiplied by bothenergy_init
andenergy
instead of the latter alone. This caused the charged/discharged energy to be smaller than required which will affectnet_electricity_consumption
in the buildings. This was the original change that caused the bug and this was the change inCityLearn==2.1b10
that fixed the bug. Thanks to @rl11 for spotting this bug. -
A bug introduced when transitioning from
CityLearn==2.1b9
toCityLearn==2.1b10
affected howPOWER_OUTAGE_NORMALIZED_UNSERVED_ENERGY_TOTAL
was calculated. In an attempt to avoid a zero division error when calculating this KPI for simulations without a power outage, a bug was introduced that considered unserved energy during both outage and non-outage time steps instead of the former alone. This caused very low KPI values thus, affecting the average score of all KPIs. This was the original change inCityLearn==2.1b10
that caused the bug and this was the change inCityLearn==2.1b12
that fixed the bug. Thanks to @callum for spotting both the zero division and low value bugs. -
An old bug introduced when transitioning from
CityLearn==1.1.0
toCityLearn==1.2.0
wherecooling_storage
,heating_storage
anddhw_storage
were causing slightly overestimated electricity consumption when the energy to be added to any of these storage systems as a result of a charge action exceeded thecapacity
. Internally, the storage system models accounted for the excess energy however, thecooling_device
,heating_device
anddhw_device
used to charge these storage systems used theenergy
before adjustments forcapacity
limits to calculate their own electricity consumption. Note that this bug did not affectelectrical_storage
. This was the pull request that fixed the bug. Thanks to @skywuuuu for leading me to back calculatenet_electricity_consumption
that led to finding this old issue.
What you should do
- To apply the bug fixes, update your local evaluation
requirements.txt
file to useCityLearn==2.1b12
and alsopip
installCityLearn==2.1b12
in your local evaluation environment. The online evaluator has been updated to use this new version. - All submissions to Phase 2 will be rerun with
CityLearn==2.1b12
to update the leaderboard by 2023-10-23.

Observations data structure and indexing
Over 1 year ago@Chemago the reason all building observations are in one list is because the control is set to use a central agent i.e. one controller manages all the heat pumps, dhw storage systems and batteries in all buildings. If you want to get serve the observations in a list of lists, you will need to set central_agent=False
(you can do this in the schema.json
for local evaluation and see this post for online evaluation). Alternatively, you can obtain building level observations by calling env.buildings[0].observations()
.

Getting building level features
Over 1 year ago@Chemago you can get carbon intensity using env.buildings[0].carbon_intensity.carbon_intensity
. This time series is the same for all buildings and is in unit of kgco2e/kwh
. Alternatively, you can use env.buildings[0].net_electricity_consumption_emission
which differs across buildings and is in units of kgco2e
.
Vintage
and Area
are not stored anywhere in the environment. For the others:
- Heat pump (kW):
env.buildings[0].cooling_device.nominal_power
- Heater (kW):
env.buildings[0].dhw_device.nominal_power
- DHW storage (kWh):
env.buildings[0].dhw_storage.capacity
- Battery (kWh):
env.buildings[0].electrical_storage.capacity
- PV (kW):
env.buildings[0].pv.nominal_power

JSON aicrowd file central agent
Over 1 year agoduplicate discussion here How to setup central_agent to false in the evaluation phase?


Stochastic definition (re: Outages during Phase II)
Over 1 year agoThanks for the questions @donnavakalis and sorry for the late response. The stochastic outages will be the latter i.e., hidden but fixed and the same for everyone throughout Phase II. However, we are introducing a private leaderboard at the end of Phase II that uses another set of random seed. We will provide more information about this in the next couple of days when Phase II commences.
Forecasting Track: CityLearn Challenge

CityLearn Forecasting Track - Error Building Environment
Over 1 year agoCityLearn itself is best used with Python 3.7. It might install with later versions but not without some dependency issues from experience. I also think the AICrowd online evaluator is run in a 3.7 environment as well. So yeah, your packages should be compatible with 3.7. Also, apologies if it wasnβt properly documented!

CityLearn Forecasting Track - Error Building Environment
Over 1 year ago@phil_aupke did you specify a version number for lightgbm? If you did, make sure it is distributed for Python 3.7 since the online evaluator uses this specific Python version.
Control Track: CityLearn Challenge

Clarifications needed, also potential bug?
Over 1 year agoIt has been resolved. See this post. The competition pages have also been updated with current information about weights and KPIs.

Clarifications needed, also potential bug?
Over 1 year ago@rl11 thanks for raising all these important points. Here are my responses:
-
The competition page is outdated and needs to be updated with the correct information especially information about the weights control KPIs. The correct weights are what is in the code. We will work on updating the competition page (@snehananavati please, can you update the pages)?
-
Weather will be the same in final evaluation but 3 other buildings are added. This βfinalβ evaluation is already taking place. It is the βCityLearn Privateβ you see in your submission which you cannot see the scores for. LSTMs donβt change at any point. Most of these differences are highlighted in this post.
-
There is no heating at any point in the competition.
-
This is a very good catch, thank you! I will check it out ASAP.



Request for Extended Runtime in Phase 2
Over 1 year agoYeah no worries I see what you mean. Thatβs one way to look at it. just remember you are double counting the public 3 that way since the same public 3 buildings are used in the public and private evaluations.

Request for Extended Runtime in Phase 2
Over 1 year agoHi @reggie, it is 6 buildings not 9 in Phase private evaluation :). Maybe if runtime is an issue we can extend a bit. Please, any thoughts on this @dipam?

Role of indoor temp and rh and setpoint variables in csv files
Over 1 year agoHi @donnavakalis your understanding is correct about (1),
Historically, CityLearn could not control the heat pump and there were no temperature dynamics. Instead, there was the assumption that the ideal cooling/heating loads were always met while using the storage systems to provide load shifting flexibility. In this previous setup, the indoor temperature in the csv files were useful as they were static and didnβt change during runtime. RH values have always been included in the csv files in case the modeler found it useful as an observation but it doesnβt actually get used during simulation so it can be ignored all together.
The updated env we are using this year allows the heat pump to be controlled and can predict the temperature change based on how much energy the heat pump delivers. So the indoor temp at runtime changes from what is in the csv files. However, one might choose to use the dataset in the old set up or the new setup which is why the values are still populated in the csv. Also, the LSTM that does the temperature prediction has a lookback of 12 time steps so the very first 12 time steps of an episodes will use the data in the csv to infer indoor temp.
Regarding your second question, the setpoint in the csv is actually useful in two ways. First, it can be used as an observation to the agent. Secondly, it actually is considered when calculating delta for comfort. See here where it is used to calculate the temperature delta observation, here where it is used to calculate the comfort bands in reward function and here where it is used to calculate delta in the discomfort evaluation metric.

How to setup central_agent to false in the evaluation phase?
Over 1 year ago@dipam please can you respond to this? I think there are a couple other people asking to be able to set central_agent
to True
/False
.

How to load a trained model during AIcrowd evaluation?
Over 1 year ago@dipam please, can you respond to this?
[ANNOUNCEMENT] Attend NeurIPS Competition Track: The CityLearn Challenge 2023 Workshop
Over 1 year ago