一种基于多目标遗传算法的共享单车停放点分配方法与流程

文档序号:21988312发布日期:2020-08-25 19:27阅读:1021来源:国知局
一种基于多目标遗传算法的共享单车停放点分配方法与流程

本发明涉及共享单车停放点分配领域,尤其包括一种基于多目标遗传算法的共享单车停放点分配方法。



背景技术:

随着国外公共自行车的发展逐渐完善经验化,加上我国城市的发展导致的城市交通问题的日益突出,在这种背景下,低碳环保、节能、方便、快捷和经济实用的共享单车在我国城市中孕育而出。

中国的大部分城市都存在严重的交通问题,上下班高峰期时间造成的交通拥堵事件在各大城市十分常见。加上共享单车行业从出现起便是交通与管理热点,单车乱停乱放现象不仅影响市容,更加剧本就恶劣的交通环境。虽然共享单车改善了人们的出行方式,但并不能任其停放问题影响到城市交通。停车问题不仅是用户个人的问题,单车行业没有对用户停放车辆起到引导的作用,停放点的建设也并不成熟,加上用户的规范停放意识低等问题,导致了单车乱停乱放现象随处可见。而且这种现象也在一定程度上引发了一系列问题:比如交通拥堵和租车问题,降低了人们对共享单车行业的好感度;租车问题更是直接影响到用户体验,造成恶性循环。随着共享单车行业规模的增大,与之同时带来了一系列问题,尤其是租赁问题。在车辆调度方面经常表现为空位借不到车、满位停不了车;用户居住地、商业办公区、商场和公园都存在明显的早晚高峰和单车分配不合理现象,导致了共享单车用户体验下降。

目前,共享单车停放点的设置已经在建设中,大多数城市中心区域基本都设置了停放点,但单车企业的引导措施和用户的停放意识还没有成熟,因此需要在企业开发的软件中设置停放引导功能,针对性地培养用户的规定停放意识,解决共享单车行业的规范停放问题。另外,单车扎堆问题对后续管理造成了不良的影响,单车很容易在地铁口、商场和旅游景点等区域扎堆停放。现如今基本采取后续车辆调度管理措施,在一定程度上能够缓解车辆扎堆问题,同时还需要用户分散停放来配合调度管理措施,用户停放目的地四周可能还存在着空位较多的停放点但不自知,这时便需要企业来软性调控各停放点之间的密度,也就是停放引导问题。由于共享单车租赁是一个新兴产业,建设初期其运营模式尚在探索中,因此集成商将其他系统上的技术放到业务模式上套用会造成“不合身”的现象。综上所述,提高单车停放区域利用率,为市民提供一个良好的用户体验,设计出一个良性引导的共享单车停放点分配系统刻不容缓。

专利201810110235.4《一种结合遗传算法的混合粒子群优化算法》提出了一种结合遗传算法的混合粒子群优化算法,将粒子群优化算法的全局搜索能力与遗传算法的收敛速度相结合。把粒子群优化算法的全局搜索能力带入了算法中,再利用遗传算法的快速收敛,最终达到改进算法的目的。但该发明被没有从根本上加速算法的执行,首先粒子群算法和遗传算法同样属于随机搜索算法,算法的初始化对算法本身的影响较大,而粒子群算法和遗传算法在进化的过程中都是盲目的,因此算法的不稳定性并没有得到很好的解决。专利201710068910.7《基于遗传算法的调度方法及装置》公开了一种基于遗传算法的调度方法及装置,涉及智慧仓储技术领域。使用二维数组对种群个体进行编码,计算适应度值后,选取具有合适适应度的个体进行交叉处理,并且将每个调度集合中排除元素相同且调度集合相邻的基因外的元素随机组成子代个体中该调度集合的其余基因。基于遗传算法的调度方法虽然提升了调度效率,节省了调度成本,但交叉个体的选择并不合理,实数编码中个体的基因表现并不突出,因此适应度较好的个体并不能代表其某个染色体片段具有良好的基因。



技术实现要素:

本发明的目的是克服现有技术中的不足,提出一种基于改进的多目标遗传算法,并将其应用在共享单车停放点分配系统上,通过使用hypervolume评价指标对改进算法与原算法进行评估。

这种基于多目标遗传算法的共享单车停放点分配方法,具体包括如下步骤:

s1、服务器收集在某时间点内的若干当前用户请求数据;将请求数据中的坐标信息经过geohash编码成为字符串;将时间分段为t={1,2,3,…,t},请求停车的车辆集合为i={1,2,3,…,i},停放点集合为j={1,2,3,…,j},目的地区域集合为p={1,2,3,…,p};将每个用户的请求数据存放至用户请求信息表中;所述请求数据包括坐标信息、车辆编号、用户编号和目的地区域p;

s2、服务器收集用户的请求数据后,对用户的坐标信息、目的地信息和附近可用停放点位置信息进行统计分析;某时间点内的若干当前用户的请求数据组成请求队列,按照时间节点划分请求队列并进行标记,根据目的地信息对其周围停放区域进行搜索并计算距离,生成用户标号距离矩阵;

s2.1、种群初始化:生成若干条基因组成相同但排列组合不同的染色体;将请求队列作为遗传算法中的染色体,染色体的基因排序由请求队列的处理顺序组成;在之后的种群迭代过程中保持种群的染色体数不变;

s2.2、选择实数编码的nsga-ii作为遗传算法的基因编码方式;用适应度函数区分种群内的染色体差异,并作为筛选染色体的标准:让种群随着迭代朝着更符合优化目标的方向进化,最终得到最适合环境的染色体;

适应度函数由优化目标函数和约束条件组成;所述优化目标函数为距离函数f(x)和密度函数g(x);f(x)为待停的单车到停放点的距离代价总和,g(x)为所有停放点之间的停车密度代价总和;

优化目标函数的数学模型为:

上式中,pj为各停放点的理想停放数;i为待停的车辆集合,i={1,2,3,…,i};j为停放点集合,j={1,2,3,…,j};xij为分配标志位取值为xij∈{0,1},xij取值为1时表示i车辆分配给j停放点,xij取值为0时表示i车辆未分配给j停放点;目标区域p与停放点j之间的距离用dij表示;其中:

首先计算距离函数f(x)的矩阵,接着根据距离函数f(x)的矩阵和约束条件按照染色体的基因组成计算密度函数g(x)的矩阵;

所述约束条件为:

xij∈{0,1}(7)

上式(5)至式(7)中,i为待停的车辆集合,i={1,2,3,…,i};j为停放点集合,j={1,2,3,…,j};xij为分配标志位取值为xij∈{0,1},xij取值为1时表示i车辆分配给j停放点,xij取值为0时表示i车辆未分配给j停放点;bj为每个停放点的车辆容纳上限;

s3、选择锦标赛算法作为选择算子,选择自交作为交叉算子,选择双参赛模式;

s3.1、锦标赛算法的计算过程如下:

s3.1.1、规定筛选后的种群大小为数值sp,随机选择种群中两个个体p1和p2进行适应度比较;

s3.1.2、若p1和p2之间存在支配关系,则淘汰被支配的个体;若两个个体处在同一层非支配解,则跳过淘汰阶段,比赛的轮数由种群中剩下的个体数决定;

s3.1.3、继续进行适应度比较,直到种群大小降低至数值sp;

s3.2、自交的计算过程如下:

s3.2.1、对种群中的每个个体设定一个基因可交叉长度lp,该长度不得超过染色体中基因个数的一半;

s3.2.2、在染色体中随机设置两个点m1和m2,满足m1和m2之间的距离大于基因可交叉长度lp,且m1和m2中后置位点的距离染色体末端距离大于基因可交叉长度lp;

s3.2.3、以m1和m2为锚点,向后端展开两个长度为lp的基因片段,进行交叉操作;

s4、利用快速非支配排序将种群分为若干个等级,并计算种群拥挤度;

s4.1、利用快速非支配排序将种群分为若干个等级的过程为:

s4.1.1、设种群中个体数为p,其中每个个体有被支配个数np和支配的解mp这两个参数,其中mp为数组;

s4.1.2、将该个体被支配个数np取值为0的个体放入数组s1中,作为该种群中的非支配解;

s4.1.3、取消非支配解对支配个体的支配,将s1数组中的个体从种群中排除:对每个在数组s1中的个体,遍历支配的解mp中的个体,将该个体的被支配个数np参数减1,当前数组s1中的个体被支配个数np取值为-1;

s4.1.4、将剩余个体中被支配个数np取值为0的个体加入数组s2,对数组s2重复执行步骤s4.1.3,直至种群等级划分完毕;

s4.2、种群拥挤度计算的过程为:

s4.2.1、对种群中所有个体引入拥挤度ld,并初始化拥挤度ld为0;

s4.2.2、对每个优化目标函数fm进行遍历,根据每个优化目标函数对个体目标值排序,为优化目标函数fm的最大值,为优化目标函数fm的最小值;得到数量为m的个体按优化目标函数升序排序后的数组;

s4.2.3、将每个数组中优化目标函数最大与最小的个体拥挤度ld置为∞;

s4.2.4、计算数组中剩余个体的拥挤度ld,当前个体的拥挤度计算公式为:

上式(8)中,l[i]d为当前个体的拥挤度,l[i+1]m和l[i-1]m为相邻个体的拥挤度,公式(8)将当前个体在m个矩阵中的拥挤度累加得到最终拥挤度;

s5、合并种群:引入精英保留策略维持种群的大小和多样性;

每一代种群选择、交叉和变异之后产生新的个体,将新的个体与父种群合成一个种群ri;接着根据快速非支配排序的结果将种群按等级从低到高覆盖父种群,直到某一层的个体不能完全放入;最后将该层的个体按拥挤度降序排列,依次覆盖父种群,直到父种群被完全覆盖;

s6、将用户标号距离矩阵和停放点信息表输入后台遗传算法,判断遗传算法是否收敛,决定是否继续执行下一代遗传操作:

选用hypervolume指标进行解集的收敛性评价:给定在n个目标中包含m个点的集合s;相对于参考点计算s的hypervolume评价指标:

上式(9)中,δ为lebesgue测度;|s|表示非支配解集的数目,vi表示参照点与解集中第i个解构成的hypervolume评价指标;hypervolume评价指标值越大,则该解集收敛性越好;

当种群达到规定的收敛阈值时,执行步骤s7,且遗传算法终止;反之则遗传代数gen增加1,返回执行步骤s3至步骤s5,直到种群达到规定的收敛阈值;

s7、服务器根据路径规划算法计算用户到达目的地时间,并根据用户到达目的地时间、目的地周围的停放点信息和调控停放点区域密度,将推荐停放点和目的地附近其余停放点发送给用户终端供用户选择;并将分配信息存入结果表中。

作为优选,所述步骤s1中的geohash编码将目的地区域p划分为一个个规则矩形并对每个矩形进行编码,使用peano空间填充曲线,首先筛选geohash编码相似的poi点,然后进行实际距离的计算。

作为优选,所述步骤s2.2适应度函数中的距离函数f(x)根据每条染色体的基因顺序来停放车辆,停放时选择贪心策略:轮到某车辆响应时采取就近停放原则,如果最近停放点的车辆已满则选择距离次级的停放点,以此类推,直至某车辆找到停放点为止。

作为优选,所述步骤s2.2适应度函数中的密度函数g(x)引入平方差评价指标,计算车辆停放后停放点之间的车辆密度差距。

作为优选,所述步骤s3和步骤s4之间还有:

s8、利用融入回归的改进算法在遗传算法的框架上融合回归算法,代替遗传算法本身的变异算子;遗传算法与回归算法同步执行,当遗传算法通过交叉产生新个体时,将其加入回归算法的训练集;设定每新加入若干新个体,执行一次回归算法;融入回归的改进算法计算过程如下:

s8.1、按请求队列的顺序对车辆数组p=[1,2,3,…,p]标号,新个体的基因顺序按请求队列的顺序记录停放状态得出输入变量x=[x1,x2,x3,…,xp];将个体染色体长度作为回归算法的输入变量x的维数,遍历循环个体的基因,当前基因的停放状态作为取值,若单车被分配为就近停放则取值为1,反之为0;

s8.2、将该个体的适应度相加得出预测值y;广义线性模型如下所示:

y(w,x)=w0+w1x1+…+wpxp(10)

上式中x为停放状态,预测值y由距离代价和密度代价组成,回归算法回归计算结束之后,得到一个带有系数w的线性模型,表示请求队列中每辆车的停放状态对适应度的影响程度;

s8.3、将带有索引的w升序排序后,索引顺序作为变异算子得出的新个体:定义w=[w1,w2,w3,…,wp]为系数,w0为截距,回归算法回归计算结束后对w升序排列得到w1,w1的下标数组与数组p对应,得出下标数组p1为新个体。

基于多目标遗传算法的共享单车停放点分配系统包括信息采集模块、信息传输模块、信息的分析和处理模块和信息管理与发布模块;

所述信息采集模块作为线上算法的输入源,用于对用户、车辆、停放点的信息进行实时数据采集;

所述信息的分析与处理模块用于记录用户产生的实时数据,对数据库中的历史数据信息和实时数据中用户发送的请求信息进行筛选,用停放点分配算法进行计算;将处理过的信息进行存放或通过前端app反馈给用户;

所述信息管理与发布模块包括信息管理模块和信息发布模块;信息发布模块用于对用户的请求做出响应,将服务器计算后得出的结果传送到用户的手机终端上;信息发布模块还引入各停放点实时信息标注在前端app中的地图标志上。

本发明的有益效果是:本发明提出了基于多目标遗传算法的停放点分配系统,结合了遗传算法和回归算法,并加入了hypervolume评价指标,讨论算法的改进性能,主要表现为收敛性和分布性,一定程度上对算法的执行效率和执行效果进行了优化。

附图说明

图1为系统架构子模块图;

图2为geohash编码流程图;

图3为本发明的算法流程图;

图4为预测个体与传统遗传算法适应度对比图;

图5为供需比为0.8时hypervolume评价指标比较图;

图6为单变异与三变异算法hypervolume评价指标比较图。

具体实施方式

下面结合实施例对本发明做进一步描述。下述实施例的说明只是用于帮助理解本发明。应当指出,对于本技术领域的普通人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

基于多目标遗传算法的共享单车停放点分配系统包括信息采集模块、信息传输模块、信息的分析和处理模块和信息管理与发布模块;

所述信息采集模块作为线上算法的输入源,用于对用户、车辆、停放点的信息进行实时数据采集;

所述信息的分析与处理模块用于记录用户产生的实时数据,对数据库中的历史数据信息和实时数据中用户发送的请求信息进行筛选,用停放点分配算法进行计算;将处理过的信息进行存放或通过前端app反馈给用户;

所述信息管理与发布模块包括信息管理模块和信息发布模块;信息发布模块用于对用户的请求做出响应,将服务器计算后得出的结果传送到用户的手机终端上;信息发布模块还引入各停放点实时信息标注在前端app中的地图标志上。

系统的主要功能是采集用户请求信息、存储用户使用单车信息记录、能够获取到实时的停放点停车数量信息、断点分批接收用户的请求并筛选处理、停放点分配系统对用户请求做出停放推荐、导航目的地推荐路线并给出备选停放点供用户选择。移动终端采集用户停放需求,并发送用户的位置信息、车辆信息、用户个人信息;服务器接收到终端传输的数据后对数据进行筛选、存储,对用户的停车需求进行停放点分配算法的计算;最终求出的解集推荐给用户,包括推荐停放点和备选停放点。系统以秒为单位采集用户的请求,将实时请求组成请求队列,通过geohash编码找到用户附近停放点,计算队列中用户与附近停放点组成的距离矩阵。通过多目标遗传算法求解总距离代价与平均密度代价,从而得到pareto最优解集或者近似解集,将解集中的解解码成推荐停放点发送给用户,移动终端接收到推荐信息显示路径规划信息进行导航。系统架构包含的子模块如下:

1)信息采集与传输模块:信息采集作为线上算法的输入源,主要对用户、车辆、停放点的等信息进行实时数据采集。目前多数单车行业产品所使用的都是泰斗的gps芯片,支持gps+北斗+glonss定位,功耗极低,在用户骑行单车的过程中,链条起到传导作用会给单车的锁充电,以此传输给gps芯片电量用来定位,芯片的安装位置在后轮的锁里面。传递共享单车的位置和开锁信息分为两种:第一种是skc111的gnss+gprs+ble蓝牙锁,skc111作为控制单元连通gprs模块连接服务器管理系统,利用gps+bds中收集到的信息传送给服务器管理系统,同时还能获取单车蓝牙锁的电量信息;服务器管理系统利用gprs向skc111发送解锁指令,skc111接收到指令后,通过gpio接口去控制装置进行执行开锁命令;用户结束骑行时,锁车触发的开关会通过skc111让gprs通知服务器管理系统车辆为锁车状态,确认成功后扣费。第二种是skb369的ble智能锁,用户扫描车身的二维码后,芯片与手机的gps定位向连通,手机能够获取单车的信息,并把信息传送给服务器。服务器管理系统向用户手终端发送开锁指令,用户终端接收到服务器管理系统的指令后通过终端蓝牙与单车蓝牙连接通信模式进行开锁命令。

2)信息的分析和处理模块:信息的分析与处理模块的功能主要是记录用户实时产生的信息,对数据库中的数据与用户发送的请求信息进行筛选与停放点分配算法计算,后将处理过的信息进行存放或以前端app的方式给予用户反馈。该模块接收到用户的停放请求时,立即分析出附近停放点的可用停放数量,对同一时间点发出请求的用户和停放点实时信息进行算法匹配,最终给每个用户决策出一个最佳停放点和若干备用停放点供用户选择。该模块作为停放点的分配系统中的重要模块之一,后端需要庞大的数据库来处理信息,但是如何高效的分析处理数据,是一个迫切待解决的问题。基于分布式计算技术的优势,可以将数据分布在不同的集群上,计算也可以分布式化,能够在很大的程度上缓解系统的负担。

3)信息管理与发布模块:信息的发布模块需要对用户的请求做出响应,一般表现为文字和图片等信息,将服务器计算后得出的结果传送到用户的手机终端上。同时也可以引入停放点实时信息标注在app中的地图标志上,主要是各停放点动态的信息。

系统运行步骤如下:

用户请求:服务器收集在某时间点内的若干用户请求数据,该数据来源于用户发送请求的终端对应信息,如当前用户坐标位置、车辆编号、用户编号等。用户在发出请求时需要选择目的地区域,可以是地图上的标志物或者经纬度坐标,坐标信息都会经过geohash编码成为字符串,将每个用户的数据信息存放至用户请求信息表中。

预处理:服务器收集用户信息后,对用户的坐标信息、目的地信息、附近可用停放点位置信息进行统计分析。按照时间节点划分请求队列并进行标记,根据目的地信息对其周围停放区域进行搜索并计算距离,生成用户标号距离矩阵。

后台算法运行:将用户标号距离矩阵和停放点信息表输入后台算法,线上算法进行迭代直到满足输出阈值或迭代次数到达上限,最终将结果对请求队列中的用户推荐停放顺序以及停放点信息,并将分配信息存入结果表中。

发送分配推荐:服务器会根据路径规划算法计算用户到达目的地所需时间,并根据到达时间、目的地周围的停放区域信息和调控停放点区域密度等目标,为用户推荐停放区域并标注目的地附近其余可停放区域供用户选择。将推荐信息发送给用户终端,显示最佳推荐停放点和若干备选停放点供用户自行选择。

1算法模型

假设将时间分段为t={1,2,3,…,t},则每次停车请求存在对应的时间节点。需求停车的车辆集合为i={1,2,3,…,i},在每个时间节点内组成请求队列。停放点集合为j={1,2,3,…,j},即为城市内固定的停放白线区域。目标区域集合为p={1,2,3,…,p},该区域表示某时间节点内的用户目的地,如学校、商场、住宅区等。将每一个时间点内的请求队列排列组合出最符合模型和约束条件的基于停放顺序的编码序列,将序列所匹配到的停放点推荐给各用户,即为该停车位分配算法。

定义xij为分配标志位,取值为xij∈{0,1},表示i车辆是否分配给j停放点。由于车辆分配唯一性,车辆与停放点呈现多对一的逻辑关系。每个停放点的车辆容纳上限用bj表示,目标区域p与停放点j之间的距离用dij表示。

由于引入了停放点拥挤度的概念,仅考虑距离因素可能会造成车辆的聚集,并不方便与管理,因此本文采用双目标优化算法建模,优化目标分别是距离代价f(x)与密度代价g(x)。设f(x)为待停的单车到停放点的距离代价总和,g(x)为所有停放点之间的停车密度代价总和,其中pj表示各停放点的理想停放数。目标函数的数学模型如下所示:

约束条件如下所示:

xij∈{0,1}

多目标优化算法需要权衡多个目标之间的权重,且每个目标之间存在着一定的制约关系,使得无法求出让所有目标同时达到最优的解。多数情况下可以求得一个解集,该解集受制于一个特定的区间,常称为pareto解集。对于多目标优化算法,如果采用全局搜索很容易陷入重复计算和局部最优,因此采用近年来在多目标优化算法中常用的遗传算法来求解。

2算法实现过程

在现实问题中,需要优化的目标通常不止一个。把每个目标分以不同的权重再整合是其中一种策略,等同于创建一个新的目标,属于单目标的范畴。由于多目标算法使得目标向量维度增加,一般的算法运行的时间会大大增加。因此产生了各类进化算法,其中较完善的有蚁群算法和遗传算法等。

2.1染色体与基因编码

首先要对种群中的个体设定独有的染色体,才能完成接下来的遗传操作。服务器在某一时间节点内会收到不同用户发送的若干请求组成请求队列。该队列由于存在于同一个时间点内,其处理的先后顺序并不会影响到用户的体验。但各停放点的车辆停放数量并不是无穷大的,加上交通因素可能会导致一些停放点的车辆停放数量本就接近满值,因此该队列的顺序会影响到上一章中设定的目标函数的取值。考虑到请求顺序问题,将请求队列作为遗传算法中的染色体,其中基因的排序由请求队列的处理顺序组成。

遗传算法的基因编码方式有二进制编码、实数编码、符号编码等等。二进制编码在传统数学问题上有着广泛的运用,方便数据的执行,但在实际问题或高精度的问题中需要编很长的二进制序列。这时,实数编码会相对方便处理,同时,基于停放顺序的编码操作如果采用二进制编码可能会导致选择、交叉和变异的步骤难以进行。在大多问题中,实数编码的nsga-ii相比其他任何算法(包括二进制编码nsga-ii)能够找到更好的扩展解。

2.2种群初始化

种群初始化也称为种群个体生成。将某一时间点内的请求队列作为染色体的一种基因组成方式,因此染色体内基因可能的组成受基因的长度而几何倍增多。如下是两条染色体的基因组成,每条染色体代表一个个体,种群初始化便是生成若干条基因组成相同但排列组合不同的个体,通常生成30到50个个体作为初始种群。并且在之后的种群迭代过程中保持种群的个体数不变。

2.3适应度函数与geohash编码

适应度函数是评价个体优劣的关键指标之一,它是由优化目标和约束条件所组成的函数。适应度函数用来区分种群内的个体差异,并作为筛选个体的标准,让种群随着迭代会朝着更优秀的方向进化,最终得到最适合环境的个体,也就是最符合优化目标的个体。

基于本文采用双目标优化建立模型,适应度函数分为距离函数f(x)和密度函数g(x)。在距离函数解码中,根据每条染色体的基因顺序来停放车辆,停放时选择贪心策略,即轮到某车辆响应时采取就近停放原则,如果最近停放点的车辆已满则选择距离次级的停放点,以此类推。密度函数解码中本着宏观调控城市停放点密度的原则,会引入平方差评价指标,计算车辆停放后停放点之间的车辆密度差距。在城市中用户选择停放的位置往往会聚集在一起,在一定程度上会影响车辆调度管理,因此分配过程中出现车辆聚集则会使当前染色体的密度函数排名降低。首先计算距离函数的矩阵,接着根据距离矩阵和约束条件按照染色体的基因组成去计算密度函数的矩阵;所述染色体的基因组成指代编码所产生的染色体,即车辆停放顺序。

附近地标搜索早已成为含地图软件的标配。这不仅使得搜索范围大大降低,更加大了用户体验,其中geohash编码便是实现这一功能的核心算法。由于算法可以控制邻近范围的大小,比起人工划分区域或整体搜索节省了很多的时间开销。当车辆请求停放点位置信息时,二叉树是通过循环的方式得到序列的长度,将车辆与停放点的序列进行逐位比较,得到相同编码的停放点位置信息。使用geohash需要注意:

1)由于geohash是将区域划分为一个个规则矩形并对每个矩形进行编码,这样在查询附近poi信息时会导致:例如有a点和两个点,a点与一个点的编码前缀相似更多,但距离更远(在同一个矩形区域)。解决方法是除了使用定位点的geohash编码进行匹配外,还是用周围8个区域的geohash编码,这样来避免。

2)现有的geohash算法使用的是peano空间填充曲线,具有造成编码虽然相似但距离差距可能很大的突变性。解决方法是首先筛选geohash编码相似的poi点,然后进行实际距离的计算。

geohash编码精度随着迭代划分的次数增加而增加,编码长度要根据实际情况进行选择。同时,虽然geohash编码的位数越少,损失掉的精度就越高,但却在一定程度上保护了用户的位置隐私。

2.4快速非支配排序和拥挤度计算

快速非支配排序使得种群分为若干个等级,其中每个等级中的解互相制约,称为非支配解。首先找出当代种群中的非支配解,标记为1,然后将这些个体排除,在剩余的个体中找出非支配解,标记为2,以此类推,标记种群中所有的个体。计算过程如下:

1)假设种群有个体数为p,其中每个个体有两个参数,分别是该个体被支配个数记为np和支配的解记为数组mp。

2)将np取值为0的个体放入数组s1中,即该种群中的非支配解。

3)对每个在s1数组中的个体遍历其数组参数mp中的个体,使该个体的np参数减1,相当于取消非支配解的对其支配个体的支配,也就是将s1数组中的个体从种群中排除,当前s1数组中的个体np取值为-1。

4)将剩余个体中的np取值为0的个体加入数组s2。

5)对s2数组进行遍历,重复上述操作,直到种群等级划分完毕。

拥挤度计算能够判断上一步中具有相同标记的解的优劣。在快速非支配排序中同一标记的解,它们之间存在制约,同一层中的小种群中的个体无法在两个方面同时优于其余个体,因此需要计算同一标记中的个体拥挤度。从双目标优化问题来看,拥挤度计算相当于该个体在二维坐标系中与同一层中相邻个体围成的面积。拥挤度比较算子在算法的整个运行过程中更倾向于选择导向均匀分布的解集。也就是说,引入拥挤度将更青睐不太拥挤区域的解,从而使得种群分布更加分散。计算过程如下:

1)种群中所有个体引入拥挤度ld,并初始化为0。

2)对每个目标函数fm进行遍历,根据每个目标函数对个体目标值排序。为目标函数fm的最大值,同理为最小值,可得到数量为m的个体按目标函数升序排序后的数组。

3)将每个数组中目标函数值最大与最小的个体拥挤度置为∞。

4)计算数组中剩余的个体的拥挤度,当前个体的计算公式如下所示:

l[i]d为当前个体的拥挤度,l[i+1]m和l[i-1]m为相邻个体的拥挤度,公式将当前个体在m个矩阵中的拥挤度累加得到最终拥挤度。

2.5选择与交叉算子

选择与交叉算子在遗传算法中起到优胜劣汰与产生新个体的作用。常规的选择算子有赌轮盘和锦标赛算法。赌轮盘是最基本的选择策略之一,将种群中所有个体的适应度归一化处理,通过随机数对区域内的个体进行筛选,类似于赌场里的转盘,适应度越大的个体获得的区域越大,也就越容易被选中。锦标赛算法是遗传算法中最流行的选择策略,在整个种群中抽取若干个体,让他们竞争,选择其中最优的个体。由于赌轮盘算法过于随机,无法保证适应度大的个体必定被选出,且有概率丢失优秀个体基因,加上锦标赛算法的执行效率和易实现的特点,本文将选择该算法作为选择算子,而锦标赛大小通常选择双参赛模式。

由于多目标遗传算法中,无法用单个适应度函数判断个体的优劣。因此在锦标赛选择过程中,若存在一个个体支配另一个个体时,才存在淘汰机制。若两个个体处在同一层非支配解,则跳过本次淘汰,比赛的轮数由种群中剩下的个体数决定。计算过程如下:

1)规定筛选后的种群大小为sp,随机选择中群内两个个体p1和p2进行适应度比较。

2)若p1和p2之间存在支配关系,则淘汰被支配的个体;反之则跳过淘汰阶段。

3)继续进行适应度比较,直到种群大小降低至数值sp。

交叉算子的设计有很多种,常见的有局部映射交叉、顺序交叉、定位交叉等等。本文采用基于停放顺序的染色体编码方式,即染色体中的基因具有唯一性,因此如若采用除自交以外方式交叉,很容易导致基因冲突等问题。随机出具有交叉性的基因长度,在个体中自交,计算过程如下:

1)对种群中的每个个体设定一个基因可交叉长度lp,该长度不得超过染色体中基因个数的一半。

2)在染色体中随机设置两个点m1和m2,需满足m1和m2之间的距离大于lp,且m1、m2中的后置位点的距离染色体末端距离大于lp。

3)以m1和m2为锚点,向后端展开两个长度为lp的基因片段,进行交叉操作。

2.6精英保留策略与算法收敛条件

为了维持种群的大小和多样性,需要引入精英保留策略。每一代种群选择、交叉、变异之后会产生新的个体。首先将新的个体与父种群合成一个种群ri。接着根据快速非支配排序的结果将种群按等级从低到高覆盖父种群,直到某一层的个体不能完全放入。最后将该层的个体按拥挤度降序排列,依次覆盖父种群,直到父种群被完全覆盖。精英策略更加体现了遗传算法与其余多目标优化算法的区别,遗传算法更偏向于将不好的个体淘汰,而不是在进化策略上找出更优秀的个体。

精英策略结束后会判断算法是否收敛,进而决定是否继续执行下一代遗传操作。遗传代数表示种群进化迭代的次数,当种群达到规定的收敛阈值时算法终止,反之遗传代数增加,继续进行下一代的遗传操作。

2.7种群评价指标

多目标进化算法解集性能评价指标有两种常见的分类方法。第一种是考虑指标同时能评估的解集数目,可将指标分为一元和二元指标,分别表示接受一个或两个解集作为参数,通过计算给出评价。第二种是考虑多目标进化算法的收敛性、均匀性和广泛性评价作为主要性能评价指标。解集的收敛性评价希望所得的解集距离pareto前沿尽可能进,解集的均匀性希望解集在pareto前沿上分布尽可能均匀,解集的广泛性希望所在pareto前沿分布尽可能广、尽可能完整。

hypervolume指标是唯一已知的一元指标,它可以由其超体积的单个值来评估一个解集的质量,且是唯一已知的符合pareto支配概念的指标。hypervolume是评估近似解集的收敛性和多样性的综合指标。因此,给定在n个目标中包含m个点的集合s,解集s的超体积是由s中的至少一个点支配的目标空间的一部分的大小。相对于参考点计算s的hypervolume,该参考点在每个目标中的比s中的每个点更差(或等于),hypervolume值越大,就认为该解集越好。

hypervolume评价指标计算方式如下所示:

δ表示lebesgue测度,用来测量体积。|s|表示非支配解集的数目,vi表示参照点与解集中第i个解构成的hypervolume。优点是能用一维的数值同时评价收敛性和多样性,且无需知道pareto前沿或参考集,缺点是计算复杂度高,尤其是高维多目标优化问题,参考点的选择在一定程度上决定hypervolume指标值的准确性。

2.8融入回归的改进算法

变异操作为遗传算法提供跳出局部最优解的可能。传统的遗传算法仅执行选择与交叉操作很容易陷入局部最优,进而导致种群迭代进化缓慢。本文将在遗传算法的框架上融合回归算法,代替算法本身的变异算子。

由于引入了停放点规模大小,模型设计中存在停放点的竞争问题。每个停放点的车辆停放数量有限,停放点本身也存在闲置车辆占据空间的问题,导致人流高峰时期就近停放位置不足。因此算法设计上可以加入竞争模拟,停放状态可分为就近停放和非就近停放。

停放状态可作为回归算法的编码方向,停放状态具有两面性,可作为二进制取值的方向。将个体染色体长度作为回归算法的输入变量x的维数,遍历循环个体的基因,当前基因(车辆)的停放状态作为取值,若单车被分配为就近停放则取值为1,反之为0。将适应度的值之和作为输出变量y值。回归计算结束之后,会得到一个带有系数w的线性模型,表示请求队列中每辆车的停放状态对适应度的影响程度。由于适应度值之和为正数,且当x的取值全为1时所有车辆都是就近停放,距离函数可以取得最小值,全取0值反之,因此w中绝大多数为负值。对w进行升序排序,最小值便是对距离函数影响最大的车辆。将带有索引的w排序后,索引顺序作为变异算子得出的新个体。计算过程如下:

1)按请求队列的顺序对车辆数组p=[1,2,3,…,p]标号,新个体的基因顺序按请求队列的顺序记录停放状态得出输入变量x=[x1,x2,x3,…,xp]。

2)将该个体的适应度相加得出预测值y;y为已知值,由个体的距离代价和密度代价组成。广义线性模型如下所示:

y(w,x)=w0+w1x1+…+wpxp

3)在整个模块中,定义w=[w1,w2,w3,…,wp]为系数,w0为截距。回归计算结束后对w升序排列得到w1,w1的下标数组与数组p一一对应,得出下标数组p1即为新个体,最终预测基因序列为p1

遗传算法与回归算法可以同步执行,每当遗传算法通过交叉产生新个体时,将其加入回归算法的训练集,可以设定控制每新加入若干新个体便执行一次回归算法,回归操作产生一个新个体加入遗传算法种群,循环往复可以遗传算法本身的执行效率提高。传统的变异操作只提供跳出局部最优的可能,但本质上还是随机事件,而改进后的算法具有一定的导向型,每次回归操作都是在现有训练集中得出一个当前能使适应度为最优的个体,可以在一定程度上让种群往更优的方向进化。

3算法实验结果

算法旨在处理短时间内多用户请求组成的请求队列的停放点分配问题。取某个时间点ti前90分钟内可能发出请求的用户,模拟组成请求队列。存在该队列中的用户需满足:在ti前租赁车辆且在ti时未到达目的地,即请求记录中starttimr的值小于ti,到达目的地geohashed_end_loc时的时间大于ti。筛选后获得一组车辆标记并作为请求队列,计算并存入距离矩阵。

实验结果会受到车辆与停放点之间的供需比影响。当每个停放点可用区域充足时,只需要考虑距离和密度代价的适应度因素。当某停放点可用区域小于匹配到该停放点的车辆数,将会有部分车辆因停不到目标停放点转而进行重新匹配。供需比越接近1时,可用停车区域与车辆数越接近,会导致停不到最佳匹配停放点的车辆数增多,进而影响适应度的值。

遗传算法进化代数和供需比会影响hypervolume评价指标值,供需比取值0.5至0.9,遗传算法与加入回归变异的改进遗传算法在50代、100代、200代的hypervolume评价指标值如下表所示:

表1遗传算法进化代数和供需比对hypervolume评价指标值的影响表

由上表可知,供需比在低于0.8(包括0.8)时两种算法都能在100代以内达到很好的效果,改进遗传算法更是在50代以内达到。而在供需比到达0.9时,传统遗传算法明显乏力,在多代进化后始终陷于局部最优;改进遗传算法受供需比增高的影响明显低于传统遗传算法,在较小的代数能够取得显著的效果,提高了算法的收敛性。

在高供需比时,传统遗传算法的劣势便显现出来了,因搜索空间较大,搜索方式也基本随机,很难能够稳定在短时间内取得很好的进化效果,因此长期处于局部最优,改进遗传算法能够在短期进化代数内找到较好基因的个体,并能不断扩大与该个体处于同一pareto前沿的种群,因此hypervolume评价指标值会稳步上升。上述实验均是引入单变异个体的改进遗传算法。由于单变异个体的回归输出值采用的是适应度值之和的计算方式,会使得种群偏向同时降低两个适应度的方向进化,并不利于种群多样性的分布。将两个但适应度的取值作为另外两个变异个体的回归输出,用于搜索种群的多样性。三变异算法在保证算法的收敛性的同时,为种群提供了多样性的进化方向。hypervolume评价指标不仅要求种群在收敛性上接近pareto最优,同时在种群分布上也要尽量离散,收敛性保证了hypervolume评价指标中间的大区域取值,多样性保证了边缘的个体能分到hypervolume的小区域取值,提升了指标值。

系统架构采用多目标优化模型采用遗传算法求解,设计了基于停放顺序的编码序列。对多目标遗传算法的一般步骤进行基于自定义编码方式的相应调整,并在变异步骤对算法进行了改进,引入回归思想改善了多目标遗传算法因其随机性而导致的收敛性差等问题。介绍了评价种群优劣性的指标,并选择能同时评价种群的收敛性和分布性且不需要pareto最优解集作为参考集的hypervolume指标作为主要评价指标。算法实现上讨论了影响算法效果的几个因素,包括车辆与停放点之间的供需比关系、进化代数、变异个体预测值与适应度降维的方式等,使用hypervolume指标评价了不同情况下种群的收敛性与多样性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1