CN108804801A - 基于目标配流的城市离散交通网络设计r语言实现方法 - Google Patents

基于目标配流的城市离散交通网络设计r语言实现方法 Download PDF

Info

Publication number
CN108804801A
CN108804801A CN201810567701.1A CN201810567701A CN108804801A CN 108804801 A CN108804801 A CN 108804801A CN 201810567701 A CN201810567701 A CN 201810567701A CN 108804801 A CN108804801 A CN 108804801A
Authority
CN
China
Prior art keywords
road
flow
section
starting point
shortest path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810567701.1A
Other languages
English (en)
Other versions
CN108804801B (zh
Inventor
林宏志
褚晨予
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201810567701.1A priority Critical patent/CN108804801B/zh
Publication of CN108804801A publication Critical patent/CN108804801A/zh
Application granted granted Critical
Publication of CN108804801B publication Critical patent/CN108804801B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/18Network design, e.g. design based on topological or interconnect aspects of utility systems, piping, heating ventilation air conditioning [HVAC] or cabling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/40Business processes related to the transportation industry
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Geometry (AREA)
  • Mathematical Analysis (AREA)
  • Economics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Traffic Control Systems (AREA)

Abstract

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

Description

基于目标配流的城市离散交通网络设计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),第二列为路段起点标号(Road origin),第三列为路段终点标号(Road destination),第四列为该路段自由流时间(free flow time),第五列为道路通行能力(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","Road origin","Road destination","Time","Roadcapacity","Roadlength","Service level″)
e
#1.3输入交通需求矩阵,第一列为起讫点对的标号(OD pair),第二列为起点标号(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(″OD pair","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″)
x12
V=merge(V,x12,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对13的最短路径和流量
sp13=as.vector(b13)#转化为路段标号(Road)
x13=cbind(e[sp13,1],rep(d[2,4],length(sp13)))#路段标号和流量,算法中的迭代起点
colnames(x13)=c(″Road″,″V13″)
x13
V=merge(V,x13,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对42的最短路径和流量
sp42=as.vector(b42)#转化为路段标号(Road)
x42=cbind(e[sp42,1],rep(d[3,4],length(sp42)))#路段标号和流量,算法中的迭代起点
colnames(x42)=c(″Road″,″V42″)
x42
V=merge(V,x42,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对43的最短路径和流量
sp43=as.vector(b43)#转化为路段标号(Road)
x43=cbind(e[sp43,1],rep(d[4,4],length(sp43)))#路段标号和流量,算法中的迭代起点
colnames(x43)=c(″Road″,″V43″)
x43
V=merge(V,x43,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#当所有最短路径上的流量求和,得到初始流量
VS=rowSums(V[,seq(ncol(V)-3,ncol(V))])
VS
#步骤2:更新各路段的阻抗
t0=e[,4]
c=e[,5]
a=0.15
b=4
tp=function(v){
t0*(1+a*(v/c)^b)
}
repeat{
#步骤3:寻找下一个迭代方向
g2=add.edges(graph.empty(13),t(e[,2:3]),weight=tp(VS))#构造图,13为节点的个数,更新路段阻抗
b12=get.shortest.paths(g2,from=″1″,to="2",mode="out",output="epath″)$epath[[1]]#从起点1到终点2的最短路径
b13=get.shortest.paths(g2,from=″1″,to=″3",mode="out",output="epath")$epah[[1]]#从起点1到终点3的最短路径
b42=get.shortest.paths(g2,from="4″,to=″2",mode="out",output="epath")$epath[[1]]#从起点4到终点2的最短路径
b43=get.shortest.paths(g2,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″)
x12
V=merge(V,x12,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对13的最短路径和流量
sp13=as.vector(b13)#转化为路段标号(Road)
x13=cbind(e[sp13,1],rep(d[2,4],length(sp13)))#路段标号和流量,算法中的迭代起点colnames(x13)=c(″Road″,″V13″)
x13
V=merge(V,x13,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.ha(V)]=0
V
#OD对42的最短路径和流量
sp42=as.vector(b42)#转化为路段标号(Road)
x42=cbind(e[sp42,1],rep(d[3,4],length(sp42)))#路段标号和流量,算法中的迭代起点colnames(x42)=c(″Road",″V42″)
x42
V=merge(V,x42,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对43的最短路径和流量
sp43=as.vector(b43)#转化为路段标号(Road)
x43=cbind(e[sp43,1],rep(d[4,4],length(sp43)))#路段标号和流量,算法中的迭代起点colnames(x43)=c(″Road″,″V43″)
x43
V=merge(V,x43,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#当所有最短路径上的流量求和,得到迭代方向
VS2=rowSums(V[,seq(ncol(V)-3,ncol(V))])
VS2
#步骤4:计算迭代步长
step=function(lamda){
x2=VS2
x1=VS
q=x1+lamda*(x2-x1)
sum((x2-x1)*tp(q))
}
lamda=uniroot(step,c(0,1))$root#注意lamda的取值范围,步长不能太长
lamda
#步骤5:确定新的迭代起点
VS3=VS+lamda*(VS2-VS)
VS3
#步骤6:收敛性检验
if((sqrt(sum((VS3-VS)^2))/sum(VS))<1e-5)break
VS=VS3#如果不满足收敛条件则用新点VS3替代原点VS,如此循环直到收敛
}
#步骤7:输出平衡状态各路径的流量、通行时间和速度。
result=cbind(e[,1],round(VS,0),tp(VS),e[,6]/(tp(VS)/60))
colnames(rcsult)=c(″Road","Volume","Time","Speed″)
result
}
#步骤8:对可行方案,调用自定义的fw()函数,即Frank-Wolfe算法。输入为可行方案的图矩阵e和交通需求矩阵d。输出用户平衡状态时各路段的交通流量、通行时间和速度,并据此计算该方案下的网络速度方差。对所有方案计算速度方差后,输出速度方差最小的方案,即为最优方案。
de=c(20,21,22,23,24)
n=choose(length(de),2)
new=combn(de,2)
old=matrix(rep(c(1:19),each=n),byrow=T,nrow=19)#所有的方案
plan=rbind(old,new)
plan
nv=numeric(n)
nv
for(iin l:n)
{
con=fw(e[plan[,i],],d)
nv[i]=mean((con[,2]/e[plan[,i],5]-e[plan[,i],7])^2)#假设各路段的流量与通行能力的比值,即路段服务水平,计算所有路段服务水平与目标服务水平的均方误差;
}
nv#输出所有方案的均方误差
write.csv(cbind(nv),file="均方误差.csv″)
new[,which.min(nv)]#输出均方误差最小的建设方案
有益效果:本软件采用开源免费的R语言,并且方便交通工程师使用,特别是本发明提供一种基于目标配流的城市离散交通网络设计方法,目的是为了合理利用道路资源,使得各路段的服务水平接近设计目标。本发明建立了以最小化实际服务水平和目标服务水平的均方误差为目标的城市离散交通网络设计方法,给出了求解算法并使用R语言程序来实现。最后,采用交通网络分析中常用的Nguyen-Dupuis网络验证了该软件的有效性。
附图说明:
图1是迭代优化算法的流程图。
图2是Nguyen-Dupuis测试网络,其中虚线段为候选建设路段。
图3是不同方案下道路实际服务水平与目标服务水平的均方误差。
具体实施方式:
下面结合说明书附图,对本发明作进一步说明:
步骤1:城市离散交通网络设计模型
通常使用道路实际流量与该路段通行能力的比值作为道路的服务水平。假设路段a的流量为xa,通行能力为ca,则该路段的服务水平表示为xa/ca。本发明提出交通网络设计应该以各路段服务水平接近设计水平作为政策目标,即以实际服务水平和目标服务水平的均方误差最小为政策目标。另设路段a的设计服务水平为政策目标可以表示为:
其中n为交通网络中路段的数目。
本发明采用Wardrop用户均衡原理作为网络用户对不同政策的行为反应,即平衡状态时连接每个OD点对间的所有正被使用的路径有相同的行驶阻抗,且小于或等于任何未被选用的路径阻抗。本发明建立了一个双层规划模型用于城市离散交通网络设计,其上层为实际服务水平和目标服务水平的均方误差,下层为用户平衡模型。上层决策变量为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的设计服务水平。
考虑到拥挤效应,路段行驶时间为交通流量的函数ta(xa,ca),其中xa为路段交通流量。对于行驶时间函数ta(xa,ca)的研究,既有通过实测数据进行回归分析的,也有进行理论研究的。其中被广泛应用的是由美国公路局开发的函数,被称为BPR函数,形式为:
其中α和β为阻滞系数,在美国公路局交通流分配程序中,取值分别为α=0.15和β=4,也可以由实际数据回归分析求得,ca为路段a的通行能力。
步骤2:迭代优化算法
城市交通网络设计的双层规划模型是一个NP-hard的问题,是一个具有十分挑战的问题。学者们提出了很多方法,主要有迭代优化算法(IOA)、基于(近似)梯度的算法、遗传算法、模拟退火法等。本发明采用迭代优化算法,其上层采用枚举法,下层采用Frank-Wolfe算法。算法的基本思路是对上层满足约束的可行方案计算下层平衡网络流量和路段速度,再根据路段速度计算上层的目标函数,比较所有可行的方案,最后确定最优的目标函数方案。详细的迭代优化算法可以归纳如下:
Step 1:生成一个建设方案。判断其是否满足上层约束,如果不满足再生成一个新的建设方案,直到得到一个可行的建设方案y,令m=1。
Step 2:初始化:按照进行一次0-1交通流分配,得到各路段的流量令n=1。
Step 3:更新各路段的阻抗:
Step 4:寻找下一步的迭代方向:按照再进行一次0-1分配,得到一组附加交通量流量
Step 5:确定迭代步长:求满足下式的λ:
Step 6:确定新的迭代起点:
Step 7:收敛性检验:如果满足规定的收敛准则,如其中ε是预先给定的误差限值,则即为要求的平衡解,停止计算,否则令n=n+1,返回Step1。
Step 8:计算实际服务水平与目标水平的均方误差:根据公式(1)计算该方案下的均方误差Dm。转入Step 1,计算下一个可行方案。当所有可行方案计算完毕后,停止计算,从所有可行方案中寻找上层目标函数最优的建设方案。迭代优化算法的流程图如图1所示。
步骤3:R语言求解算法
#步骤1:初始化。按格式输入数据、函数和必要的包。
#1.1加载计算最短路径的包,准备调用dijkstra最短路径算法,注意igraph包首次需要安装,然后才能调用。
#install.packages(″igraph")
library(igraph)
options(digits=3)
#1.2创建图的距离矩阵,包含所有的候选路段。第一列为路段标号(Road),第二列为路段起点标号(Road origin),第三列为路段终点标号(Road destination),第四列为该路段自由流时间(free flow time),第五列为道路通行能力(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.9。
colnames(e)=c(″Road","Road origin","Road destination","Time","Roadcapacity","Roadlength","Service level″)
e
#1.3输入交通需求矩阵,第一列为起讫点对的标号(OD pair),第二列为起点标号(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(″OD pair","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″)
x12
V=merge(V,x12,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对13的最短路径和流量
sp13=as.vector(b13)#转化为路段标号(Road)
x13=cbind(e[sp13,1],rep(d[2,4],length(sp13)))#路段标号和流量,算法中的迭代起点colnames(x13)=c(″Road″,″V13″)
x13
V=merge(V,x13,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对42的最短路径和流量
sp42=as.vector(b42)#转化为路段标号(Road)
x42=cbind(e[sp42,1],rep(d[3,4],length(sp42)))#路段标号和流量,算法中的迭代起点colnames(x42)=c(″Road",″V42″)
x42
V=merge(V,x42,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.ha(V)]=0
V
#OD对43的最短路径和流量
sp43=as.vector(b43)#转化为路段标号(Road)
x43=cbind(e[sp43,1],rep(d[4,4],length(sp43)))#路段标号和流量,算法中的迭代起点colnames(x43)=c(″Road″,″V43″)
x43
V=merge(V,x43,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#当所有最短路径上的流量求和,得到初始流量
VS=rowSums(V[,seq(ncol(V)-3,ncol(V))])
VS
#步骤2:更新各路段的阻抗
t0=e[,4]
c=e[,5]
a=0.15
b=4
tp=function(v){
t0*(1+a*(v/c)^b)
}
repeat{
#步骤3:寻找下一个迭代方向
g2=add.edges(graph.empty(13),t(e[,2:3]),weight=tp(VS))#构造图,13为节点的个数,更新路段阻抗
b12=get.shortest.paths(g2,from="1″,to="2",mode="out″,output="epath")$epath[[1]]#从起点1到终点2的最短路径
b13=get.shortest.paths(g2,from=″1″,to=″3",mode="out",output=″epath″)$epath[[1]]#从起点1到终点3的最短路径
b42=get.shortest.paths(g2,from="4″,to="2"mode="out",output="epath")$epath[[1]]#从起点4到终点2的最短路径
b43=get.shortest.paths(g2,from=″4″,to="3",mode="out",output="epath″)$epah[[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″)
x12
V=merge(V,x12,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对13的最短路径和流量
sp13=as.vector(b13)#转化为路段标号(Road)
x13=cbind(e[sp13,1],rep(d[2,4],length(sp13)))#路段标号和流量,算法中的迭代起点
colnames(x13)=c(″Road″,″V13″)
x13
V=merge(V,x13,by="Road",all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对42的最短路径和流量
sp42=as.vector(b42)#转化为路段标号(Road)
x42=cbind(e[sp42,1],rep(d[3,4],length(sp42)))#路段标号和流量,算法中的迭代起点colnames(x42)=c(″Road″,″V42″)
x42
V=merge(V,x42,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对43的最短路径和流量
sp43=as.vector(b43)#转化为路段标号(Road)
x43=cbind(e[sp43,1],rep(d[4,4],length(sp43)))#路段标号和流量,算法中的迭代起点colnames(x43)=c(″Road″,″V43″)
x43
V=merge(V,x43,by="Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#当所有最短路径上的流量求和,得到迭代方向
VS2=rowSums(V[,seq(ncol(V)-3,ncol(V))])
VS2
#步骤4:计算迭代步长
step=function(1amda){
x2=VS2
x1=VS
q=x1+lamda*(x2-x1)
sum((x2-x 1)*tp(q))
}
lamda=uniroot(step,c(0,1))$root#注意lamda的取值范围,步长不能太长
lamda
#步骤5:确定新的迭代起点
VS3=VS+lamda*(VS2-VS)
VS3
#步骤6:收敛性检验
if((sqrt(sum((VS3-VS)^2))/sum(VS))<1e-5)break
VS=VS3#如果不满足收敛条件则用新点VS3替代原点VS,如此循环直到收敛
}
#步骤7:输出平衡状态各路径的流量、通行时间和速度。
result=cbind(e[,1],round(VS,0),tp(VS),e[,6]/(tp(VS)/60))
colnames(result)=c(″Road","Volume","Time","Speed″)
result
}
#步骤8:对可行方案,调用自定义的fw()函数,即Frank-Wolfe算法。输入为可行方案的图矩阵e和交通需求矩阵d。输出用户平衡状态时各路段的交通流量、通行时间和速度,并据此计算该方案下的网络速度方差。对所有方案计算速度方差后,输出速度方差最小的方案,即为最优方案。
de=c(20,21,22,23,24)
n=choose(length(de),2)
new=combn(de,2)
old=matrix(rep(c(1:19),each=n),byrow=T,nrow=19)#所有的方案
plan=rbind(old,new)
plan
nv=numeric(n)
nv
for(i in 1:n)
{
con=fw(e[plan[,i],],d)
nv[i]=mean((con[,2]/e[plan[,i],5]-e[plan[,i],7])^2)#假设各路段的流量与通行能力的比值,即路段服务水平,计算所有路段服务水平与目标服务水平的均方误差;
}
nv#输出所有方案的均方误差
write.csv(cbind(nv),file="均方误差.csv")
new[,which.min(nv)]#输出均方误差最小的建设方案
步骤4:算例分析
本发明采用交通网络分析中常用的Nguyen-Dupuis网络(图2)作为测试网络。道路参数列在表1中,其中路段编号20-24为候选的路段。为简化计算,本例假设政策制定者要求从5条候选道路中选择2条进行开工建设。交通需求矩阵如表2所示。假设候选路段的结合为A,则该算例的上层目标函数简化为:
表1Nguyen-Dupuis网络的路段参数
表2Nguyen-Dupuis网络的OD对交通需求
对所有可行方案进行交通流平衡分配后,可以得到该方案下各路段的实际交通流量,进而可得各路段的服务水平及其与目标服务水平的均方误差。从表3和图3可以看出,不同方案下,实际服务水平与设计服务水平的偏差区别很大,最大为修建路径20和23,均方误差为0.289,最小为修建路径20与24,均方误差为0.103。因此,为了设计实际服务水平与目标服务水平相差最小的交通网络,应该修建路径20与24。
表3不同方案下道路实际服务水平与目标服务水平的均方误差

Claims (1)

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),第二列为路段起点标号(Road origin),第三列为路段终点标号(Road destination),第四列为该路段自由流时间(free flow time),第五列为道路通行能力(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.9
colnames(e)=c(″Road″,″Road origin″,″Road destination″,″Time″,″Roadcapacity″,″Road length″,″Service level″)
e
#1.3输入交通需求矩阵,第一列为起讫点对的标号(OD pair),第二列为起点标号(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(″OD pair″,″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″)
x12
V=merge(V,x12,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对13的最短路径和流量
sp13=as.vector(b13)#转化为路段标号(Road)
x13=cbind(e[sp13,1],rep(d[2,4],length(sp13)))#路段标号和流量,算法中的迭代起点
colnames(x13)=c(″Road″,″V13″)
x13
V=merge(V,x13,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对42的最短路径和流量
sp42=as.vector(b42)#转化为路段标号(Road)
x42=cbind(e[sp42,1],rep(d[3,4],length(sp42)))#路段标号和流量,算法中的迭代起点
colnames(x42)=c(″Road″,″V42″)
x42
V=merge(V,x42,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对43的最短路径和流量
sp43=as.vector(b43)#转化为路段标号(Road)
x43=cbind(e[sp43,1],rep(d[4,4],length(sp43)))#路段标号和流量,算法中的迭代起点
colnames(x43)=c(″Road″,″V43″)
x43
V=merge(V,x43,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#当所有最短路径上的流量求和,得到初始流量
VS=rowSums(V[,seq(ncol(V)-3,ncol(V))])
VS
#步骤2:更新各路段的阻抗
t0=e[,4]
c=e[,5]
a=0.15
b=4
tp=function(V){
t0*(1+a*(v/c)^b)
}
repeat{
#步骤3:寻找下一个迭代方向
g2=add.edges(graph.empty(13),t(e[,2:3]),weight=tp(VS))#构造图,13为节点的个数,更新路段阻抗
b12=get.shortest.paths(g2,from=″1″,to=″2″,mode=″out″,output=″epath″)$epath[[1]]#从起点1到终点2的最短路径
b13=get.shortest.paths(g2,from=″1″,to=″3″,mode=″out″,output=″epath″)$epath[[1]]#从起点1到终点3的最短路径
b42=get.shortest.paths(g2,from=″4″,to=″2″,mode=″out″,output=″epath″)$epath[[1]]#从起点4到终点2的最短路径
b43=get.shortest.paths(g2,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″)
x12
V=merge(V,x12,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对13的最短路径和流量
sp13=as.vector(b13)#转化为路段标号(Road)
x13=cbind(e[sp13,1],rep(d[2,4],length(sp13)))#路段标号和流量,算法中的迭代起点
colnames(x13)=c(″Road″,″V13″)
x13
V=merge(V,x13,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对42的最短路径和流量
sp42=as.vector(b42)#转化为路段标号(Road)
x42=cbind(e[sp42,1],rep(d[3,4],length(sp42)))#路段标号和流量,算法中的迭代起点
colnames(x42)=c(″Road″,″V42″)
x42
V=merge(V,x42,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#OD对43的最短路径和流量
sp43=as.vector(b43)#转化为路段标号(Road)
x43=cbind(e[sp43,1],rep(d[4,4],length(sp43)))#路段标号和流量,算法中的迭代起点
colnames(x43)=c(″Road″,″V43″)
x43
V=merge(V,x43,by=″Road″,all=TRUE)#定义V为专门保存迭代起点的矩阵
V[is.na(V)]=0
V
#当所有最短路径上的流量求和,得到迭代方向
VS2=rowSums(V[,seq(ncol(V)-3,ncol(V))])
VS2
#步骤4:计算迭代步长
step=function(lamda){
x2=VS2
x1=VS
q=x1+lamda*(x2-x1)
sum((x2-x1)*tp(q))
}
lamda=uniroot(step,c(0,1))$root#注意lamda的取值范围,步长不能太长
lamda
#步骤5:确定新的迭代起点
VS3=VS+lamda*(VS2-VS)
VS3
#步骤6:收敛性检验
if((sqrt(sum((VS3-VS)^2))/sum(VS))<1e-5)break
VS=VS3#如果不满足收敛条件则用新点VS3替代原点VS,如此循环直到收敛
}
#步骤7:输出平衡状态各路径的流量、通行时间和速度
result=cbind(e[,1],round(VS,0),tp(VS),e[,6]/(tp(VS)/60))
colnames(result)=c(″Road″,″Volume″,″Time″,″Speed″)
result
}
#步骤8:对可行方案,调用自定义的fw()函数,即Frank-Wolfe算法:输入为可行方案的图矩阵e和交通需求矩阵d,输出用户平衡状态时各路段的交通流量、通行时间和速度,并据此计算该方案下的网络速度方差,对所有方案计算速度方差后,输出速度方差最小的方案,即为最优方案
de=c(20,21,22,23,24)
n=choose(length(de),2)
new=combn(de,2)
old=matrix(rep(c(1:19),each=n),byrow=T,nrow=19)#所有的方案
plan=rbind(old,new)
plan
nv=numeric(n)
nv
for(i in 1:n)
{
con=fw(e[plan[,i],],d)
nv[i]=mean((con[,2]/e[plan[,i],5]-e[plan[,i],7])^2)#假设各路段的流量与通行能力的比值,即路段服务水平,计算所有路段服务水平与目标服务水平的均方误差;
}
nv#输出所有方案的均方误差
write.csv(cbind(nv),file=″均方误差.csv″)
new[,which.min(nv)]#输出均方误差最小的建设方案。
CN201810567701.1A 2018-05-25 2018-05-25 基于目标配流的城市离散交通网络设计r语言实现方法 Active CN108804801B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810567701.1A CN108804801B (zh) 2018-05-25 2018-05-25 基于目标配流的城市离散交通网络设计r语言实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810567701.1A CN108804801B (zh) 2018-05-25 2018-05-25 基于目标配流的城市离散交通网络设计r语言实现方法

Publications (2)

Publication Number Publication Date
CN108804801A true CN108804801A (zh) 2018-11-13
CN108804801B CN108804801B (zh) 2023-06-09

Family

ID=64088778

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810567701.1A Active CN108804801B (zh) 2018-05-25 2018-05-25 基于目标配流的城市离散交通网络设计r语言实现方法

Country Status (1)

Country Link
CN (1) CN108804801B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472353A (zh) * 2019-08-20 2019-11-19 东南大学 基于主观福祉最大化的交通网络设计软件
CN110489871A (zh) * 2019-08-20 2019-11-22 东南大学 考虑新能源汽车渗透的环境影响评估软件
CN110930691A (zh) * 2019-10-23 2020-03-27 浙江大学 一种全自动驾驶环境下网络交通流双层控制方法
CN113269959A (zh) * 2021-04-23 2021-08-17 东南大学 一种基于变尺度梯度校正的随机用户均衡交通流分配方法
CN116777120A (zh) * 2023-08-16 2023-09-19 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种基于路网od对的城市道路移动源碳排放计算方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150262477A1 (en) * 2014-03-11 2015-09-17 Here Global B.V. Probabilistic Road System Reporting
CN107256632A (zh) * 2017-08-11 2017-10-17 上海交通大学 一种基于用户异质时间价值与拥堵费用预算的交通分配方法
CN107451363A (zh) * 2017-08-03 2017-12-08 上海交通大学 一种多目标均衡网络连续优化问题的计算方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150262477A1 (en) * 2014-03-11 2015-09-17 Here Global B.V. Probabilistic Road System Reporting
CN107451363A (zh) * 2017-08-03 2017-12-08 上海交通大学 一种多目标均衡网络连续优化问题的计算方法
CN107256632A (zh) * 2017-08-11 2017-10-17 上海交通大学 一种基于用户异质时间价值与拥堵费用预算的交通分配方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ELNAZMIANDOABCHI等: "Multi-objective discrete urban road network design", 《COMPUTERS & OPERATIONS RESEARCH》 *
高自友等: "城市交通网络设计问题中双层规划模型、方法及应用", 《交通运输系统工程与信息》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472353A (zh) * 2019-08-20 2019-11-19 东南大学 基于主观福祉最大化的交通网络设计软件
CN110489871A (zh) * 2019-08-20 2019-11-22 东南大学 考虑新能源汽车渗透的环境影响评估软件
CN110472353B (zh) * 2019-08-20 2023-07-18 东南大学 基于用户效用最大化的交通网络设计方法
CN110930691A (zh) * 2019-10-23 2020-03-27 浙江大学 一种全自动驾驶环境下网络交通流双层控制方法
CN113269959A (zh) * 2021-04-23 2021-08-17 东南大学 一种基于变尺度梯度校正的随机用户均衡交通流分配方法
CN113269959B (zh) * 2021-04-23 2022-04-15 东南大学 一种基于变尺度梯度校正的随机用户均衡交通流分配方法
CN116777120A (zh) * 2023-08-16 2023-09-19 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种基于路网od对的城市道路移动源碳排放计算方法
CN116777120B (zh) * 2023-08-16 2023-10-27 合肥综合性国家科学中心人工智能研究院(安徽省人工智能实验室) 一种基于路网od对的城市道路移动源碳排放计算方法

Also Published As

Publication number Publication date
CN108804801B (zh) 2023-06-09

Similar Documents

Publication Publication Date Title
CN108804801A (zh) 基于目标配流的城市离散交通网络设计r语言实现方法
CN108470444B (zh) 一种基于遗传算法优化的城市区域交通大数据分析系统与方法
CN105070042B (zh) 一种交通预测的建模方法
Meng et al. Intermodal hub-and-spoke network design: incorporating multiple stakeholders and multi-type containers
CN101436345B (zh) 基于TransCAD宏观仿真平台的港区道路交通需求预测系统
CN108776721A (zh) 一种基于目标配流的城市离散交通网络设计方法
CN108694278A (zh) 一种基于道路负载均衡的城市离散交通网络设计方法
CN108647475A (zh) 基于负载均衡的城市离散交通网络设计r语言实现方法
CN105761492B (zh) 一种基于网络流的大范围高速路网动态配流方法
CN108765944B (zh) 基于多重路径集的最优交通流预测方法与拥挤收费方法
CN111898793B (zh) 一种组合出行方式下考虑用户感知差异性的路径选择方法
CN103123704A (zh) 一种基于富网络属性路网的物流配送方法
CN110009906A (zh) 基于交通预测的动态路径规划方法
CN107103169B (zh) 一种用于满足出行续航要求的交通网络均衡计算方法
CN105930914A (zh) 基于起讫点距离的城市公交最优收费结构的收费确定方法
Wismans et al. Real time traffic models, decision support for traffic management
CN108776722A (zh) 一种基于设计速度的城市离散交通网络设计方法
CN109409950A (zh) 基于交通安全的最优收费定价软件
CN111008736A (zh) 用于新航线的开通决策方法及系统
Bui et al. Dynamic traffic congestion pricing mechanism with user-centric considerations
CN108647835A (zh) 基于设计速度的城市离散交通网络设计r语言实现方法
Zhang et al. Integrated path controlling and subsidy scheme for mobility and environmental management in automated transportation networks
CN116205559B (zh) 基于最优前沿的多式联运货运设施布点优化方法及系统
CN105427394B (zh) 基于试错法和机动车流量的拥堵收费最优费率确定方法
CN110489871A (zh) 考虑新能源汽车渗透的环境影响评估软件

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant