项目相关

1、在多智能深度强化学习里,智能体和环境交互产生大量的样本,神经网络需要利用这些样本来进行更新,对这些样本的处理,传统的方法是用1个缓存池来保存所有智能体的样本数据,池子里面每条样本数据也就是每条记录为一个数组,里面存的存所有智能体同一时刻的联合状态和动作,然后对这些样本进行均匀采样,一般采样的batch_size也就是采集多少条数据,一般设置为1024条,然后是缓存池的大小一般是10的六次方然后这种方***存在一些问题,首先是这些较大规模的样本里面有些是有利于神经网络训练的,有些是不利用神经网络训练,那我们当然希望能够采集到更多有利于神经网络训练的样本,但是传统的均匀采样随机性太强了,无法保证在大规模的数据中采集出来的样本是有利于神经网络训练的,(但是为了神经网络的稳定性,我们也需要一些不利的样本,只是说大部分需要有利的样本),第二个问题就是只有一个缓存池,然后所有的智能体的样本都往里面扔,而且池子里面每条记录都是所有智能体的,但是在一些稍微复杂的场景里面,智能体它可能并不关心所有智能体是什么情况,只关心跟我相关的那些智能体,因此传统的做法在复杂的大规模智能体场景里灵活性就非常差,而且效率也低。
因此对前面说到的这些问题:我的方法就是为每个智能体单独设计一个缓存池,池子里面每条记录只保存它自己的数据,相当于把原本所有智能体耦合在一起的数据解耦出来,然后根据场景中智能体的实际任务需要对相应的智能体的缓存池进行采样,这样的话整个系统的灵活性就更高了。另外一个方法是针对刚刚说的均匀采样,采出来的样本随机性太强可能不利于神经网络更新的问题,我对每个样本设置一个优先级,按照这个样本
的价值来设置,因为强化学习里面有一个奖励函数来评价样本的好坏,然后我们就可以根据奖励函数的值的好坏映射出一个对应的优先级,得到每个样本的优先级之后,相当于目前有一个基于优先级的数据库,然后每个优先级其实就是一个数字嘛,然后现在要在给定的采集样本的batch_size下,根据这些优先级用尽可能少的时间采集尽可能多的有利于神经网络更新的数据,而且这个采集地过程还要不失随机性那其实这里就就涉及到两个问题,一个是怎样尽可能多地采集到优先级高的样本,一个就是怎样用尽可能少的时间把锁定的样本给找出来。为了保证尽可能多地采集到优先级高地样本,用的是轮盘赌法,它的原理就是把所有样本地优先级全部加起来,然后随机产生一个0到这个和之间的数,然后从第一个样本开始累加它们的优先级,一直到刚好大于那个随机数,然后就选出这个位置对应的样本,他可以保证优先级大的样本有更大的概率被选中,解决这个问题之后。
另一个问题就是怎样用尽可能少的时间来找到这个样本,一般我们的想法就是给你一个优先级,然后就从头开始遍历,直到找到为止,但是我们要采集1024个样本,而且这个缓存池的大小是10的六次方,如果每次都这样去遍历的话是非常耗时间的。我的方法是完全二叉树来保存这些优先级,这里面用到一个技巧就是:叶子结点用来保存每个样本的优先级,
然后每个非叶子结点保存的是它的左右孩子结点的和,所以最终实际上是构建了一个大顶堆,然后就可以进行二分查找,logN的时间复杂度,效率更高。二分查找的过程:首先随机产生了一个优先级,然后从根节点开始,比较这个优先级和左孩子结点以及右孩子结点的大小关系,如果比左孩子结点小,就往左子树找,如果比左孩子大,就往右孩子找,并且往右孩子找的时候要把这个优先级减去左孩子的值作为新的优先级往下找,直到找到叶子结点

2、利用无人机之间的数据交互进行分布式搜索:首先这个项目是用几个无人机来多一片区域进行持续搜索,主要分为两个阶段,第一个阶段是这片区域里没有目标,这个时候无人机主要是通过协作负责提高这片区域里每一个位置地访问频率,第二个阶段是区域里出现了目标,这时候无人机主要是去发现这个目标,并且所有无人机要向这个目标聚拢,意思就是如果其中某一架无人机的探测器探测到了目标可能在某个方向,然后它就会通知其他无人机往这个方向靠拢,并且在聚拢的过程中适当随机探索它们各自的局部区域,最终找到目标的精确位置。
分布式搜索主要用来做第一阶段的,它里的数据交互其实主要是区域的每个位置的上次访问时间信息,做分布式搜索的时候,我把这片区域划分成了若干个小块区域,然后无人机都有一个电磁探测范围,比如说一个半径为多少的圆,然后无人机每运动到一个位置,他就会把当前它的电磁探测范围所覆盖的那些小块区域标记一下,标记的信息就是我在哪个时间访问了这里,然后把这些信息广播给其他无人机,因为这个阶段无人机的共同目的是提高这大片区域里每个位置的访问频率,因此其他无人机在收到这个无人机的信息后,会更新自己系统里存的这些信息,当他在做决策的时候,也就是决定下一步往哪个方向运动的时候,它会首先计算我目前可行的运动方向中,朝哪个方向运动能够使这大片区域里所有位置的空闲度减少得最多,空闲度就是我期望访问某个地方得时间减去上次这个地方被访问的时间,然后从中选择一个收益最大的方向进行运动,最终通过这些无人机的协作可以使得这片区域的访问频率收敛到一个最优值。

布谷鸟搜索原理:这个算法主要用来做集中式的搜索,用在第二个阶段。它们的原理是:设置若一个种群,一个种群一般有几十个个体,假设有50个,其实这50个个体就表示50个可行解,然后刚开始对这50个可行解
做一个随机初始化,因为只是一个初始化,所以这些解还不是最优的,然后对这50个可行解在解空间里通过一定的规则进行随机游走,其实就相当于在这个解空间里做一个随机搜索,然后每更新一轮,都通过一个适应度函数对这些可行解进行淘汰,如果更新后的这一代的可行解比上一代对应的可行解适应度更高,则保留这个适应度更高的,然后继续这样更新若干轮,最终种群会收敛到一个最优解。
用在无人机上:就相当于把每个无人机都看作是一个可行解,它们要找的那个目标就是最优解,然后通过刚刚那种方法不断更新迭代,最终收敛到目标位置处。

全部评论

相关推荐

11-29 11:21
门头沟学院 Java
点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务