QuickStart
Install the latest CityLearn version from PyPi with the :code:pip
command:
[ ]:
!pip install CityLearn
CityLearn Control Agents
No Control (Baseline)
Run the following to simulate an environment where the storage systems and heat pumps are not controlled (baseline). The storage actions prescribed will be 0.0 and the heat pump will have no action, i.e. None
, causing it to deliver the ideal load in the building time series files:
[1]:
from citylearn.agents.base import BaselineAgent as Agent
from citylearn.citylearn import CityLearnEnv
# initialize
env = CityLearnEnv('citylearn_challenge_2023_phase_2_local_evaluation', central_agent=True)
model = Agent(env)
# step through environment and apply agent actions
observations, _ = env.reset()
while not env.terminated:
actions = model.predict(observations)
observations, reward, info, terminated, truncated = env.step(actions)
# test
kpis = model.env.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
Couldn't import dot_parser, loading of dot files will not be possible.
/Users/kingsleyenweye/Desktop/INTELLIGENT_ENVIRONMENT_LAB/citylearn/CityLearn/test-py311-env/lib/python3.11/site-packages/gymnasium/spaces/box.py:130: UserWarning: WARN: Box bound precision lowered by casting to float32
gym.logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
name | Building_1 | Building_2 | Building_3 | District |
---|---|---|---|---|
cost_function | ||||
all_time_peak_average | NaN | NaN | NaN | 1.000 |
annual_normalized_unserved_energy_total | 0.019 | 0.018 | 0.018 | 0.018 |
carbon_emissions_total | 1.000 | 1.000 | 1.000 | 1.000 |
cost_total | 1.000 | 1.000 | 1.000 | 1.000 |
daily_one_minus_load_factor_average | NaN | NaN | NaN | 1.000 |
daily_peak_average | NaN | NaN | NaN | 1.000 |
discomfort_cold_delta_average | 1.657 | 0.045 | 0.675 | 0.793 |
discomfort_cold_delta_maximum | 4.878 | 1.793 | 3.642 | 3.438 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.369 | 0.000 | 0.095 | 0.155 |
discomfort_hot_delta_average | 0.053 | 0.577 | 0.081 | 0.237 |
discomfort_hot_delta_maximum | 5.006 | 6.441 | 3.734 | 5.060 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.008 | 0.041 | 0.003 | 0.018 |
discomfort_proportion | 0.377 | 0.041 | 0.098 | 0.172 |
electricity_consumption_total | 1.000 | 1.000 | 1.000 | 1.000 |
monthly_one_minus_load_factor_average | NaN | NaN | NaN | 1.000 |
one_minus_thermal_resilience_proportion | 0.333 | 0.643 | 0.133 | 0.370 |
power_outage_normalized_unserved_energy_total | 0.723 | 0.692 | 0.637 | 0.684 |
ramping_average | NaN | NaN | NaN | 1.000 |
zero_net_energy | 1.000 | 1.000 | 1.000 | 1.000 |
Centralized RBC
Run the following to simulate an environment controlled by centralized RBC agent for a single episode:
[2]:
from citylearn.agents.rbc import BasicRBC as Agent
from citylearn.citylearn import CityLearnEnv
# initialize
env = CityLearnEnv('citylearn_challenge_2023_phase_2_local_evaluation', central_agent=True)
model = Agent(env)
# step through environment and apply agent actions
observations, _ = env.reset()
while not env.terminated:
actions = model.predict(observations)
observations, reward, info, terminated, truncated = env.step(actions)
# test
kpis = model.env.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
name | Building_1 | Building_2 | Building_3 | District |
---|---|---|---|---|
cost_function | ||||
all_time_peak_average | NaN | NaN | NaN | 1.179 |
annual_normalized_unserved_energy_total | 0.017 | 0.016 | 0.016 | 0.016 |
carbon_emissions_total | 1.998 | 1.936 | 1.740 | 1.891 |
cost_total | 1.931 | 1.878 | 1.713 | 1.841 |
daily_one_minus_load_factor_average | NaN | NaN | NaN | 0.720 |
daily_peak_average | NaN | NaN | NaN | 1.352 |
discomfort_cold_delta_average | 9.825 | 3.493 | 3.189 | 5.502 |
discomfort_cold_delta_maximum | 13.774 | 9.875 | 5.514 | 9.721 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.975 | 0.899 | 0.953 | 0.942 |
discomfort_hot_delta_average | 0.005 | 0.022 | 0.010 | 0.012 |
discomfort_hot_delta_maximum | 1.456 | 4.526 | 3.230 | 3.071 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.000 | 0.007 | 0.003 | 0.004 |
discomfort_proportion | 0.975 | 0.907 | 0.957 | 0.946 |
electricity_consumption_total | 1.995 | 1.963 | 1.755 | 1.904 |
monthly_one_minus_load_factor_average | NaN | NaN | NaN | 0.863 |
one_minus_thermal_resilience_proportion | 0.667 | 0.500 | 0.267 | 0.478 |
power_outage_normalized_unserved_energy_total | 0.781 | 0.759 | 0.711 | 0.750 |
ramping_average | NaN | NaN | NaN | 0.959 |
zero_net_energy | 2.059 | 1.994 | 1.773 | 1.942 |
Decentralized-Independent SAC
Run the following to simulate an environment controlled by decentralized-independent SAC agents for 1 training episode:
[3]:
from citylearn.agents.sac import SAC as Agent
from citylearn.citylearn import CityLearnEnv
# initialize
env = CityLearnEnv('citylearn_challenge_2023_phase_2_local_evaluation', central_agent=False)
model = Agent(env)
# train
model.learn(episodes=2, deterministic_finish=True)
# test
kpis = model.env.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
name | Building_1 | Building_2 | Building_3 | District |
---|---|---|---|---|
cost_function | ||||
all_time_peak_average | NaN | NaN | NaN | 0.949 |
annual_normalized_unserved_energy_total | 0.013 | 0.013 | 0.012 | 0.013 |
carbon_emissions_total | 0.943 | 0.973 | 0.952 | 0.956 |
cost_total | 0.906 | 0.935 | 0.920 | 0.920 |
daily_one_minus_load_factor_average | NaN | NaN | NaN | 0.941 |
daily_peak_average | NaN | NaN | NaN | 0.931 |
discomfort_cold_delta_average | 1.932 | 0.915 | 0.913 | 1.253 |
discomfort_cold_delta_maximum | 6.430 | 4.516 | 3.078 | 4.675 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.452 | 0.317 | 0.263 | 0.344 |
discomfort_hot_delta_average | 0.237 | 0.543 | 0.283 | 0.354 |
discomfort_hot_delta_maximum | 4.588 | 6.153 | 3.922 | 4.888 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.042 | 0.151 | 0.028 | 0.074 |
discomfort_proportion | 0.494 | 0.468 | 0.291 | 0.418 |
electricity_consumption_total | 0.953 | 0.991 | 0.966 | 0.970 |
monthly_one_minus_load_factor_average | NaN | NaN | NaN | 0.994 |
one_minus_thermal_resilience_proportion | 0.733 | 0.500 | 0.133 | 0.456 |
power_outage_normalized_unserved_energy_total | 0.628 | 0.648 | 0.596 | 0.624 |
ramping_average | NaN | NaN | NaN | 0.883 |
zero_net_energy | 0.969 | 0.993 | 0.967 | 0.976 |
Decentralized-Cooperative MARLISA
Run the following to simulate an environment controlled by decentralized-cooperative MARLISA agents for 1 training episodes:
[4]:
from citylearn.agents.marlisa import MARLISA as Agent
from citylearn.citylearn import CityLearnEnv
# initialize
env = CityLearnEnv('citylearn_challenge_2023_phase_2_local_evaluation', central_agent=False)
model = Agent(env)
# train
model.learn(episodes=2, deterministic_finish=True)
# test
kpis = model.env.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
name | Building_1 | Building_2 | Building_3 | District |
---|---|---|---|---|
cost_function | ||||
all_time_peak_average | NaN | NaN | NaN | 0.949 |
annual_normalized_unserved_energy_total | 0.013 | 0.013 | 0.013 | 0.013 |
carbon_emissions_total | 0.954 | 0.976 | 0.961 | 0.964 |
cost_total | 0.916 | 0.937 | 0.929 | 0.927 |
daily_one_minus_load_factor_average | NaN | NaN | NaN | 0.938 |
daily_peak_average | NaN | NaN | NaN | 0.934 |
discomfort_cold_delta_average | 1.954 | 0.914 | 0.890 | 1.252 |
discomfort_cold_delta_maximum | 6.447 | 4.527 | 3.032 | 4.668 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.459 | 0.315 | 0.250 | 0.341 |
discomfort_hot_delta_average | 0.232 | 0.546 | 0.291 | 0.356 |
discomfort_hot_delta_maximum | 4.582 | 6.163 | 3.928 | 4.891 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.039 | 0.151 | 0.028 | 0.073 |
discomfort_proportion | 0.498 | 0.466 | 0.278 | 0.414 |
electricity_consumption_total | 0.963 | 0.994 | 0.976 | 0.978 |
monthly_one_minus_load_factor_average | NaN | NaN | NaN | 0.992 |
one_minus_thermal_resilience_proportion | 0.733 | 0.500 | 0.133 | 0.456 |
power_outage_normalized_unserved_energy_total | 0.632 | 0.649 | 0.597 | 0.626 |
ramping_average | NaN | NaN | NaN | 0.883 |
zero_net_energy | 0.979 | 0.997 | 0.977 | 0.984 |
Other Standard Reinforcement Learning Libraries
Stable Baselines3 Reinforcement Learning Algorithms
Install the latest version of Stable Baselines3:
[ ]:
!pip install "stable-baselines3<=2.2.1"
Before the environment is ready for use in Stable Baselines3, it needs to be wrapped. Firstly, wrap the environment using the NormalizedObservationWrapper
(see docs) to ensure that observations served to the agent are min-max normalized between [0, 1] and cyclical observations e.g. hour, are encoded using the cosine transformation.
Next, we wrap with the StableBaselines3Wrapper
(see docs) that ensures observations, actions and rewards are served in manner that is compatible with Stable Baselines3 interface.
⚠️ NOTE:
central_agent
in theenv
must beTrue
when using Stable Baselines3 as it does not support multi-agents.
[5]:
from stable_baselines3.sac import SAC as Agent
from citylearn.citylearn import CityLearnEnv
from citylearn.wrappers import NormalizedObservationWrapper, StableBaselines3Wrapper
# initialize
env = CityLearnEnv('citylearn_challenge_2023_phase_2_local_evaluation', central_agent=True)
env = NormalizedObservationWrapper(env)
env = StableBaselines3Wrapper(env)
model = Agent('MlpPolicy', env)
# train
episodes = 2
model.learn(total_timesteps=env.unwrapped.time_steps*episodes)
# test
observations, _ = env.reset()
while not env.unwrapped.terminated:
actions, _ = model.predict(observations, deterministic=True)
observations, _, _, _, _ = env.step(actions)
kpis = env.unwrapped.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
name | Building_1 | Building_2 | Building_3 | District |
---|---|---|---|---|
cost_function | ||||
all_time_peak_average | NaN | NaN | NaN | 0.834 |
annual_normalized_unserved_energy_total | 0.015 | 0.011 | 0.014 | 0.013 |
carbon_emissions_total | 0.389 | 0.359 | 0.499 | 0.416 |
cost_total | 0.368 | 0.335 | 0.469 | 0.391 |
daily_one_minus_load_factor_average | NaN | NaN | NaN | 1.301 |
daily_peak_average | NaN | NaN | NaN | 0.686 |
discomfort_cold_delta_average | 0.000 | 0.004 | 0.001 | 0.002 |
discomfort_cold_delta_maximum | 0.124 | 0.581 | 0.394 | 0.366 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_delta_average | 9.432 | 7.095 | 8.040 | 8.189 |
discomfort_hot_delta_maximum | 16.671 | 14.709 | 13.401 | 14.927 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.982 | 0.978 | 0.978 | 0.979 |
discomfort_proportion | 0.982 | 0.978 | 0.978 | 0.979 |
electricity_consumption_total | 0.393 | 0.367 | 0.506 | 0.422 |
monthly_one_minus_load_factor_average | NaN | NaN | NaN | 1.127 |
one_minus_thermal_resilience_proportion | 1.000 | 1.000 | 1.000 | 1.000 |
power_outage_normalized_unserved_energy_total | 0.570 | 0.498 | 0.557 | 0.542 |
ramping_average | NaN | NaN | NaN | 0.898 |
zero_net_energy | 0.276 | 0.342 | 0.451 | 0.356 |
RLlib
Install the latest version of RLlib:
[ ]:
!pip install "ray[rllib]<=2.10.0"
We advise that you include the ClippedObservationWrapper
(see docs) wrapper when working with RLlib so that observations are always clipped within the observation space before sending to the agent if not, out-of-bound observations will raise a ValueError
and terminate the training.
We also wrap the environment with NormalizedObservationWrapper
(see docs) to ensure that observations served to the agent are min-max normalized between [0, 1] and cyclical observations e.g. hour, are encoded using the cosine transformation.
RLlib supports both single-agent and multi-agent algorithms. See below for an example for either case.
Single Agent
The single-agent interface for RLlib is the RLlibSingleAgentWrapper
wrapper.
[6]:
import warnings
from citylearn.wrappers import ClippedObservationWrapper, NormalizedObservationWrapper, RLlibSingleAgentWrapper
from ray.rllib.algorithms.sac import SACConfig as Config
warnings.filterwarnings('ignore', category=DeprecationWarning)
# initialize
env_config = {
'env_kwargs': {
'schema': 'citylearn_challenge_2023_phase_2_local_evaluation',
},
'wrappers': [
NormalizedObservationWrapper,
ClippedObservationWrapper
]
}
config = (
Config()
.environment(RLlibSingleAgentWrapper, env_config=env_config)
)
model = config.build()
# train
for i in range(2):
_ = model.train()
# test
env = RLlibSingleAgentWrapper(env_config)
observations, _ = env.reset()
while not env.unwrapped.terminated:
actions = model.compute_single_action(observations, explore=False)
observations, _, _, _, _ = env.step(actions)
kpis = env.unwrapped.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
2024-11-06 19:20:41,805 WARNING deprecation.py:50 -- DeprecationWarning: `rllib/algorithms/simple_q/` has been deprecated. Use `rllib_contrib/simple_q/` instead. This will raise an error in the future!
2024-11-06 19:20:43,974 WARNING env.py:162 -- Your env doesn't have a .spec.max_episode_steps attribute. Your horizon will default to infinity, and your environment will not be reset.
2024-11-06 19:20:44,294 WARNING util.py:62 -- Install gputil for GPU system monitoring.
name | Building_1 | Building_2 | Building_3 | District |
---|---|---|---|---|
cost_function | ||||
all_time_peak_average | NaN | NaN | NaN | 1.063 |
annual_normalized_unserved_energy_total | 0.015 | 0.016 | 0.014 | 0.015 |
carbon_emissions_total | 1.630 | 1.593 | 1.458 | 1.560 |
cost_total | 1.570 | 1.543 | 1.427 | 1.513 |
daily_one_minus_load_factor_average | NaN | NaN | NaN | 0.741 |
daily_peak_average | NaN | NaN | NaN | 1.165 |
discomfort_cold_delta_average | 7.843 | 2.918 | 2.581 | 4.448 |
discomfort_cold_delta_maximum | 12.452 | 8.403 | 5.322 | 8.726 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.969 | 0.741 | 0.765 | 0.825 |
discomfort_hot_delta_average | 0.011 | 0.088 | 0.013 | 0.037 |
discomfort_hot_delta_maximum | 2.275 | 5.453 | 3.477 | 3.735 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.001 | 0.017 | 0.003 | 0.007 |
discomfort_proportion | 0.971 | 0.757 | 0.769 | 0.832 |
electricity_consumption_total | 1.641 | 1.621 | 1.478 | 1.580 |
monthly_one_minus_load_factor_average | NaN | NaN | NaN | 0.891 |
one_minus_thermal_resilience_proportion | 0.733 | 0.643 | 0.267 | 0.548 |
power_outage_normalized_unserved_energy_total | 0.782 | 0.796 | 0.707 | 0.762 |
ramping_average | NaN | NaN | NaN | 0.885 |
zero_net_energy | 1.685 | 1.637 | 1.487 | 1.603 |
Multi-agent
The multi-agent interface for RLlib is the RLlibMultiAgentEnv
wrapper.
[7]:
import warnings
from citylearn.wrappers import ClippedObservationWrapper, NormalizedObservationWrapper, RLlibMultiAgentEnv
from ray.rllib.algorithms.sac import SACConfig as Config
from ray.rllib.policy.policy import PolicySpec
warnings.filterwarnings('ignore', category=DeprecationWarning)
# initialize
env_config = {
'env_kwargs': {
'schema': 'citylearn_challenge_2023_phase_2_local_evaluation',
},
'wrappers': [
NormalizedObservationWrapper,
ClippedObservationWrapper
]
}
config = (
Config()
.environment(RLlibMultiAgentEnv, env_config=env_config)
.multi_agent(
policies={a: PolicySpec() for a in RLlibMultiAgentEnv(env_config)._agent_ids},
policy_mapping_fn=lambda agent_id, episode, worker, **kwargs: agent_id,
)
)
model = config.build()
# train
for i in range(2):
_ = model.train()
# test
env = RLlibMultiAgentEnv(env_config)
observations, _ = env.reset()
while not env.terminated:
actions = {p: model.compute_single_action(o, policy_id=p, explore=False) for p, o in observations.items()}
observations, _, _, _, _ = env.step(actions)
kpis = env.unwrapped.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
2024-11-06 19:21:19,796 WARNING util.py:62 -- Install gputil for GPU system monitoring.
name | Building_1 | Building_2 | Building_3 | District |
---|---|---|---|---|
cost_function | ||||
all_time_peak_average | NaN | NaN | NaN | 1.063 |
annual_normalized_unserved_energy_total | 0.015 | 0.016 | 0.014 | 0.015 |
carbon_emissions_total | 1.639 | 1.595 | 1.459 | 1.564 |
cost_total | 1.579 | 1.544 | 1.428 | 1.517 |
daily_one_minus_load_factor_average | NaN | NaN | NaN | 0.740 |
daily_peak_average | NaN | NaN | NaN | 1.167 |
discomfort_cold_delta_average | 7.907 | 2.924 | 2.584 | 4.471 |
discomfort_cold_delta_maximum | 12.499 | 8.406 | 5.322 | 8.742 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.969 | 0.743 | 0.764 | 0.825 |
discomfort_hot_delta_average | 0.011 | 0.087 | 0.013 | 0.037 |
discomfort_hot_delta_maximum | 2.255 | 5.451 | 3.476 | 3.728 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.001 | 0.017 | 0.003 | 0.007 |
discomfort_proportion | 0.971 | 0.759 | 0.767 | 0.832 |
electricity_consumption_total | 1.650 | 1.622 | 1.479 | 1.584 |
monthly_one_minus_load_factor_average | NaN | NaN | NaN | 0.890 |
one_minus_thermal_resilience_proportion | 0.733 | 0.643 | 0.267 | 0.548 |
power_outage_normalized_unserved_energy_total | 0.783 | 0.796 | 0.707 | 0.762 |
ramping_average | NaN | NaN | NaN | 0.884 |
zero_net_energy | 1.695 | 1.638 | 1.488 | 1.607 |
Neighborhood Dataset Generation
Aside the provided datasets that come with the CityLearn installation, custom single-family residential datasets can be generated in CityLearn by taking advantage of the End-Use Load Profiles for the U.S. Building Stock dataset. The citylearn.end_use_load_profiles.neighborhood.Neighborhood class makes this possible.
To learn more about the methodology used in this feature, refer to the CityLearn v2 paper.
Note that to make use of this feature, EnergyPlus 9.6.0 must be installed. Other EnergyPlus versions are not yet supported.
An example of a generating a dataset and using it in simulation is:
[8]:
from citylearn.agents.rbc import BasicRBC as Agent
from citylearn.citylearn import CityLearnEnv
from citylearn.end_use_load_profiles.neighborhood import Neighborhood, SampleMethod
# path to version EnergyPlus 9.6.0 IDD
idd_filepath = '/Applications/EnergyPlus-9-6-0/PreProcess/IDFVersionUpdater/V9-6-0-Energy+.idd'
# build a neighborhood with n buildings through random sampling of single-family residential buildings in EULP dataset.
# Sampling population is filtered to include specific county and building vintage.
# train their LSTM thermal dynamics models and generate a CityLearn schema for the two buildings
neighborhood = Neighborhood()
n = 2
neighborhood_build = neighborhood.build(
idd_filepath=idd_filepath,
delete_energyplus_simulation_output=True,
sample_buildings_kwargs=dict(
sample_method=SampleMethod.RANDOM,
sample_count=n,
filters={
'in.resstock_county_id': ['TX, Travis County'],
'in.vintage': ['2000s']
},
),
)
# simulate neighborhood in CityLearn
env = CityLearnEnv(neighborhood_build.schema_filepath, central_agent=True)
model = Agent(env)
observations, _ = env.reset()
while not env.terminated:
actions = model.predict(observations)
observations, reward, info, terminated, truncated = env.step(actions)
kpis = model.env.evaluate()
kpis = kpis.pivot(index='cost_function', columns='name', values='value').round(3)
kpis = kpis.dropna(how='all')
display(kpis)
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
EnergyPlus Completed Successfully.
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
EnergyPlus Completed Successfully.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
EnergyPlus Completed Successfully.
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
[openstudio.energyplus.ForwardTranslator] <0> Cannot find file ""
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Program terminated: EnergyPlus Terminated--Error(s) Detected.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
EnergyPlus Completed Successfully.
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
EnergyPlus Completed Successfully.
/Users/kingsleyenweye/Desktop/INTELLIGENT_ENVIRONMENT_LAB/citylearn/CityLearn/test-py311-env/lib/python3.11/site-packages/gymnasium/spaces/box.py:130: UserWarning: WARN: Box bound precision lowered by casting to float32
gym.logger.warn(f"Box bound precision lowered by casting to {self.dtype}")
Couldn't import dot_parser, loading of dot files will not be possible.
Couldn't import dot_parser, loading of dot files will not be possible.
name | District | resstock_2021_tmy3_release_1-164467-0 | resstock_2021_tmy3_release_1-526919-0 |
---|---|---|---|
cost_function | |||
all_time_peak_average | 1.405 | NaN | NaN |
annual_normalized_unserved_energy_total | -0.000 | -0.000 | -0.000 |
daily_one_minus_load_factor_average | 0.501 | NaN | NaN |
daily_peak_average | 3.260 | NaN | NaN |
discomfort_cold_delta_average | 0.174 | 0.002 | 0.346 |
discomfort_cold_delta_maximum | 3.665 | 1.084 | 6.246 |
discomfort_cold_delta_minimum | 0.000 | 0.000 | 0.000 |
discomfort_cold_proportion | 0.047 | 0.000 | 0.095 |
discomfort_hot_delta_average | 2.225 | 0.496 | 3.955 |
discomfort_hot_delta_maximum | 6.444 | 4.320 | 8.568 |
discomfort_hot_delta_minimum | 0.000 | 0.000 | 0.000 |
discomfort_hot_proportion | 0.376 | 0.078 | 0.674 |
discomfort_proportion | 0.423 | 0.078 | 0.769 |
electricity_consumption_total | 5.221 | 4.082 | 6.360 |
monthly_one_minus_load_factor_average | 0.678 | NaN | NaN |
ramping_average | 1.137 | NaN | NaN |
zero_net_energy | -3.855 | -5.923 | -1.787 |