queens.models.reinforcement_learning.utils package#
Utils.
Utility functionality related to the reinforcement learning libraries stable-baselines3 and gymnasium.
Submodules#
queens.models.reinforcement_learning.utils.gymnasium module#
Utility functions for working with gymnasium environments.
This module essentially provides a function to create a gymnasium environment from its name to facilitate the creation of gymnasium environments in QUEENS for users who are not familiar with the package.
- create_gym_environment(env_name, env_options=None, seed=None)[source]#
Convenience function to create a gymnasium environment.
- Parameters:
env_name (str) – Name of the gymnasium environment to create.
env_options (dict, optional) – Dictionary of options to pass to the environment.
seed (int, optional) – Seed to use for the environment.
- Returns:
env (gymnasium.Env) – An instance of the created gymnasium environment.
- Raises:
InvalidOptionError – If the provided environment name is not known to gymnasium.
queens.models.reinforcement_learning.utils.stable_baselines3 module#
Utiltiy functions for working with stable-baselines3 agents.
This module provides utility functions for working with stable- baselines3 agents in QUEENS. The idea is to enable a QUEENS user who is not familiar with the stable-baselines3 reinforcement learning library but wants to try out RL for their problem to easily create and use a reinforcement learning agent in QUEENS without first studying the package. If you are familiar with stable-baselines3, you can as well create the agents yourself.
- create_sb3_agent(agent_name, policy_name, env, agent_options=None)[source]#
Creates a stable-baselines3 agent based on its name as string.
Looks up whether the provided agent name corresponds to an agent supported by stable-baselines3 and creates an instance of the agent with the provided policy and environment. Options for modifying the agent’s optional parameters can be provided as a dictionary.
- Parameters:
agent_name (str) – The name of the agent to create.
policy_name (str) – The name of the policy to use with the agent.
env (gymnasium.Env) – The environment to train the agent on. For a convenience function to create a predefined gymnasium environment, see
queens.models.reinforcement_learning.utils.gymnasium.create_gym_environment()
.agent_options (dict, optional) – A dictionary of optional parameters to pass to the agent.
- Returns:
agent (stable_baselines3.BaseAlgorithm) – An instance of the created agent.
- Raises:
ValueError – If the provided agent name is not supported by stable-baselines3
InvalidOptionError – If the provided agent name is not known to stable-baselines3 or the provided policy name is not supported by the chosen agent class.
- get_supported_sb3_policies(agent_class)[source]#
Looks up the supported policies for a stable-baselines3 agent class.
- Parameters:
agent_class (class) – A stable-baselines3 agent class.
- Returns:
list – A list of strings representing the supported policies for the given agent class.
- Raises:
ValueError – If the provided class is not a stable-baselines3 agent class or does not provide a
policy_aliases
attribute.
- load_model(agent_name, path, experiment_name, env=None)[source]#
Convenience function for loading a stable-baselines3 agent from file.
Checks whether the agent is of an off-policy type and if so loads its replay buffer as well. The latter is required if a continuation of the training is desired.
- Parameters:
agent_name (str) – The name of the agent to load.
path (str, Path) – The path to the directory containing the agent to load.
experiment_name (str) – The name of the QUEENS experiment that was used to train the agent (contained in the filename).
env (gymnasium.Env, optional) – The environment on which the agent was trained.
- Returns:
agent (stable_baselines3.BaseAlgorithm) – The loaded agent.
- make_deterministic(seed, disable_gpu=True)[source]#
Make the random number generation deterministic for an agent training.
This is achieved by setting the random seed for all python libraries that are involved in training and stable-baselines3 agent.
Note
This function should be called before creating the agent. Make sure to also pass a seed to the agent and the environment.
For the environment, you wanna invoke the
reset()
method after creation and pass the seed as parameter, e.g.,env.reset(seed=seed)
. This needs to be done before passing the environment to the agent.For the agent, this can be achieved by adding the entry
"seed": seed,
to theagent_options
dict.
Warning
Since GPU computations can result in non-deterministic computations, this functions modifies the
CUDA_VISIBLE_DEVICES
environment variable to disable GPU computations. This behavior can be changed by adapting thedisable_gpu
parameter.- Parameters:
seed (int) – The random seed to set for all libraries.
disable_gpu (bool, optional) – Flag indicating whether to disable GPU computations. Defaults to True.
- save_model(agent, gs)[source]#
Save a (trained) stable-baselines3 agent to a file.
Checks whether the agent is of an off-policy type and if so stores its replay buffer as well. The latter is required if a continuation of the training is desired.
- Parameters:
agent (stable_baselines3.BaseAlgorithm) – The trained agent to save.
gs (GlobalSettings) – The global settings of the QUEENS experiment (needed to retrieve the experiment name and the output directory of the current run).