当前位置: 首页 > 专利查询>东南大学专利>正文

基于目标配流的城市离散交通网络设计R语言实现方法技术

技术编号:19425630 阅读:10 留言:0更新日期:2018-11-14 10:41
本发明专利技术针对基于目标配流的城市离散交通网络模型,提供了求解算法并使用R语言来实现。在城市交通网络规划时,常需考虑目标配流问题。为了合理利用道路资源,使各路段服务水平接近设计目标,本发明专利技术建立了一个基于目标配流的城市离散交通网络设计方法。主要步骤包括:(1)构建双层规划模型,上层目标为最小化各路段实际服务水平与设计目标的均方误差,约束条件为资金预算,决策变量为候选路段的建设方案,下层为用户均衡;(2)采用迭代优化算法进行模型求解;(3)设计R语言程序来实现求解方法;(4)结合交通网络分析中常用的Nguyen‑Dupuis网络描述了具体实施方式和该方法的有效性。使用R语言来实现模型的求解具有开源免费、可操作性强等技术优势。

【技术实现步骤摘要】
基于目标配流的城市离散交通网络设计R语言实现方法
:本专利技术针对基于目标配流的城市离散交通网络模型,提供了一种求解算法并使用R语言程序来实现,属于交通工程

技术介绍
:交通网络设计问题是一个考虑使用者路径选择行为,并且在给定约束条件下,选择改建或者新建的路段,从而使得某种网络性能最优化的问题。该研究问题是交通规划领域研究的重点和难点,极具挑战性,引起了许多学者的研究兴趣。交通网络设计问题属于典型的领导者-跟随者的双层规划问题,其上层问题为交通网络的某种性能最优化,下层问题通常为用户平衡问题。常见的网络性能包括系统阻抗、环境污染、备用能力、公平性、可达性、不确定性等。根据决策变量的不同,交通网络设计问题又分为离散交通网络设计、连续交通网络设计问题和混合交通网络设计问题。其中,离散交通网络设计是指在投入资金有限的情况下,采用定量方法研究在现有路网上选择新建某些路段的问题,属于交通规划的方案设计部分。在进行城市交通网络规划时,常常需要考虑交通流量在现有道路网上的合理分配。为了避免部分路段交通流量很大而部分路段交通流量很少的现象,要求对部分路段设置目标流量。一般来讲,希望得到的各路段的交通流量尽可能接近流量目标。为此西方一些城市借助现代计算机网络和信息技术对正行驶在城市交通网络上的车辆进行自动征收调节税,即自动对驶入流量已超标的路段的车辆征收惩罚性行车费用,对驶入流量远小于通行能力路段的车辆给予补贴。然而,对于路段上行驶的车辆进行惩罚性收费属于事后补救型措施,一方面需要较高的技术水平,另一方面需要道路使用者的理解和配合,在工程实践中实施难度很大,因此鲜见这方面的成功案例。本专利技术使用R语言实现模型求解,总体来说具有以下技术特点:1)开源免费:目前国外的交通规划类软件普遍价格高昂,而R语言是开源免费的;2)具有可操作性:R语言简单易用,适于一般的交通工程师和规划师学习采用;3)主动性:主动安全是交通安全规划的本质特征,本程序将交通安全评价提前到道路网络规划阶段;4)系统性:本程序考虑整个交通系统的安全性,而非单一路段或事故黑点。
技术实现思路
:技术问题:现阶段,交通规划软件基本都是国外产品,价格高昂并且操作复杂不易使用,特别是在交通规划中缺乏对目标配流的考虑。道路的设计流量即是最佳流量,高于该目标流量则道路过于拥挤,道路服务水平迅速下降,路基路面容易损坏,而低于该目标流量就不能充分利用道路资源。为了合理利用道路资源,使得各路段的服务水平接近设计目标,本专利技术拟建立以最小化实际服务水平和目标服务水平的均方误差为目标的城市离散交通网络设计方法,给出求解算法并使用R语言实现求解。技术方案:本专利技术提供了一种基于目标配流的城市离散交通网络设计的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交通需求量;为路段a的设计服务水平。步骤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.deljm(″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(0.9,24))))#添加各个路段的设计服务水平,这里假设都为0.9。colnames(e)=c(″Road","Roadorigin","Roaddestination","Time","Roadcapacity","Roadlength","Servicelevel″)e#1.3输入交通需求矩阵,第一列为起讫点对的标号(ODpair),第二列为起点标号(origin),第三列为终点标号(destination),第四列为交通需求(demand)。#也可以在Excel中复制,然后执行#d=read.delim(″clipboard")d=matrix本文档来自技高网
...

【技术保护点】
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交通需求量;为路段a的设计服务水平;步骤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(0.9,24))))#添加各个路段的设计服务水平,这里假设都为0.9colnames(e)=c(″Road″,″Roadorigin″,″Roaddestination″,″Time″,″Roadcapacity″,″Roadlength″,″Servicelevel″)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(V,x13,...

【专利技术属性】
技术研发人员:林宏志褚晨予
申请(专利权)人:东南大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1