# Copyright (c) 2019-2020, RTE (https://www.rte-france.com)
# See AUTHORS.txt
# This Source Code Form is subject to the terms of the Mozilla Public License, version 2.0.
# If a copy of the Mozilla Public License, version 2.0 was not distributed with this file,
# you can obtain one at http://mozilla.org/MPL/2.0/.
# SPDX-License-Identifier: MPL-2.0
# This file is part of Grid2Op, Grid2Op a testbed platform to model sequential decision making in power systems.
from grid2op.Exceptions.grid2OpException import Grid2OpException
# ambiguous action
[docs]class AmbiguousAction(Grid2OpException):
"""
This exception indicate that the :class:`grid2op.BaseAction` is ambiguous.
It could be understood differently according
to the backend used.
Such a kind of action are forbidden in this package. These kind of exception are mainly thrown by the
:class:`grid2op.BaseAction.BaseAction` in
the :func:`grid2op.BaseAction.update` and :func:`grid2op.BaseAction.__call__` methods.
As opposed to a :class:`IllegalAction` an :class:`AmbiguousAction` is forbidden for all the backend,
in all the scenarios.
It doesn't depend on the implemented rules.
"""
pass
[docs]class InvalidLineStatus(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that the
:class:`grid2op.BaseAction.BaseAction` is ambiguous due to powerlines manipulation.
"""
pass
[docs]class InvalidStorage(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that the
:class:`grid2op.BaseAction.BaseAction` is ambiguous due to storage unit manipulation.
"""
pass
[docs]class UnrecognizedAction(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that the
:class:`grid2op.BaseAction.BaseAction` is ambiguous due to the bad formatting of the action.
"""
pass
[docs]class InvalidNumberOfLoads(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that
the :class:`grid2op.BaseAction.BaseAction` is ambiguous because an incorrect number of loads tries to be modified.
"""
pass
[docs]class InvalidNumberOfGenerators(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that
the :class:`grid2op.BaseAction.BaseAction`
is ambiguous because an incorrect number of generator tries to be modified.
"""
pass
[docs]class InvalidNumberOfLines(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that
the :class:`grid2op.BaseAction.BaseAction`
is ambiguous because an incorrect number of lines tries to be modified.
"""
pass
[docs]class InvalidNumberOfObjectEnds(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that
the :class:`grid2op.BaseAction.BaseAction`
is ambiguous because an incorrect number of object at a substation try to be modified.
"""
pass
[docs]class InvalidBusStatus(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that
the :class:`grid2op.BaseAction.BaseAction`
try to both "set" and "switch" some bus to which an object is connected.
"""
pass
[docs]class InvalidRedispatching(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that
the :class:`grid2op.BaseAction.BaseAction`
try to apply an invalid redispatching strategy.
"""
pass
[docs]class InvalidCurtailment(AmbiguousAction):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that
the :class:`grid2op.BaseAction.BaseAction`
try to apply an invalid curtailment strategy.
"""
pass
[docs]class GeneratorTurnedOnTooSoon(InvalidRedispatching):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that a generator has been turned on
before gen_min_up_time time steps.
"""
pass
[docs]class GeneratorTurnedOffTooSoon(InvalidRedispatching):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that a generator has been turned off
before gen_min_down_time time steps.
"""
pass
[docs]class NotEnoughGenerators(InvalidRedispatching):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that there is not enough turned off
generators to meet the demand.
"""
pass
[docs]class NonFiniteElement(InvalidRedispatching):
"""
This is a more precise exception than :class:`AmbiguousAction` indicating that an action / observation
non initialized (full of Nan)
has been loaded by the "from_vect" method.
"""
pass
[docs]class AmbiguousActionRaiseAlert(AmbiguousAction):
"""Raise if the type of action is ambiguous due to the 'raiseAlert' part"""
pass