Release 1.7.0
This release introduces some new functionalities, such as the compatibility to generate data "on the fly" or add more data to an environment.
It also adds some useful features for the curtailment and storage units (some new attributes of the observation) and a first version of the environment used for l2rpn WCCI 2022 competition.
Python 3.6 support has been dropped.
Breaking changes
- the
L2RPNSandBoxScore
,RedispReward
andEconomicReward
now properly computes the cost of the grid
(there was an error between the conversion from MWh - cost is given in $ / MWh - and MW). This impacts alsoScoreICAPS2021
andScoreL2RPN2020
. - in the "gym_compat" module the curtailment action type has
for dimension the number of dispatchable generators (as opposed to all generators
before) this was mandatory to fix issue #282 - the size of the continuous action space for the redispatching in
case of gym compatibility has also been adjusted to be consistent with curtailment.
Before it has the size ofenv.n_gen
nownp.sum(env.gen_redispatchable)
. - move the
_ObsEnv
module toEnvironment
(was before inObservation
). - adding the
curtailment_limit_effective
in the observation converted to gym. This changes
the sizes of the gym observation. - officially drop python 3.6 supports (which could not benefit from all the features)
Fixed issues
- a bug preventing to use
backend.update_from_obs
when there are shunts on the grid forPandapowerBackend
- a bug in the gym action space: see issue #281
- a bug in the gym box action space: see issue #283
- a bug when using
MultifolderWithCache
andRunner
(see issue #285) - a bug in the
env.train_val_split_random
where sometimes some wrong chronics
name were sampled. - the
max
value of the observation space is now 1.3 * pmax to account for the slack bus (it was
1.01 of pmax before and was not sufficient in some cases) - a proper exception is added to the "except" kwargs of the "info" return argument of
env.step(...)
(previously it was only a string) when redispatching was illegal. - a bug in
env.train_val_split_random
when some non chronics files where present in the
"chronics" folder of the environment. - an error in the redispatching: in some cases, the environment detected that the redispatching was infeasible when it
was not and in some others it did not detect when it while it was infeasible. This was mainly the case
when curtailment and storage units were heavily modified. - now possible to create an environment with the
FromNPY
chronixcs even if the "chronics" folder is absent. - a bug preventing to converte observation as networkx graph with oldest version of numpy and newest version of scipy.
- a bug when using
max_iter
andRunner
in case of max_iter being larger than the number of steps in the
environment andnb_episode
>= 2. - a bug in the hashing of environment in case of storage units (the characteristics of the storage units
were not taken into account in the hash). - a bug in the
obs.as_dict()
method. - a bug in when using the "env.generate_classe()" #310
- another bug in when using the "env.generate_classe()" on windows #311
New features
- a function
normalize_attr
allowing to easily scale some data for the
BoxGymObsSpace
andBoxGymActSpace
- support for distributed slack in pandapower (if supported)
- an attribute
self.infos
for the BaseEnv that contains the "info" return value ofenv.step(...)
- the possibility to shuffle the chronics of a
GymEnv
(the default behavior is now to shuffle them) - two attribtues for the observation:
obs.gen_margin_up
andobs.gen_margin_down
- support for hashing chronix2grid related components.
- possibility to change the type of the opponent space type from the
make(...)
command - a method to "limit the curtailment / storage" action depending on the availability of controllable generators
(seeact.limit_curtail_storage(...)
) - a class to generate data "on the fly" using chronix2grid (for now really slow and only available for
a single environment) - a first version (for testing only) for the
l2rpn_wcci_2022
environment. - a method to compute the "simple" line reconnection actions (adding 2 actions per lines instead of 5)
in the action space (seeact_space.get_all_unitary_line_set_simple()
)
Improvements
- better difference between
env_path
andgrid_path
in environments. - addition of a flag to control whether pandapower can use lightsim2grid (to solve the powerflows) or not
- clean the warnings issued by pandas when used with pandapower
- doc of observation module (some attributes were missing)
- add support for setting the maximum number of iteration in the
PandaPowerBackend
- when the curtailment / storage is too "strong" at a given step, the environment will now allow
every controllable turned-on generators to mitigate it. This should increase the possibility to act on the
curtailment and storage units without "breaking" the environment. - have dedicated type of actions / observation for L2RPN competition environments,
defined in the "conf.py" file (to make possible the use of different
grid2op version transparently) - on some cases, the routine used to compute the redispatching would lead to a "redispatch" that would
change even if you don't apply any, for no obvious reasons. This has been addressed, though it's not perfect. - finer resolution when measuring execution times