为了账号安全,请及时绑定邮箱和手机立即绑定

多代理健身房环境中的随机代理

多代理健身房环境中的随机代理

慕婉清6462132 2021-08-17 18:35:37
我无法为多智能体健身房环境选择随机动作。def make_env(scenario_name, benchmark=False):    from multiagent.environment import MultiAgentEnv    import multiagent.scenarios as scenarios    # load scenario from script    scenario = scenarios.load(scenario_name + ".py").Scenario()    # create world    world = scenario.make_world()    # create multiagent environment    if benchmark:                env = MultiAgentEnv(world, scenario.reset_world, scenario.reward, scenario.observation, scenario.benchmark_data)    else:        env = MultiAgentEnv(world, scenario.reset_world, scenario.reward, scenario.observation)    return envenv = make_env('simple_tag')env.reset()for i in range(100):    env.render()    actions = [action_space.sample() for action_space in env.action_space]    env.step(actions)上面的代码抛出这个错误:Traceback (most recent call last):  File "hello.py", line 22, in <module>    env.step(actions)  File "c:\multiagent-particle-envs\multiagent\environment.py", line 88, in step    self._set_action(action_n[i], agent, self.action_space[i])  File "c:\multiagent-particle-envs\multiagent\environment.py", line 174, in _set_action    agent.action.u[0] += action[0][1] - action[0][2]TypeError: 'int' object is not subscriptable我找不到解决办法,因为关于这些多代理环境的讨论还不够多。
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

回答我自己的问题,让我们考虑 simple_tag 环境。

env.action_space 对于这种环境给出:

[Discrete(5), Discrete(5), Discrete(5), Discrete(5)] (4 个代理)

这是我发现的误导。我认为这些动作必须是一个包含 4 个元素的列表,例如:[0, 3, 4, 1]但它期望的是所有 4 个代理的单热向量(5 个元素)。因此,对动作进行编码的正确方法是:

[array([1., 0., 0., 0., 0.]), array([0., 0., 1., 0., 0.]), array([0., 0., 0., 0., 1.]),  array([0., 0., 0., 1., 0.])]

(视环境而定)


查看完整回答
反对 回复 2021-08-17
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信