Source code for grid2op.Agent.mlAgent

# 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.Converter import ToVect
from grid2op.Agent.agentWithConverter import AgentWithConverter


[docs]class MLAgent(AgentWithConverter): """ This agent allows to handle only vectors. The "my_act" function will return "do nothing" action (so it needs to be override) In this class, the "my_act" is expected to return a vector that can be directly converted into a valid action. """ def __init__(self, action_space, action_space_converter=ToVect, **kwargs_converter): AgentWithConverter.__init__( self, action_space, action_space_converter, **kwargs_converter ) self.do_nothing_vect = action_space({}).to_vect()
[docs] def my_act(self, transformed_observation, reward, done=False): """ By default this agent returns only the "do nothing" action, unless some smarter implementations are provided for this function. Parameters ---------- transformed_observation: ``numpy.ndarray``, dtype=float The observation transformed into a 1d numpy array of float. All components of the observation are kept. reward: ``float`` Reward of the previous action done: ``bool`` Whether the episode is over or not. Returns ------- res: ``numpy.ndarray``, dtype=float The action taken represented as a vector. """ return self.do_nothing_vect
[docs] def convert_from_vect(self, act): """ Helper to convert an action, represented as a numpy array as an :class:`grid2op.BaseAction` instance. Parameters ---------- act: ``numppy.ndarray`` An action cast as an :class:`grid2op.BaseAction.BaseAction` instance. Returns ------- res: :class:`grid2op.Action.Action` The `act` parameters converted into a proper :class:`grid2op.BaseAction.BaseAction` object. """ res = self.action_space({}) res.from_vect(act) return res