# Add custom policy to config on a non multi-agent setup

**URL:** <https://discuss.ray.io/t/add-custom-policy-to-config-on-a-non-multi-agent-setup/10897>\
**Category:** RLlib\
**Created:** [June 4, 2023, 11:41am UTC](https://discuss.ray.io/t/add-custom-policy-to-config-on-a-non-multi-agent-setup/10897 "2023-06-04T11:41:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jon\_Flynn](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/jon_flynn/32/4508_2.png) [@Jon\_Flynn](https://discuss.ray.io/u/Jon_Flynn)\
**Post date:** [June 4, 2023, 11:41am UTC](https://discuss.ray.io/t/add-custom-policy-to-config-on-a-non-multi-agent-setup/10897/1 "2023-06-04T11:41:23Z")

</div>

I’m wondering how to alter the default policy in the PPOConfig. I’m aware it can be set up like so for a multiagent environment:

```auto
def policy_map_fn(agent_id: str, _episode=None, _worker=None, **_kwargs) -> str:
    """
    Maps agent_id to policy_id
    """
    return 'policy'

algo = (
    ppo.PPOConfig()
    .environment(MyEnv)
    .multi_agent(
        policies={
            "policy": (
                CustomPolicy,
                observation_space,
                ActionSpace(),
                ppo.PPOConfig.overrides(gamma=0.9),
            ),
        },
        policy_mapping_fn=policy_map_fn,
    )
    .framework("torch")
    .build()
)

```

I can’t see anywhere in the API or documentation though how to use your own custom policy in a non multiagent setup?

---

<div class="post-metadata">

**Author:** ![mannyv](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/mannyv/32/606_2.png) [@mannyv](https://discuss.ray.io/u/mannyv)\
**Post date:** [June 4, 2023, 2:36pm UTC](https://discuss.ray.io/t/add-custom-policy-to-config-on-a-non-multi-agent-setup/10897/2 "2023-06-04T14:36:28Z")

</div>

> <https://github.com/ray-project/ray/blob/master/rllib/examples/custom_tf_policy.py>

---

<div class="post-metadata">

**Author:** ![Jon\_Flynn](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/jon_flynn/32/4508_2.png) [@Jon\_Flynn](https://discuss.ray.io/u/Jon_Flynn)\
**Post date:** [June 4, 2023, 6:23pm UTC](https://discuss.ray.io/t/add-custom-policy-to-config-on-a-non-multi-agent-setup/10897/3 "2023-06-04T18:23:23Z")

</div>

Thanks, I used this code to build my algorithm class:

```auto
class AlteredPPOAlgo(ppo.PPO):
    @classmethod
    def get_default_policy_class(cls, config):
        return CustomPolicy

config = (
    ppo.PPOConfig(AlteredPPOAlgo)
    .environment(MyEnv)
    .framework("torch")
)

config.model.update({
    "custom_model": "my_torch_model",
    "custom_action_dist": "my_dist",
})

algo = config.build()

```
