CBS
  • 实例
    • 以下将通过一个简单的实例体现CBS的基本过程:
讲解:
  • 上层
    • 结点:指的是每个”小方格“;
    • 节点:树的节点;
    • (ai, aj, s, t):ai与aj在t时刻都在s结点上;
    • OPENcbs:存放待探测的状态,与下层的OPEN意思一样,都是将下一步(某时刻)可能要走的结点存放进来;
    • N:为结点;
    • N.constraints:一个约束集,包含对问题中所有 Agent 的约束;(我们要做的就是在某个结点上给定的约束集中,帮Agent规划避开在该结点的约束集后的其最佳路线);
    • N.solution:问题的一个解,这个解可能不是有效的,但是这个解中所有 的 Agent 的路径都满足该结点 的约束集中的约束;(看例子:在节点1,我们发现,他们在3结点冲突了,于是得到了节点2和节点3,这两个节点均得到了3结点的解,满足了该结点的约束集,但是整条路径下来,两个还是会撞上,因此不是有效的);
    • N.cost:该结点解的代价。(我们避开该结点的约束集可能有很多解,所以我们需要求解的代价,然后得到该结点的解中代价最小的那个);
  • 下层
    • A*算法
流程:
CBS算法流程,即初始化上层的时候先计算出所有的Agent的解和其对应的总cost,令约束树为空,(解释:第一步我们无视其他Agent,得到每个Agent到指定位置的路线,其路线cost最优(小)),然后每一轮弹出约束树的cost最小的结点N(从OPEN队列中弹出),判断N中是否存在一个冲突,只需要找到一个即可,用(ai,aj,s,t)表示冲突,然后生成两个子结点N1,N2,并且都值传递继承节点N的内容,存进OPEN,接着将冲突(ai,aj,s,t)分成约束结点(ai,s,t)和(aj,s,t),一个加入到N1约束树中,一个加入到N2约束树中,(解释:我们以一个Agent为视角,走到s时发生冲突,那我退回去上个结点,然后此时我继承了s点冲突的信息,也就是说也保留了约束集,所以这台Agent会重新规划最优路线(cost最小),以保证自己在t时间内避开s,即约束集),对于N1而言,ai的约束发生了变化,因此需要对ai进行重新规划,规划时需要在约束树下进行规划,最后更新ai的路径和cost值并插入到上层优先队列中OPEN中,接着对N2进行同样的操作,直到取出的N检测没有冲突时返回结点N即可。
个人理解环节:
个人理解环节:上层其实和下层一样,都是A*,都是我(为一台Agent)走一步计算一步,每一步都是最优的,然后上层呢,就是我在某个结点和其他Agent撞上了,就记录下该时间该结点我不能走这个结点,于是我就重新规划绕开走(这里相当是发配命令给下层,让下层通过A*得到这台Agent一条路径,然后将这条路径反馈给上层,上层将其放入解中,分析这个解是否有效),然后因为我们是多台Agent,那么就产生了分支,树也就建出来了:我们假设是两台(a1,a2),一条分支a1动,a2不动;一条分支a2动,a1不动;但是呢,我绕开了这个结点,也不能保证,在绕开该结点后,我这台Agent就不撞上了,所以下一步就会继续寻找撞上的结点,再次进行避开操作,于是又产生了分支,以此类推,最终找到所有Agent不碰撞的解(路径)。

基于冲突的搜索算法(CBS)个人笔记相关推荐

  1. CBS基于冲突的搜索算法流程和核心

    1.conflict based search(CBS)基于冲突的搜索 CBS基于冲突的搜索是最优最先进的混合MAPF算法,比较主流且有较好效果. 由两层搜索过程组成,底层搜索为每个agent搜索出一 ...

  2. 基于tiva的匿名飞控学习笔记(1)

    基于tiva的匿名飞控学习笔记(1) 开关状态任务 遥控器数据处理任务 数传数据交换 延时存储任务 开关状态任务 匿名飞控的开关状态任务为函数Swtich_State_Task(u8 dT_ms),定 ...

  3. 基于Solr的空间搜索学习笔记

    基于Solr的空间搜索学习笔记 在Solr中基于空间地址查询主要围绕2个概念实现: (1) Cartesian Tiers 笛卡尔层 Cartesian Tiers是通过将一个平面地图的根据设定的层次 ...

  4. Spark集群基于Zookeeper的HA搭建部署笔记(转)

    原文链接:Spark集群基于Zookeeper的HA搭建部署笔记 1.环境介绍 (1)操作系统RHEL6.2-64 (2)两个节点:spark1(192.168.232.147),spark2(192 ...

  5. python小车行驶路线图_基于opencv-Python小车循线学习笔记

    基于opencv-Python小车循线学习笔记 加入摄像头模块,让小车实现自动循迹行驶 思路为:摄像头读取图像,进行二值化,将白色的赛道凸显出来 选择下方的一行像素,黑色为0,白色为255 找到白色值 ...

  6. 回溯法采用的搜索策略_强化学习基础篇(三十四)基于模拟的搜索算法

    强化学习基础篇(三十四)基于模拟的搜索算法 上一篇Dyna算法是基于真实经验数据和模拟经验数据来解决马尔科夫决策过程的问题.本篇将结合前向搜索和采样法,构建更加高效的搜索规划算法,即基于模拟的搜索算法 ...

  7. 基于MVS的三维重建算法学习笔记(二)— 立体视觉的几何基础总结

    基于MVS的三维重建算法学习笔记(二)- 立体视觉的几何基础总结 声明 概述 1. 常见三维数据类型 2. 三维形状的几种表达形式 3. 三维空间刚体运动 4. 李群和李代数 5. 相机标定 6. 非 ...

  8. 【背包问题】基于matlab禁忌搜索算法求解背包问题【含Matlab源码 373期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[背包问题]基于matlab禁忌搜索算法求解背包问题[含Matlab源码 373期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付 ...

  9. 便签 java_基于安卓Android的便签笔记APP设计(Android studio)

    基于安卓Android的便签笔记APP设计(Android studio)(论文9000字,程序代码) 摘要:本文介绍了便签的发展史.基础操作流程以及便签的具体功能,提出了基于Android的便签AP ...

最新文章

  1. php左右滑动翻页代码,C#_NGUI实现滑动翻页效果实例代码,废话不多说了,直接给大家上 - phpStudy...
  2. MySQL索引背后的数据结构及算法原理--转
  3. 如何设置使windows(dos)命令中目录和文件可以自动完成和补齐
  4. php实现斐波那契数列
  5. linux db2 ssl,IBM DB2 Content Manager V83与手工配置SSL
  6. ctypes python3.7_装新的python3.7时ModuleNotFoundError: No module named '_ctypes'
  7. python实时绘图暂停_Python实时绘图
  8. 前端性能优化篇——浏览器同域名并发请求对限制
  9. Stream - Web大文件上传插件
  10. QQ音乐付费格式转换
  11. c语言高级编辑器,选项,文本编辑器,C/C++,高级
  12. 基于MATLAB机器视觉技术的水果分级研究进展
  13. 【Linux_02】
  14. 国产Linux系统下替代QQ和微信的不二之选
  15. 2021-01-26-Shell if 条件判断
  16. Linux系统下运行QT视频播放器示例程序(Media Player Example )
  17. C++单个配置与多个配置
  18. 微软输入法正则bug
  19. Vue3 学习总结笔记 (十四)
  20. Subtext3 - 安装配置

热门文章

  1. 提示请插入多卷集的最后一张磁盘解决方法
  2. 计算机无法启动 主板,主板故障导致电脑无法启动的原因以及解决方法!
  3. 2048游戏英雄榜java_2048技巧 2048游戏排行榜挑战方法攻略详解
  4. Java集合优雅的判空/非空
  5. 网页版2048html制作,基于HTML+CSS+JS的网页版2048的实现
  6. 《现代控制理论》第四章
  7. Win10 蓝屏0xc0000098修复
  8. 多模态模型 CLIP4Clip 带你实现文本与视频互搜
  9. 【数据分析师_04_Python数据分析基础】006_Pandas时序分析(df.tz_localize 时区位置、df.tz_convert 时区转换)
  10. M1芯片电脑安装cerebro