注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mister.Hu(巷里人家)

Go abroad!

 
 
 

日志

 
 
关于我

A campus photograph palyer,an enthusiastic reader,a solitary writer,a future traffic engineer.

网易考拉推荐

行人元胞自动机算法思路  

2015-12-14 19:26:22|  分类: Senior |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

(1)    定义标号:对于50*20大小的场,同时采用双下标和单下标法进行标记。定义规则采用Matlab中的定义规则。

(2)    得出静态场强赋值,设为SFIThe Static Field Intensity,大小为50*20

(3)    3600为循环量,以1为增量,在484750三列中随机产生行人。每个行人随机分布于空余元胞中。

(4)    定义状态矩阵,设为SMState Matrix,大小为50*20,值为010表示无人,1表示有人。每一个仿真秒结束后,SM将得到一次更新。

(5)    求解动态场强,设为DFIThe Dynamic Field Intensity,大小为50*20。需要SM得出行人数目。

(6)    得出综合场强,设为CFIThe Comprehensive Field Intensity

(7)    2)中的空余元胞的获得需要(3)中SM的支持。

(8)    2)中产生的行人,将全部存储到一个数组中,设为PP(Pedestrians Pool),其列数为1,行数为3600个仿真秒一共产生的行人个数,其行ID即每一个行人的身份标识。

(9)    PP相对应的,每一个行人还应当具有速度大小矩阵、速度方向矩阵和位置矩阵。分别设为SVMSpeed Value MatrixSDM(Speed Direction Matrix)PMPosition Matrix。其列数均为1,行数为行人个数。这三个矩阵应当每一个仿真秒更新一次。即,下一个仿真秒开始时的值,应当是上一个仿真秒得出的结果。

(10)根据PP中每一个行人的ID,得出每一个行人的SVMSDMPM。由SVMSDM可以确定下一秒行人能到达的范围(此时不考虑周围是否有行人),设为TRPTotal Reachable Position

(11)引入SM(此时开始考虑周围被占用的情况),将TRPSM中的0取交集,设为FRPFirst Reachable Position,表示本次可到达,并将FRP按照CFI进行大小排序。将TRPSM中的1取交集,设为MNRPMaybe Next Reachable Position,表示本次被占用。

(12)MNRP中的CFIFRP中的min(CFI)进行比较,并将CFI中小于FRP中的min(CFI)的格子取出,归为一个新的矩阵,设为NRP (Next Reachable PositionNRP同样也按照CFI进行大小排序。

(13)FRPNRP进行概率选择,并确定一个集合。

(14)如果选择的是NRP,则行人静止一步,即本次仿真秒结束后,行人的SVMSDMPM均保持不变。

(15)如果选择的是FRP,则选择FRPCFI最小的作为下一步的目标元胞。此时应当定义三维矩阵RM(Route Matrix),用于存储到达目标元胞的路线。RM的列数代表路线的条数,而每一列对应的每一行则代表路线所经过的格子的ID,格子的ID的定义方法采用Matlab自身的单下标定义方式。RM的第三维将代表FRP的每一个元胞。

(16)对每一个行人,计算其下一步所有可能路线的sum(CFI),并对其进行排序,并将其最小值的路线作为下一步的最优路线。即,对于RM的第三维的每一维,按照sum(CFI)进行行序重排。

(17)按照入场先后顺序,先将第一个行人(主体)的最优路线与以其为中心的13*13网络中的其余所有行人(对比体)的最优目标下的所有路线进行比较,选出有重复格子ID的路线,将其存储入新的矩阵,设为CRMConflict Route MatrixCRM同样为三维矩阵,第三维的维度表示对比体中与主体发生冲突的个数,第三维的每一维应当以发生冲突的对比体的ID进行标识。而CRM的每一行用于存储对比体中与主体发生冲突的具体路线,每一行应当应当以冲突点的ID进行标识。此后将基于此进行冲突分析。

(18)冲突分析首先需要确定冲突双方的速度和距离。速度大小可以直接调用冲突双方的SVM,距离在此需要判断起点到冲突点的路径上每两点间的距离并进行叠加,斜线取1.5,直行取1。距离可存储为矩阵CDMConflict Distance Matrix。对于转向,在此双方都暂时不做考虑。

(19)用距离除以速度得出时间矩阵,设为CTMConflict Time Matrix

(20)冲突双方都应当有CDMCTM,这三个矩阵都是依托CRM的每一行而生的。因此,CDMCTM的行数、维度与CRM相同,而列数为两列,第一列记录主体,第二列记录对比体。

(21)将主体的CTM与对比体的CTM进行比较,只有主体的CTM比所有对比体的CTM都小,主体的路线才确定为此条,否则,将主体的路线变为RM中该维的第二条,并继续(17-21)。

(22)如果循环至主体的RM的第一维路线用完,则改用第二维,如果维数也用完,则静止。否则,确定主体的路线。并将路线存储入FRMFinal Route Matrix

(23)第一个行人结束后,对之后的每一个行人进行次优递选来解决冲突问题。需要注意的是,之后的行人在与之前的行人比较时,只需要和FRM中的路线进行比较。

(24)最终,得出每一个行人要么静止,要么按照与其他行人都无冲突的路线进行更新。一个仿真秒的循环至此结束。

  评论这张
 
阅读(63)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016