# Ray actor error: env.observation\_space.contains(dummy\_obs)

**URL:** <https://discuss.ray.io/t/ray-actor-error-env-observation-space-contains-dummy-obs/4091>\
**Category:** RLlib\
**Created:** [November 10, 2021, 4:06pm UTC](https://discuss.ray.io/t/ray-actor-error-env-observation-space-contains-dummy-obs/4091 "2021-11-10T16:06:14Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yinuo\_Du](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/yinuo_du/32/1709_2.png) [@Yinuo\_Du](https://discuss.ray.io/u/Yinuo_Du)\
**Post date:** [November 10, 2021, 4:06pm UTC](https://discuss.ray.io/t/ray-actor-error-env-observation-space-contains-dummy-obs/4091/1 "2021-11-10T16:06:14Z")

</div>

![Screen Shot 2021-11-10 at 11.03.20 AM](https://us1.discourse-cdn.com/flex020/uploads/ray/original/2X/0/05e715016b588d139ebb930b1184f4624979b648.png)

I got this error but unluckily can not trace back to my code. What can be the possible reasons for this failure? Thanks!

My observation space initialization is as follows:

```auto
def init_obs_space(self):
        observation_space_n = []
        for i in range(self.num_agents):
            lb = np.zeros(self.num_vertices * 2)
            ub = np.concatenate((
                np.ones(self.num_vertices), 
                np.full(self.num_vertices, self.num_bins)
            ))
            if i >= self.num_adversaries:
                lb = np.concatenate((
                    lb, np.zeros(self.num_vertices + 1)
                ))
                ub = np.concatenate((
                    ub, np.full(self.num_vertices, self.num_bins)
                ))
                ub = np.concatenate((
                    ub, np.full(1, self.def_budget)
                ))
            observation_space_n.append(
                spaces.Box(lb, ub) # TODO: update this to be upper bounded by the number of adversaries
            )            
        return observation_space_n

```

---

<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:** [November 11, 2021, 12:32am UTC](https://discuss.ray.io/t/ray-actor-error-env-observation-space-contains-dummy-obs/4091/2 "2021-11-11T00:32:27Z")

</div>

Hi @Yinuo_Du,

It is because you are not returning a gym space. You are returning a list but you need to return a gym space type.

---

<div class="post-metadata">

**Author:** ![Yinuo\_Du](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/yinuo_du/32/1709_2.png) [@Yinuo\_Du](https://discuss.ray.io/u/Yinuo_Du)\
**Post date:** [November 11, 2021, 12:53am UTC](https://discuss.ray.io/t/ray-actor-error-env-observation-space-contains-dummy-obs/4091/3 "2021-11-11T00:53:47Z")

</div>

Thanks! But that’s necessary for me since I need a multi-agent environment. The goal is to have one observation space for each agent. How else should I do this in RLlib? Any suggestions would be helpful.

---

<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:** [November 11, 2021, 1:24am UTC](https://discuss.ray.io/t/ray-actor-error-env-observation-space-contains-dummy-obs/4091/4 "2021-11-11T01:24:12Z")

</div>

You should use the Dict gym space.

---

<div class="post-metadata">

**Author:** ![Roller44](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/roller44/32/1064_2.png) [@Roller44](https://discuss.ray.io/u/Roller44)\
**Post date:** [November 11, 2021, 4:29am UTC](https://discuss.ray.io/t/ray-actor-error-env-observation-space-contains-dummy-obs/4091/5 "2021-11-11T04:29:16Z")

</div>

> <https://github.com/ray-project/ray/blob/master/rllib/env/multi_agent_env.py>

This example might be helpful to you.
