Source code for cntk.contrib.deeprl.agent.agent_factory

# Copyright (c) Microsoft. All rights reserved.

# Licensed under the MIT license. See LICENSE.md file in the project root
# for full license information.
# ==============================================================================
"""Factory method to create an agent."""

import configparser

from .policy_gradient import ActorCritic
from .qlearning import QLearning
from .random_agent import RandomAgent
from .tabular_qlearning import TabularQLearning


[docs]def make_agent(agent_config, o_space, a_space): """ Choose appropriate method to create an agent. Args: agent_config: configure file specifying the agent type as well as training details. o_space: observation space, gym.spaces.tuple_space.Tuple is not supported. a_space: action space, limits to gym.spaces.discrete.Discrete. Returns: subclass inherited from :class:`.agent.AgentBaseClass`: QLearning, ActorCritic, TabularQLearning, or RandomAgent. """ config = configparser.ConfigParser() config.read(agent_config) agent_type = config.get( 'General', 'Agent', fallback='random').lower() agent = None if agent_type == 'qlearning': agent = QLearning(agent_config, o_space, a_space) elif agent_type == 'actor_critic': agent = ActorCritic(agent_config, o_space, a_space) elif agent_type == 'tabular_qlearning': agent = TabularQLearning(agent_config, o_space, a_space) elif agent_type == 'random': agent = RandomAgent(o_space, a_space) return agent