CN108647475A - 基于负载均衡的城市离散交通网络设计r语言实现方法 - Google Patents
基于负载均衡的城市离散交通网络设计r语言实现方法 Download PDFInfo
- Publication number
- CN108647475A CN108647475A CN201810567702.6A CN201810567702A CN108647475A CN 108647475 A CN108647475 A CN 108647475A CN 201810567702 A CN201810567702 A CN 201810567702A CN 108647475 A CN108647475 A CN 108647475A
- 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
Links
- 238000013461 design Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 47
- 238000005457 optimization Methods 0.000 claims abstract description 10
- 238000010276 construction Methods 0.000 claims abstract description 9
- 239000011159 matrix material Substances 0.000 claims description 52
- 230000006870 function Effects 0.000 claims description 36
- 239000013598 vector Substances 0.000 claims description 30
- 238000012360 testing method Methods 0.000 claims description 6
- 230000002596 correlated effect Effects 0.000 claims description 3
- 238000009795 derivation Methods 0.000 abstract description 5
- 238000003012 network analysis Methods 0.000 abstract description 2
- 238000011160 research Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000611 regression analysis Methods 0.000 description 2
- 206010027146 Melanoderma Diseases 0.000 description 1
- 206010039203 Road traffic accident Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003912 environmental pollution Methods 0.000 description 1
- 238000001802 infusion Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000002922 simulated annealing Methods 0.000 description 1
- 230000009885 systemic effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/40—Business processes related to the transportation industry
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- General Physics & Mathematics (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Marketing (AREA)
- Development Economics (AREA)
- Computer Hardware Design (AREA)
- Game Theory and Decision Science (AREA)
- Entrepreneurship & Innovation (AREA)
- General Engineering & Computer Science (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明针对基于道路负载均衡的城市离散交通网络模型,提供了一种求解算法并使用R语言程序来实现。在城市交通网络规划时,为了均衡利用道路资源,使各路段服务水平保持在一个相近的水平,本发明建立了一个基于道路负载均衡的城市离散交通网络设计方法。主要步骤包括:(1)建立城市离散交通网络设计的双层规划模型,上层目标为道路负载均衡,约束条件为资金预算,决策变量为候选路段的建设方案,下层为用户均衡;(2)采用迭代优化算法对模型进行求解;(3)设计R语言程序来实现求解方法;(4)结合交通网络分析中常用的Nguyen‑Dupuis网络描述了具体实施方式和该方法的有效性。使用R语言来实现模型的求解具有开源免费、可操作性强等技术优势。
Description
技术领域:
本发明针对基于道路负载均衡的城市离散交通网络模型,提供了一种求解算法并使用R语言程序来实现,属于交通工程技术领域。
背景技术:
交通网络设计问题是一个考虑使用者路径选择行为,并且在给定约束条件下,选择改建或者新建的路段,从而使得某种网络性能最优化的问题。该研究问题是交通规划领域研究的重点和难点,极具挑战性,引起了许多学者的研究兴趣。交通网络设计问题属于典型的领导者-跟随者的双层规划问题,其上层问题为交通网络的某种性能最优化,下层问题通常为用户平衡问题。常见的网络性能包括***阻抗、环境污染、备用能力、公平性、可达性、不确定性等。根据决策变量的不同,交通网络设计问题又分为离散交通网络设计、连续交通网络设计问题和混合交通网络设计问题。其中,离散交通网络设计是指在投入资金有限的情况下,采用定量方法研究在现有路网上选择新建某些路段的问题,属于交通规划的方案设计部分。为了均衡利用道路资源,为了给道路使用者提供相似的驾驶环境,为了提高交通网络的可持续性和安全性,本发明建立了以道路负载均衡为目标的城市离散交通网络设计方法,并给出了求解算法。
本发明使用R语言实现模型求解,总体来说具有以下技术特点:1)开源免费:目前国外的交通规划类软件普遍价格高昂,而R语言是开源免费的;2)具有可操作性:R语言简单易用,适于一般的交通工程师和规划师学习采用;3)科学性:本软件的路段交通流量预测采用了广泛接受的Wardrop用户均衡原理;4)***性:本程序考虑整个交通***的安全性,而非单一路段或事故黑点。
发明内容:
技术问题:现阶段,交通规划软件基本都是国外产品,价格高昂并且操作复杂不易使用,特别是实际交通网络中常常存在道路负载不均衡的问题,即部分路段交通流量很大,而部分路段交通流量很少,该问题导致交通网络的可持续性和安全性降低。首先,由于长期超负荷运行,拥挤道路的路基和路面都易受到损坏,降低该路段的通行能力,降低交通网络的可持续性。其次,由于各路段的驾驶环境不同,容易诱发交通事故,降低交通网络的安全性。因此,在交通网络规划阶段,应该建立以道路负载均衡为目标的交通网络设计方法,建立城市离散交通网络模型并且设计求解模型的R语言方法。
技术方案:本发明提供了一种基于道路负载均衡的城市离散交通网络设计的R语言实现方法,主要包括以下步骤:
步骤1:建立城市离散交通网络设计模型。本发明采用Wardrop用户均衡原理作为网络用户对不同政策的行为反应,建立了一个双层规划模型用于城市离散交通网络设计,其上层为道路负载均衡,下层为用户平衡模型。上层决策变量为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),第二列为路段起点标号(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)colnames(e)=c(″Road″,″Road origin″,″Road destination″,″Time″,″Roadcapacity″,″Road length″)
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]=var(con[,2]/e[plan[,i],5])#假设各路段的流量与通行能力的比值,即路段负载,计算所有路段负载的方差;
}
nv#输出所有方案的方差
new[,which.min(nv)]#输出方差最小的建设方案
有益效果:本软件采用开源免费的R语言,并且方便交通工程师使用,特别是提供一种基于道路负载均衡的城市离散交通网络设计方法,目的是为了均衡利用道路资源,为了给道路使用者提供相似的驾驶环境,为了提高交通网络的可持续性和安全性。本发明建立了以道路负载均衡为目标的城市离散交通网络设计方法,给出了求解算法并设计了R语言实现方法。最后,采用交通网络分析中常用的Nguyen-Dupuis网络验证了该软件的有效性。
附图说明:
图1是迭代优化算法的流程图。
图2是Nguyen-Dupuis测试网络,其中虚线段为候选建设路段。
图3是不同方案下道路负载均衡的水平。
具体实施方式:
下面结合说明书附图,对本发明作进一步说明:
步骤1:城市离散交通网络设计模型
通常使用道路实际流量与该路段通行能力的比值作为道路的负载水平。假设路段a的流量为xa,通行能力为ca,则该路段的负载水平表示为xa/ca。本发明提出交通网络设计应该以各路段负载水平保持均衡作为政策目标,即以各路段负载水平的方差最小为政策目标,表示为:
其中n为交通网络中路段的数目。考虑到拥挤效应,路段行驶时间为交通流量的函数ta(xa),其中xa为路段交通流量。
本发明采用Wardrop用户均衡原理作为网络用户对不同政策的行为反应,建立了一个双层规划模型用于城市离散交通网络设计,其上层为道路负载均衡,下层为用户平衡模型。上层决策变量为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交通需求量。
对于行驶时间函数ta(xa,ca)的研究,既有通过实测数据进行回归分析的,也有进行理论研究的。其中被广泛应用的是由美国公路局(Bureau ofPublic Road,BPR)开发的函数,被称为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。转入Step1,计算下一个可行方案。当所有可行方案计算完毕后,停止计算,从所有可行方案中寻找上层目标函数最优的建设方案。迭代优化算法的流程图如图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)colnames(e)=c(″Road″,″Road origin″,″Road destination″,″Time″,″Roadcapacity″,″Road length″)
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.ha(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]=var(con[,2]/e[plan[,i],5])#假设各路段的流量与通行能力的比值,即路段负载,计算所有路段负载的方差;
}
nv#输出所有方案的方差
new[,which.min(nv)]#输出方差最小的建设方案
步骤4:算例分析
本发明采用交通网络分析中常用的Nguyen-Dupuis网络(图2)作为测试网络。道路参数列在表1中,其中路段编号20-24为候选的路段。为简化计算,本例假设政策制定者要求从5条候选道路中选择2条进行开工建设。交通需求矩阵如表2所示。假设候选路段的结合为A,则该算例的上层目标函数简化为:
表1 Nguyen-Dupuis网络的路段参数
表2 Nguyen-Dupuis网络的OD对交通需求
对所有可行方案进行交通流平衡分配后,可以得到该方案下各路段的实际交通流量,进而可得各路段的负载水平及整个交通网络的负载均衡水平。从表3和图3可以看出,不同方案下,网络负载均衡水平相差较大,最大为修建路径20和23,道路负载的方差为0.265,最小为修建路径20与24,道路负载的方差为0.095。因此,为了设计道路负载最为均衡的交通网络,应该修建路径20与24。
表3不同方案下道路网络的负载均衡水平
Claims (1)
1.本发明针对基于道路负载均衡的城市离散交通网络设计模型,设计了一种R语言求解方法,涉及步骤如下:
步骤1:建立城市离散交通网络设计模型,本发明采用Wardrop用户均衡原理作为网络用户对不同政策的行为反应,建立了一个双层规划模型用于城市离散交通网络设计,其上层为道路负载均衡,下层为用户平衡模型,上层决策变量为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),第二列为路段起点标号(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)
colnames(e)=c(″Road″,″Road origin″,″Road destination″,″Time″,″Roadcapacity″,″Road length″)
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.ha(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(iin1:n)
{
con=fw(e[plan[,i],],d)
nv[i]=var(con[,2]/e[plan[,i],5])#假设各路段的流量与通行能力的比值,即路段负载,计算所有路段负载的方差;
}
nv#输出所有方案的方差
new[,which.min(nv)]#输出方差最小的建设方案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810567702.6A CN108647475B (zh) | 2018-05-25 | 2018-05-25 | 基于负载均衡的城市离散交通网络设计r语言实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810567702.6A CN108647475B (zh) | 2018-05-25 | 2018-05-25 | 基于负载均衡的城市离散交通网络设计r语言实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108647475A true CN108647475A (zh) | 2018-10-12 |
CN108647475B CN108647475B (zh) | 2023-05-16 |
Family
ID=63759426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810567702.6A Active CN108647475B (zh) | 2018-05-25 | 2018-05-25 | 基于负载均衡的城市离散交通网络设计r语言实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108647475B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489871A (zh) * | 2019-08-20 | 2019-11-22 | 东南大学 | 考虑新能源汽车渗透的环境影响评估软件 |
CN110930691A (zh) * | 2019-10-23 | 2020-03-27 | 浙江大学 | 一种全自动驾驶环境下网络交通流双层控制方法 |
CN112634622A (zh) * | 2020-12-30 | 2021-04-09 | 西南交通大学 | 一种路径流量计算方法、装置、设备及可读存储介质 |
CN113435635A (zh) * | 2021-06-17 | 2021-09-24 | 东南大学 | 疫情防控导向的高速公路网进口匝道流量控制软件 |
CN113840007A (zh) * | 2021-09-28 | 2021-12-24 | 中国工商银行股份有限公司 | 负载均衡方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427114B1 (en) * | 1998-08-07 | 2002-07-30 | Dinbis Ab | Method and means for traffic route control |
CN104499393B (zh) * | 2014-12-11 | 2016-09-28 | 大连理工大学 | 均衡公交车乘客和私家车出行成本的公交专用道规划方法 |
CN106257504A (zh) * | 2016-07-29 | 2016-12-28 | 华南理工大学 | 一种基于均衡配流模型的brt乘客出行效益优化方法 |
-
2018
- 2018-05-25 CN CN201810567702.6A patent/CN108647475B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427114B1 (en) * | 1998-08-07 | 2002-07-30 | Dinbis Ab | Method and means for traffic route control |
CN104499393B (zh) * | 2014-12-11 | 2016-09-28 | 大连理工大学 | 均衡公交车乘客和私家车出行成本的公交专用道规划方法 |
CN106257504A (zh) * | 2016-07-29 | 2016-12-28 | 华南理工大学 | 一种基于均衡配流模型的brt乘客出行效益优化方法 |
Non-Patent Citations (2)
Title |
---|
WU JUAN等: "Genetic Algorithm for Multiuser Discrete Network Design Problem under Demand Uncertainty", 《MATHEMATICAL PROBLEMS IN ENGINEERING》 * |
彭莹: "《路网运行效率最优的信号配时模型》", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489871A (zh) * | 2019-08-20 | 2019-11-22 | 东南大学 | 考虑新能源汽车渗透的环境影响评估软件 |
CN110930691A (zh) * | 2019-10-23 | 2020-03-27 | 浙江大学 | 一种全自动驾驶环境下网络交通流双层控制方法 |
CN112634622A (zh) * | 2020-12-30 | 2021-04-09 | 西南交通大学 | 一种路径流量计算方法、装置、设备及可读存储介质 |
CN112634622B (zh) * | 2020-12-30 | 2021-09-28 | 西南交通大学 | 一种路径流量计算方法、装置、设备及可读存储介质 |
CN113435635A (zh) * | 2021-06-17 | 2021-09-24 | 东南大学 | 疫情防控导向的高速公路网进口匝道流量控制软件 |
CN113840007A (zh) * | 2021-09-28 | 2021-12-24 | 中国工商银行股份有限公司 | 负载均衡方法及装置 |
CN113840007B (zh) * | 2021-09-28 | 2022-10-18 | 中国工商银行股份有限公司 | 负载均衡方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108647475B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647475A (zh) | 基于负载均衡的城市离散交通网络设计r语言实现方法 | |
CN108804801A (zh) | 基于目标配流的城市离散交通网络设计r语言实现方法 | |
Meng et al. | Intermodal hub-and-spoke network design: incorporating multiple stakeholders and multi-type containers | |
CN108694278A (zh) | 一种基于道路负载均衡的城市离散交通网络设计方法 | |
CN105761492B (zh) | 一种基于网络流的大范围高速路网动态配流方法 | |
JP4481235B2 (ja) | ゾーン別発生・集中交通量とod交通量の高精度推定方法 | |
CN111582750B (zh) | 一种轨道交通反向乘客识别及乘车班次确定方法及*** | |
CN110009906A (zh) | 基于交通预测的动态路径规划方法 | |
CN106682769A (zh) | 一种产品车辆路径实现方法和装置 | |
CN108776721A (zh) | 一种基于目标配流的城市离散交通网络设计方法 | |
CN111898793B (zh) | 一种组合出行方式下考虑用户感知差异性的路径选择方法 | |
CN108647837B (zh) | 考虑出行者路径选择惰性的网络交通流预测方法 | |
CN108876042A (zh) | 新型交通分布与交通流分配组合模型的r语言处理方法 | |
CN106197455A (zh) | 一种城市交通路网实时动态多路口路径导航量子搜索方法 | |
CN107103169B (zh) | 一种用于满足出行续航要求的交通网络均衡计算方法 | |
CN108765944A (zh) | 基于多重路径集的最优交通流预测方法与拥挤收费方法 | |
CN112987757A (zh) | 一种货物多式联运的路径规划方法 | |
CN109409950A (zh) | 基于交通安全的最优收费定价软件 | |
Shermukhamedov et al. | Solution of the problem of optimal distribution of cargo flows in the region and the development of its transport network | |
CN111008736A (zh) | 用于新航线的开通决策方法及*** | |
CN108647835A (zh) | 基于设计速度的城市离散交通网络设计r语言实现方法 | |
CN113627644A (zh) | 一种运输价格不确定下多式联运运输路径的鲁棒优化方法 | |
El-Gharably et al. | Optimization using simulation of the vehicle routing problem | |
CN110457012A (zh) | 用于可持续交通网络设计的多属性决策软件 | |
Gangeraj et al. | Estimation of origin–destination matrix from traffic counts based on fuzzy logic |
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 |