基于冲突的搜索算法

  • 基于冲突的搜索算法CBS
  • 并行的基于冲突的搜索算法PCBS
  • 增强基于冲突的搜索算法ECBS
  • 增强并行的基于冲突的搜索算法EPCBS

基于冲突的搜索算法CBS

算法思路:算法用于解决多Agent路径规划问题,框架总体上分为上层和下层
CBS上层搜索的是约束结点(CT Node),每个CT Node包含三个信息:
N.constraints:一个约束集,包含问题中对所有的Agent的约束,其中一个约束用用c=(a_i,s,t),表示任务ai在第t时刻不允许占用s元素,s可以是结点,也可以是边。
N.solution:问题的一个解,这个解可能不是有效的,一个解指的是计算出所有的Agent的路径,但是这些路径可能会存在冲突
N.cost:该结点解的代价,这个代价公式如下

CBS下层搜索则是单Agent搜索算法进行搜索。
CBS算法流程,即初始化上层的时候先计算出所有的Agent的解和其对应的总cost,令约束树为空,然后每一轮弹出约束树的cost最小的结点N,判断N中是否存在一个冲突,只需要找到一个即可,用(ai,aj,s,t)表示冲突,然后生成两个子结点N1,N2,并且都值传递继承N的内容,接着将冲突(ai,aj,s,t)分成约束结点(ai,s,t)和(aj,s,t),一个加入到N1约束树中,一个加入到N2约束树中,对于N1而言,ai的约束发生了变化,因此需要对ai进行重新规划,规划时需要在约束树下进行规划,最后更新ai的路径和cost值并插入到上层优先队列中Open中,接着对N2进行同样的操作,直到取出的N检测没有冲突时返回结点N即可。

并行的基于冲突的搜索算法PCBS

改进的前者缺点:由于每次取得的N都是cost最小的,忽略了其它结点发现解的可能性,它假设Open中每个结点的有效率为p,则每次展开一个结点每轮迭代找到解的概率为p,且找到解期望迭代次数E=1/p,同时,在对结点进行判断是否发生冲突,结点的分裂和重新路径规划都非常耗时,因此PCBS采用多进程的方式来加快搜索速度,由于每个结点是独立的,因此可采用多线程加快结点的展开速度。但由于是多线程,就破坏了结点绝对从最小cost先展开的特性,所以求出的是次优解。于是就有PCBS(n,w)用n个线程来求解多Agent路径规划问题,保证PCBS求出的解的代价和最优解的代价比值不超过w,w>=1;
那么为了做到近似最优,PCBS用一个表BE来登记正在被拓展的结点,当一个线程准备从Open中取出最小结点进行拓展时,取出的这个结点的cost必须要小于等于正在被拓展结点中最小cost的w倍,即N.cost≤w×cost_min否则不允许当前线程取结点进行拓展。

增强基于冲突的搜索算法ECBS

该算法主要改进了上下层的搜索算法,CBS算法在下层进行路径规划搜索时比较盲目,只需要找出一条满足当前的约束树的路径即可,这种盲目的搜索容易导致规划出的路径再次出现新的冲突,因此,ECBS在CBS的框架基础上对上下层进行了搜索改进,采用了聚焦搜索技术。
对于下层来说,拿A* 算法举例,A* 每次都是从open_list中取出代价最小的结点进行拓展,因此不能保证这个结点是否会发生新的冲突,采用聚焦搜索后,A* 则是每次取出一个更不容易发生冲突的结点进行拓展,这就大大减小了冲突频率,提高了搜索效率和减少算法空间占用。如何选择更不容易发生冲突的结点,EECBS采用聚焦搜索的A*算法,引入评价函数

在open_list中还是按照代价函数来排序,然后不断将open_list中代价f≤wf_min的结点加入到Foca_list中,f_min是open_list中代价最小值,, w是允许和最优解最大误差系数,但是Focal_list则是按照h ̂_F (s)升序排列,在进行结点拓展的时候,从Focal_list取出h ̂_F (s)最小的结点进行拓展。因为每次取出的结点代价都大于或等于f_min,所以确定了下层最优解的下界,与此同时上层的下界为

即所有的Agent的下界和
对于上层,同样使用聚焦搜索,类似的,引入一个评价函数
H ̂_F (s)=N.solution中发生冲突的元素的总数
将Open中代价cost≤wLB_min的结点加入到Focal中,LB_min表示Open中上层下界最小值,Focal按照H ̂_F (s)进行排序,每次取出H ̂_F (s)最小的结点进行拓展。

增强并行的基于冲突的搜索算法EPCBS

同样在ECBS基础上引入一个系数w,与PCBS类似,采用多线程来进行搜索,但由于采用了聚焦搜索,所以需要额外一个线程将将Open中的结点加入Focal中,这个线程的作用除了负责将代价符合条件的结点从Opne中加入Focal中之外,还负责在检测Agent之间冲突的时候进行随机检测,因此每次处理的冲突都不是按Agent的id和路径的顺序来检测的,增强随机性,满足了相互独立。

CBS,PCBS,ECBS,EPCBS相关推荐

  1. ubuntu8.04安装配置,现有问题集合,及解决方法

    1,分区 只有10G左右空间的就直接 swap & / 两个分区好了,省得最后有的挂载点空间不够,有的有太多. 如果你预留空间大于10G,在20G以内就要详细分区了. 本来在此之前似乎应了解一 ...

  2. 什么是裸金属云服务器,适用于哪些场景,又有哪些优势?

    裸金属云服务器简介 裸金属云服务器(Cloud Bare Metal,CBM)是一种兼具虚拟机弹性及物理机性能的裸金属云服务,与腾讯云全产品(例如网络.存储.数据库等)无缝融合,能为您提供云端独享的高 ...

  3. 天选三超频实战/适用于所有AMD笔记本的全面超频指南:CPU频率,功耗墙,Infinity Fabric总线(FCLK),内存时序,CPU电压,核显频率,核显电压......

    修订2022.10.24 CPU curve optimizer 设为negative17仍然可以稳定工作. 零:前言 1.是的你没看错,所有AMD锐龙处理器笔记本都能超频,台式机也能用,不管BIOS ...

  4. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符...

    目录 awk基本语法 awk输出某几列 awk遍历文件行处理 awk中运行shell命令 方法1:awk 内置函数system 方法2 通过awk  print 交给bash awk中运行shell命 ...

  5. Eginx配置(SSL,令牌登录认证,IP白名单,代理转发)

    一般需要对接银行的接口,都需要用前置机,在前置机上安装银行的客户端(CBS).我们接口调用的实际是前置机上的http服务. 为了数据安全,一般会把前置机的网络和服务器的网络处理成同一个内网,防止数据被 ...

  6. 图书管理系统1.0(当然是很简low的系统,没有华丽界面,但是很锻炼软件开发能力,只用到c++的面向对象知识)

    这个代码有很大的问题就是在继承这一方面做的不好,没有考虑继承的实际情况,实际上,如果写一个通归所有功能的大类,然后再让不同的对象去继承的话,存在一个问题,有的功能我实际生活中没法用也不应该用(比如普通 ...

  7. arp miss攻击_93交换机出现大量arp miss attack攻击,网关都不通,二层无法封装

    如下图所示,S9306连接用户,攻击者和用户分别处于两个不同的网段,攻击者进行网段扫描,发送源IP为10.0.0.2,目的IP地址为10.0.1.2~10.0.1.254. 图 固定源IP地址ARP ...

  8. 【Shell】awk命令--输出某列,列求和,列求平均值,列最大值,列去重复,取倒列,过滤行,匹配,不匹配,内置变量|定义分隔符|多个分隔符

    目录 awk基本语法 awk输出某几列 awk遍历文件行处理 awk中运行shell命令 方法1:awk 内置函数system 方法2 通过awk  print 交给bash awk中运行shell命 ...

  9. 手把手教你JavaEE的分页查询、分页展示,有了这个,你的项目又多了一个谈资

    前言: 我们在写项目的时候,往往有一些项目的信息展示.而展示的数据量往往是很大的,这时候,加入一个分页的功能往往是最理想的选择. 先简单描述一下功能: 根据你的数据量和指定的页面展示数据条数,进行查询 ...

最新文章

  1. Hadoop源代码分析(包mapreduce.lib.input)
  2. asp.net 连接access数据库方法
  3. 最近对kafka的移植工作
  4. json数据格式 穗康码_Json数据格式
  5. C语言显示相位的程序,【图片】求助大佬用c语言帮忙编写下程序【c程序吧】_百度贴吧...
  6. await Task传异步Lambda问题
  7. 《MFC游戏开发》笔记七 游戏特效的实现(一):背景滚动
  8. 复制网站部分内容_这些网站帮你十分钟搞定年终报告/合同/公文/策划写作!
  9. 金字塔c_FPN特征金字塔网络解读
  10. 2022年3月23日蜻蜓q旗舰版v1.2.1重大性能更新-优化加载列表数据方式-更加丝滑-后端增加goeasy
  11. android 修改以太网mac地址_Android5.1修改以太网MAC地址(SElinux)
  12. Apex英雄下载慢的解决方法|Apex英雄离线包分享
  13. 从CentOS官网下载系统镜像详细教程
  14. 阿里巴巴校招一道笔试题
  15. 高德地图 搜索店名获取经纬度
  16. 时刻盯着手机的人,却没有近视一说,就是因为这两个小秘诀(公益分享类文章)
  17. rf 遍历列表_RF的变量list在For循环的用法,试错中学习
  18. python怎么把字体变大_idle怎样设置代码字体大小 颜色 又快又好
  19. PHP数组函数array_combine(合并数组)
  20. 配置网络拓扑图测试软件,某网络拓扑图如下所示,三台路由器上均运行RIPv1协议,路由协议配置完成后,测试 - 信管网...

热门文章

  1. 惠而浦将斥资30亿美元收购艾默生电气旗下爱适易;高通和格芯签署一项长期制造协议 | 美通企业日报...
  2. IMX.6ULL_Linux_基础篇(6) soc资源介绍
  3. matlab物理仿真可视化,基于Matlab的建模和仿真
  4. google手机等相关产品{时间不同步}最简解决方法
  5. java姓名隐藏中间一个_如何正确的隐藏java语言中的名字
  6. 计算机ping 的快捷键,Ping命令使用小技巧
  7. IT界 PK 投资界,那些令人心驰神往的公司食堂
  8. Codeforcs 1183B Equalize Prices
  9. 【LeetCode】《剑指Offer》第Ⅴ篇⊰⊰⊰ 39 - 47题
  10. 五面阿里拿下飞猪事业部offer,统统给你解决!