def __init__(self,
                 agent_class,
                 learner_class,
                 replay_class,
                 session_config,
                 env_config,
                 learner_config,
                 eval_mode='eval_stochastic',
                 agent_batch_size=8,
                 eval_batch_size=8,
                 render=False):
        """
        Setup an surreal experiment

        Args:
            agent_class: The Agent subclass to run for agents
            learner_class: The Agent subclass to run for evals
            replay_class: The Replay subclass to run for replays
            session_config: configs passed to all components
            env_config: configs passed to all components
            learner_config: configs passed to all components
            eval_mode: whether evals should be deterministic or
                stochastic. 'eval_deterministic'/'eval_stochastic'
                (default: {'eval_stochastic'})
            agent_batch_size: When running batch_agent,
                how many agents to fork. (default: {8})
            eval_batch_size: When running batch_agent,
                how many evals to fork. (default: {8})
            render: Whether evals should render (default: {False})
        """
        self.agent_class = agent_class
        self.learner_class = learner_class
        self.replay_class = replay_class
        self.session_config = session_config
        self.env_config = env_config
        self.learner_config = learner_config

        self.eval_mode = eval_mode
        self.render = render
        self.agent_batch_size = agent_batch_size
        self.eval_batch_size = eval_batch_size

        Setup an surreal experiment

        Args:
            agent_class: The Agent subclass to run for agents
            learner_class: The Agent subclass to run for evals
            replay_class: The Replay subclass to run for replays
            session_config: configs passed to all components
            env_config: configs passed to all components
            learner_config: configs passed to all components
            eval_mode: whether evals should be deterministic or
                stochastic. 'eval_deterministic'/'eval_stochastic'
                (default: {'eval_stochastic'})
            agent_batch_size: When running batch_agent,
                how many agents to fork. (default: {8})
            eval_batch_size: When running batch_agent,
                how many evals to fork. (default: {8})
            render: Whether evals should render (default: {False})
        
surreal/launch/launcher.py