MADDPG-建立自己的游戏环境(simple_world_comm场景)

simple_world_comm场景

simple_world_comm环境,大小为(-1,1)的二维平面,包含四种类型的实体(森林(forests),食物(food),地标(landmark),智能体(adversaries和good-agent)),1个地标(landma,黑色),2个森林(forests,大的绿色),2个食物(food,蓝色),6个智能体,4个捕食者(adversaries,粉红色),2个猎物(good_agent,小的绿色)。

各类实体的属性

  • 捕食者:刚体,可移动,最大速度默认为1,加速度为3,阻尼速度为0.25,其中有一个领导者(颜色相较更深);
  • 猎物:刚体,可移动,最大速度默认为1.3,加速度为4,阻尼速度为0.25;
  • 食物:刚体,不可移动;
  • 森林:非刚体,不可移动;
  • 地标:刚体,不可移动;

任务

  • 捕食者:阻拦猎物靠近食物(捕食者之间相互合作)
  • 猎物:在捕食者的围捕下,依靠森林和障碍物,力求靠近食物
  • 森林:智能体一旦进入森林(包括adversaries和good-agent),敌方则无法获得森林内的智能体位置坐标,除非智能体位于同一片森林中;
  • 地标:障碍物

奖励

捕食者:4个,相互合作,通过阻碍猎物靠近食物获取奖励,速度比猎物慢,数量比猎物多
猎物:2个,在捕食者的阻碍下,依靠环境靠近食物,速度快,数量少。

观测

捕食者:自身速度(二维,x和y两个方向);
自身位置(二维,x和y两个方向);
所有实体与自己的相对位置(实体位置-自身位置,20维,地标(10),智能体(10))
猎物的速度(4)
自身是否处于森林中(2,False True)
交流信息(4,)
猎物:自身速度(二维,x和y两个方向);
自身位置(二维,x和y两个方向);
所有实体与自己的相对位置(实体位置-自身位置,20维,地标(10),智能体(10))
捕食者速度(2)
自身是否处于森林中(2,False True)

        if agent.adversary and not agent.leader:#如果是非领导捕食者(34维向量)
            return np.concatenate([agent.state.p_vel] + [agent.state.p_pos] + entity_pos + other_pos + other_vel + in_forest + comm)
        if agent.leader:#如果是领导捕食者(34维向量)
            return np.concatenate(
                [agent.state.p_vel] + [agent.state.p_pos] + entity_pos + other_pos + other_vel + in_forest + comm)
        else:#如果是猎物(28维向量,猎物之间少了交流信息)
            return np.concatenate([agent.state.p_vel] + [agent.state.p_pos] + entity_pos + other_pos + in_forest + other_vel)

关于状态空间的一些Q

Q1:为什么需要leader?
leader角色,把它上一轮的交流信息放到本轮的每个捕食者中,这样捕食者之间有一个信息交流的功能。

动作

领导捕食者:MulitiDiscrete,19维向量,主要为15智能体的移动信息(action_u和action_p表示)和14的交流信息(action_c)。第一位无操作,2-5给定智能体x,y方向上的加速度;
非领导捕食者:Discrete(5),1
9维的向量,第一位无操作,2-5位给定智能体x,y方向上的加速度。

MADDPG-建立自己的游戏环境(simple_world_comm场景)_第1张图片

MADDPG-建立自己的游戏环境(simple_world_comm场景)_第2张图片

你可能感兴趣的:(技能学习中,强化学习,python)