# Error using compute\_single\_action

**URL:** https://discuss.ray.io/t/error-using-compute-single-action/10093
**Category:** RLlib
**Created:** [April 5, 2023, 10:21pm UTC](https://discuss.ray.io/t/error-using-compute-single-action/10093 "2023-04-05T22:21:56Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Prannoy\_Namala](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/prannoy_namala/32/4187_2.png) [@Prannoy\_Namala](https://discuss.ray.io/u/Prannoy_Namala)
#### Post date: [April 5, 2023, 10:21pm UTC](https://discuss.ray.io/t/error-using-compute-single-action/10093/1 "2023-04-05T22:21:56Z")

</div>

Hello,

I am trying to train a Multi-Agent DQN model, save the checkpoint and then use the model to perform a single action.

```auto
   # Custom Environment
    meta_environment = MultiMetaEnv(env,action_sample_n,bonus_reward=True)
    ray.init()
    register_env("meta_environment", lambda config: MultiMetaEnv(config['env'], config['action_sample_n'], config["bonus_reward"]))

    # Define your policies
    def policy_mapping_fn(agent_id, episode, worker, **kwargs):
        if agent_id == "0":
            return "policy0"
        if agent_id == "1":
            return "policy1"
        if agent_id == "2":
            return "policy2"
    # Defining Config
    multi_agent_config = DQNConfig()
    multi_agent_config = multi_agent_config.environment("meta_environment", env_config={'env':env, 'action_sample_n':action_sample_n, 'bonus_reward':False})
    multi_agent_config = multi_agent_config.multi_agent(
                                policies={
                            "policy0": (None, meta_environment.observation_space, meta_environment.action_space, {}),
                            "policy1": (None, meta_environment.observation_space, meta_environment.action_space, {}),
                            "policy2": (None, meta_environment.observation_space, meta_environment.action_space, {}),},
                                policy_mapping_fn=policy_mapping_fn)
    multi_agent_config = multi_agent_config.framework("tf2")

    # Trainable
    algo = multi_agent_config.build()

    for _ in range(1):
        algo.train()

    checkpoint_dir = algo.save()

    print("Checkpoint Directory, ", checkpoint_dir)

    obs = meta_environment.reset()

    print(algo.compute_single_action(obs))

```

The error is as follows:

```auto
Traceback (most recent call last):
  File "C:\Users\pnamala\Desktop\Project_3_6_2\MADDPG\experiments\meta_learn_with_rllib.py", line 710, in <module>
    learn(args)
  File "C:\Users\pnamala\Desktop\Project_3_6_2\MADDPG\experiments\meta_learn_with_rllib.py", line 695, in learn
    print(algo.compute_single_action(obs))
  File "C:\Users\pnamala\Anaconda3\envs\rllib\lib\site-packages\ray\rllib\algorithms\algorithm.py", line 1472, in compute_single_action
    raise KeyError(
KeyError: "PolicyID 'default_policy' not found in PolicyMap of the Trainer's local worker!"
Finished...

```

**How severe does this issue affect your experience of using Ray?**

- High: It blocks me from completing my task.

---

<div class="post-metadata">

### Author: ![Username1](https://avatars.discourse-cdn.com/v4/letter/u/ee59a6/32.png) [@Username1](https://discuss.ray.io/u/Username1)
#### Post date: [April 25, 2023, 1:29pm UTC](https://discuss.ray.io/t/error-using-compute-single-action/10093/2 "2023-04-25T13:29:52Z")

</div>

You need to pass the “policy\_id” as an argument to the method “compute single policy”. Or the policy mapping function. Otherwise, it resorts to using the ‘default\_policy’ but since it cannot find it, it is throwing you an error.

By the way, I prefer this equivalent method that takes dictionaries as inputs. But the logic is the same, in multi-policy settings, one need to specify the policy.

> agent = agent\_id  
> action\_dict = algo.compute\_actions(obs\_dict,policy\_id=f"pol{agent}")
