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方向上的加速度。

在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
#DESCRIPTION:Resource namespaces pidns01 pidns01 pidns02 pidns02 pidns03 pidns03 pidns04 pidns04 pidns05 pidns05 pidns06 pidns06 pidns10 pidns10 pidns12 pidns12 pidns13 pidns13 pidns16 pidns16 pidns17 pidns17 pidns20 pidns20 pidns30 pidns30 pidns31 pidns31 pidns32 pidns32 mqns_01 mqns_01 mqns_01_clone mqns_01 -m clone mqns_01_unshare mqns_01 -m unshare mqns_02 mqns_02 mqns_02_clone mqns_02 -m clone mqns_02_unshare mqns_02 -m unshare mqns_03 mqns_03 mqns_03_clone mqns_03 -clone mqns_04 mqns_04 mqns_04_clone mqns_04 -clone netns_netlink netns_netlink netns_breakns_ip_ipv4_netlink netns_breakns.sh netns_breakns_ip_ipv6_netlink netns_breakns.sh -6 netns_breakns_ip_ipv4_ioctl netns_breakns.sh -I netns_breakns_ip_ipv6_ioctl netns_breakns.sh -6I netns_breakns_ns_exec_ipv4_netlink netns_breakns.sh -e netns_breakns_ns_exec_ipv6_netlink netns_breakns.sh -6e netns_breakns_ns_exec_ipv4_ioctl netns_breakns.sh -eI netns_breakns_ns_exec_ipv6_ioctl netns_breakns.sh -6eI netns_comm_ip_ipv4_netlink netns_comm.sh netns_comm_ip_ipv6_netlink netns_comm.sh -6 netns_comm_ip_ipv4_ioctl netns_comm.sh -I netns_comm_ip_ipv6_ioctl netns_comm.sh -6I netns_comm_ns_exec_ipv4_netlink netns_comm.sh -e netns_comm_ns_exec_ipv6_netlink netns_comm.sh -6e netns_comm_ns_exec_ipv4_ioctl netns_comm.sh -eI netns_comm_ns_exec_ipv6_ioctl netns_comm.sh -6eI netns_sysfs netns_sysfs.sh shmnstest_none shmnstest -m none shmnstest_clone shmnstest -m clone shmnstest_unshare shmnstest -m unshare shmem_2nstest_none shmem_2nstest -m none shmem_2nstest_clone shmem_2nstest -m clone shmem_2nstest_unshare shmem_2nstest -m unshare shm_comm shm_comm mesgq_nstest_none mesgq_nstest -m none mesgq_nstest_clone mesgq_nstest -m clone mesgq_nstest_unshare mesgq_nstest -m unshare msg_comm msg_comm sem_nstest_none sem_nstest -m none sem_nstest_clone sem_nstest -m clone sem_nstest_unshare sem_nstest -m unshare semtest_2ns_none semtest_2ns -m none semtest_2ns_clone semtest_2ns -m clone semtest_2ns_unshare semtest_2ns -m unshare sem_comm sem_comm utsname01 utsname01 utsname02 utsname02 utsname03_clone utsname03 -m clone utsname03_unshare utsname03 -m unshare utsname04_clone utsname04 -m clone utsname04_unshare utsname04 -m unshare mountns01 mountns01 mountns02 mountns02 mountns03 mountns03 mountns04 mountns04 userns01 userns01 userns02 userns02 userns03 userns03 userns04 userns04 userns05 userns05 userns06 userns06 userns07 userns07 userns08 userns08 # time namespaces sysinfo03 sysinfo03 clock_nanosleep03 clock_nanosleep03 clock_gettime03 clock_gettime03 timens01 timens01 timerfd04 timerfd04
最新发布
07-20
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值