The invention provides a solution algorithm for urban discrete traffic network model based on design speed and is realized by R language program. Considering that the design speed is the optimum speed of the road section and the deviation from the design speed is prone to traffic accidents, the method adopts the mean square error of the driving speed and the design speed as the substitute index of the network security level, and advances the active safety evaluation to the stage of road network planning. The main steps include: (1) Establishing a bi-level programming model for urban discrete traffic network design, in which the upper level planning takes network security as the policy objective and the lower level planning takes user equilibrium as the policy behavior response; (2) using iterative optimization algorithm to solve the model; (3) designing R language program to achieve the solution; (4) combining with traffic flow Nguyen Dupuis network, which is commonly used in network analysis, describes the specific implementation and the effectiveness of the method. Using R language to solve the model has the advantages of open source and free operation.
【技术实现步骤摘要】
基于设计速度的城市离散交通网络设计R语言实现方法
:本专利技术针对基于设计速度的城市离散交通网络模型,提供了一种求解算法并使用R语言程序来实现,属于交通工程
技术介绍
:传统的交通安全研究是在道路系统建成后,通过对大量事故数据的统计分析识别危险路段和事故黑点,然后提出相应的改善措施。由于此时可以采取的手段非常有限,交通安全治理的效果往往并不显著,并不能从根本上提高道路系统的安全水平。目前国内外对道路安全评价方法研究较多,常用的典型定量安全评价方法主要有:设计一致性评价、事故预测模型、交通冲突等。其中设计一致性评价属于事前主动安全评价,而事故预测模型和交通冲突属于事后被动安全评价。设计一致性评价指标又通常分为三类:基于运行速度协调性的评价指标、基于道路几何线形的评价指标和基于驾驶员工作负荷的评价指标。当前国内外道路安全评价分析时,普遍采用运行速度协调性来检验道路几何线形设计一致性。基于速度协调性的交通安全评价就是以速度为媒介,认为速度及其波动性与交通事故密切相关,把速度当作交通安全的替代指标,通过观测路段的运行速度进行交通安全评价。一般来说,运行速度协调性有以下两个含义:①同一路段实际行驶速度与设计速度相一致;②相邻路段实际行驶速度相一致。本专利技术使用R语言实现模型求解,总体来说具有以下技术特点:1)开源免费:目前国外的交通规划类软件普遍价格高昂,而R语言是开源免费的;2)具有可操作性:R语言简单易用,适于一般的交通工程师和规划师学习采用;3)主动性:主动安全是交通安全规划的本质特征,本程序将交通安全评价提前到道路网络规划阶段;4)系统性:本程序 ...
【技术保护点】
1.本专利技术针对基于设计速度的城市离散交通网络设计模型,设计了一种R语言求解方法,涉及步骤如下:步骤1:建立城市离散交通网络设计模型,上层为行驶速度与设计速度的均方误差最小化,下层为用户平衡模型,上层决策变量为ya,表示是否修建某条候选路段a,为0‑1变量,a∈A,所有的候选路段构成0‑1决策向量y,上层决定新建道路方案后,下层形成平衡状态网络流xa,也就是说路段流量xa是决策向量y的函数,表示为xa(y),另外,道路网的规划受到资本的约束,假设单位长度的路段修建成本为ua,则长度为la的路段修建成本为uala,因此,双层规划问题表示为:
【技术特征摘要】
1.本发明针对基于设计速度的城市离散交通网络设计模型,设计了一种R语言求解方法,涉及步骤如下:步骤1:建立城市离散交通网络设计模型,上层为行驶速度与设计速度的均方误差最小化,下层为用户平衡模型,上层决策变量为ya,表示是否修建某条候选路段a,为0-1变量,a∈A,所有的候选路段构成0-1决策向量y,上层决定新建道路方案后,下层形成平衡状态网络流xa,也就是说路段流量xa是决策向量y的函数,表示为xa(y),另外,道路网的规划受到资本的约束,假设单位长度的路段修建成本为ua,则长度为la的路段修建成本为uala,因此,双层规划问题表示为:其中A为候选建设的路段集合;B为新建道路的资金约束;xa为路段a上的交通流量;为自由流行驶时间,即路段a为空净状态时车辆自由行驶所需要的时间;ca为路段a的通行能力,即单位时间内路段可通过的车辆数;ta(xa,ca)为路段a以交通流量为自变量的阻抗函数,也称为行驶时间函数;为出发地为r目的地为s的OD间的第k条路径上的流量;为路段-路径相关变量,即0-1变量,如果路段a属于从出发地为r目的地为s的OD间的第k条路径,则否则qrs为出发地r和目的地s之间的OD交通需求量;步骤2:使用迭代优化算法进行求解,上层采用枚举法,下层采用Frank-Wolfe算法,算法的基本思路是对上层满足约束的可行方案计算下层平衡网络流量和路段速度,再根据路段速度计算上层的目标函数,比较所有可行的方案,最后确定最优的目标函数方案;步骤3:设计求解的具体程序如下:#步骤1:初始化,按格式输入数据、函数和必要的包#1.1加载计算最短路径的包,准备调用dijkstra最短路径算法,注意igraph包首次需要安装,然后才能调用:#install.packages(″igraph″)library(igraph)options(digits=3)#1.2创建图的距离矩阵,包含所有的候选路段:第一列为路段标号(Road),第二列为路段起点标号(Roadorigin),第三列为路段终点标号(Roaddestination),第四列为该路段自由流时间(freeflowtime),第五列为道路通行能力(capacity),第六列为道路长度(length);此处以交通配流中常用的Nguyen-Dupuis网络为例,详细的参数设置可参考程序文档:#也可以在Excel中复制,然后执行#e=read.delim(″clipboard″,header=F)e=matrix(c(1,1,5,7.0,800,4.00,2,1,12,9.0,400,6.00,3,4,5,9.0,200,5.00,4,4,9,12.0,800,8.00,5,5,6,3.0,350,2.00,6,5,9,9.0,400,5.00,7,6,7,5.0,800,3.00,8,6,10,13.0,250,8.00,9,7,8,5.0,250,3.00,10,7,11,9.0,300,6.00,11,8,2,9.0,550,5.00,12,9,10,10.0,550,6.00,13,9,13,9.0,600,5.00,14,10,11,6.0,700,4.00,15,11,2,9.0,500,6.00,16,11,3,8.0,300,5.00,17,12,6,7.0,200,4.00,18,12,8,14.0,400,6.00,19,13,3,11.0,600,7.00,20,1,6,10.0,600,8.00,21,5,10,10.0,600,8.00,22,6,11,10.0,600,8.00,23,7,2,10.0,600,8.00,24,10,3,10.0,600,8.00),ncol=6,byrow=T)e=cbind(e,cbind(c(rep(30,19),rep(40,5))))#添加各个路段的设计速度colnames(e)=c(″Road″,″Roadorigin″,″Roaddestination″,″Time″,″Roadcapacity″,″Roadlength″,″Designedspeed″)e#1.3输入交通需求矩阵,第一列为起讫点对的标号(ODpair),第二列为起点标号(origin),第三列为终点标号(destination),第四列为交通需求(demand)#也可以在Excel中复制,然后执行#d=read.delim(″clipboard″)d=matrix(c(1,1,2,400,2,1,3,800,3,4,2,600,4,4,3,200),ncol=4,byrow=T)colnames(d)=c(″ODpair″,″Origin″,″Destination″,″Demand″)d#自定的Frank-Wolfe算法函数fw=function(e,d){#1.4根据路径自由流时间计算各个OD对的最短路径和路径流量g=add.edges(graph.empty(13),t(e[,2:3]),weight=e[,4])#创建图,13为节点的个数b12=get.shortest.paths(g,from=″1″,to=″2″,mode=″out″,output=″epath″)$epath[[1]]#从起点1到终点2的最短路径b13=get.shortest.paths(g,from=″1″,to=″3″,mode=″out″,output=″epath″)$epath[[1]]#从起点1到终点3的最短路径b42=get.shortest.paths(g,from=″4″,to=″2″,mode=″out″,output=″epath″)$epath[[1]]#从起点4到终点2的最短路径b43=get.shortest.paths(g,from=″4″,to=″3″,mode=″out″,output=″epath″)$epath[[1]]#从起点4到终点3的最短路径#创建一个临时矩阵,用于保存各个OD对的最短路径和流量V=cbind(e[,1])colnames(V)=″Road″V#OD对12的最短路径和流量sp12=as.vector(b12)#转化为路段标号(Road)x12=cbind(e[sp12,1],rep(d[1,4],length(sp12)))#路段标号和流量,算法中的迭代起点colnames(x12)=c(″Road″,″V12″)x12V=merge(V,x12,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵V[is.na(V)]=0V#OD对13的最短路径和流量sp13=as.vector(b13)#转化为路段标号(Road)x13=cbind(e[sp13,1],rep(d[2,4],length(sp13)))#路段标号和流量,算法中的迭代起点colnames(x13)=c(″Road″,″V13″)x13V=merge...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。