# {py:mod}`evorl.algorithms.ppo` ```{py:module} evorl.algorithms.ppo ``` ```{autodoc2-docstring} evorl.algorithms.ppo :parser: autodoc2_docstrings_parser :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`PPOAgent ` - * - {py:obj}`PPONetworkParams ` - ```{autodoc2-docstring} evorl.algorithms.ppo.PPONetworkParams :parser: autodoc2_docstrings_parser :summary: ``` * - {py:obj}`PPOWorkflow ` - ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`make_mlp_ppo_agent ` - ```{autodoc2-docstring} evorl.algorithms.ppo.make_mlp_ppo_agent :parser: autodoc2_docstrings_parser :summary: ``` ```` ### API `````{py:class} PPOAgent :canonical: evorl.algorithms.ppo.PPOAgent Bases: {py:obj}`evorl.agent.Agent` ````{py:attribute} clip_epsilon :canonical: evorl.algorithms.ppo.PPOAgent.clip_epsilon :type: float :value: > 0.2 ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.clip_epsilon :parser: autodoc2_docstrings_parser ``` ```` ````{py:method} compute_actions(agent_state: evorl.agent.AgentState, sample_batch: evorl.sample_batch.SampleBatch, key: chex.PRNGKey) -> tuple[evorl.types.Action, evorl.types.PolicyExtraInfo] :canonical: evorl.algorithms.ppo.PPOAgent.compute_actions ```` ````{py:method} compute_values(agent_state: evorl.agent.AgentState, sample_batch: evorl.sample_batch.SampleBatch) -> chex.Array :canonical: evorl.algorithms.ppo.PPOAgent.compute_values ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.compute_values :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} continuous_action :canonical: evorl.algorithms.ppo.PPOAgent.continuous_action :type: bool :value: > None ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.continuous_action :parser: autodoc2_docstrings_parser ``` ```` ````{py:method} evaluate_actions(agent_state: evorl.agent.AgentState, sample_batch: evorl.sample_batch.SampleBatch, key: chex.PRNGKey) -> tuple[evorl.types.Action, evorl.types.PolicyExtraInfo] :canonical: evorl.algorithms.ppo.PPOAgent.evaluate_actions ```` ````{py:method} init(obs_space: evorl.envs.Space, action_space: evorl.envs.Space, key: chex.PRNGKey) -> evorl.agent.AgentState :canonical: evorl.algorithms.ppo.PPOAgent.init ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.init :parser: autodoc2_docstrings_parser ``` ```` ````{py:method} loss(agent_state: evorl.agent.AgentState, sample_batch: evorl.sample_batch.SampleBatch, key: chex.PRNGKey) -> evorl.types.LossDict :canonical: evorl.algorithms.ppo.PPOAgent.loss ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.loss :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} normalize_gae :canonical: evorl.algorithms.ppo.PPOAgent.normalize_gae :type: bool :value: > True ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.normalize_gae :parser: autodoc2_docstrings_parser ``` ```` ````{py:property} normalize_obs :canonical: evorl.algorithms.ppo.PPOAgent.normalize_obs ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.normalize_obs :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} obs_preprocessor :canonical: evorl.algorithms.ppo.PPOAgent.obs_preprocessor :type: typing.Any :value: > 'pytree_field(...)' ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.obs_preprocessor :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} policy_network :canonical: evorl.algorithms.ppo.PPOAgent.policy_network :type: flax.linen.Module :value: > None ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.policy_network :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} policy_obs_key :canonical: evorl.algorithms.ppo.PPOAgent.policy_obs_key :type: str :value: ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.policy_obs_key :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} value_network :canonical: evorl.algorithms.ppo.PPOAgent.value_network :type: flax.linen.Module :value: > None ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.value_network :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} value_obs_key :canonical: evorl.algorithms.ppo.PPOAgent.value_obs_key :type: str :value: ```{autodoc2-docstring} evorl.algorithms.ppo.PPOAgent.value_obs_key :parser: autodoc2_docstrings_parser ``` ```` ````` `````{py:class} PPONetworkParams :canonical: evorl.algorithms.ppo.PPONetworkParams Bases: {py:obj}`evorl.types.PyTreeData` ```{autodoc2-docstring} evorl.algorithms.ppo.PPONetworkParams :parser: autodoc2_docstrings_parser ``` ````{py:attribute} policy_params :canonical: evorl.algorithms.ppo.PPONetworkParams.policy_params :type: evorl.types.Params :value: > None ```{autodoc2-docstring} evorl.algorithms.ppo.PPONetworkParams.policy_params :parser: autodoc2_docstrings_parser ``` ```` ````{py:attribute} value_params :canonical: evorl.algorithms.ppo.PPONetworkParams.value_params :type: evorl.types.Params :value: > None ```{autodoc2-docstring} evorl.algorithms.ppo.PPONetworkParams.value_params :parser: autodoc2_docstrings_parser ``` ```` ````` `````{py:class} PPOWorkflow(env: evorl.envs.Env, agent: evorl.agent.Agent, optimizer: optax.GradientTransformation, evaluator: evorl.evaluators.Evaluator, config: omegaconf.DictConfig) :canonical: evorl.algorithms.ppo.PPOWorkflow Bases: {py:obj}`evorl.workflows.OnPolicyWorkflow` ````{py:method} learn(state: evorl.types.State) -> evorl.types.State :canonical: evorl.algorithms.ppo.PPOWorkflow.learn ```` ````{py:method} name() :canonical: evorl.algorithms.ppo.PPOWorkflow.name :classmethod: ```` ````{py:method} step(state: evorl.types.State) -> tuple[evorl.metrics.MetricBase, evorl.types.State] :canonical: evorl.algorithms.ppo.PPOWorkflow.step ```` ````` ````{py:function} make_mlp_ppo_agent(action_space: evorl.envs.Space, clip_epsilon: float = 0.2, actor_hidden_layer_sizes: tuple[int] = (256, 256), critic_hidden_layer_sizes: tuple[int] = (256, 256), normalize_obs: bool = False, normalize_gae: bool = False, policy_obs_key: str = '', value_obs_key: str = '') :canonical: evorl.algorithms.ppo.make_mlp_ppo_agent ```{autodoc2-docstring} evorl.algorithms.ppo.make_mlp_ppo_agent :parser: autodoc2_docstrings_parser ``` ````