如何在静态模型中按车辆类别定义限速
2020年11月:在之前的使用技巧中,我们分享了一种在动态模型中为不同类型的车辆不同限速编码的方法。 在这个月的专业技巧中,Tessa Hayman解释了如何对静态模型进行处理。
对于宏观模型,车辆的行驶时间(以及速度)是由流量延误函数、转弯罚函数和路口延误函数指定的。 这些函数可以读取的参数,如限速,以估计一条路段或一个转弯的出行时间。 要按车辆类型改变速度,你必须在这些函数中进行编辑。
在这个专业技巧中,我们将对英国单车道道路的规则进行编码,以获得流量延误函数。 对转弯罚函数也会采取类似的方法。 我们需要检查道路类型、车辆类型和车道数量。
要找出正在考虑的车辆类型,请使用:
vehicle = context.userClass.getVehicle()
要找出正在考虑的限速,请使用:
SectionSpeed=section.getSpeed()
要找出正在考虑的车道数量,请使用:
NbLanes=section.getNbFullLanes()
然后可以用以下函数指定路段的速度:
def freeFlowTravelTime(context, section, funcVolume):
model = context.experiment.getModel()
vehicleName = context.userClass.getVehicle().getName()
SectionSpeed=section.getSpeed()
NbLanes=section.getNbFullLanes()
if vehicleName==”HGV” and SectionSpeed==96 and NbLanes==1: #If its a HGV on a single carriageway road with a 96kph/60mph limit
speed=80
else:
speed=SectionSpeed
distance=section.length3D() / 1000.0 # Km
t0 = distance/speed # hour
return t0
如有必要,可将其扩大到其他车辆类型,如拖挂式车辆。
然后,这个自由流速函数应该被整合到VDF中。 例如,使用BPR函数。 然而,重要的是,仍然要考虑到总出行时间内的延误。 因此,我们将把出行时间计算为特定流量旅行时间和车辆限速的最大值。
def freeFlowVehicleTravelTime(context, section, funcVolume):
model = context.experiment.getModel()
vehicleName = context.userClass.getVehicle().getName()
SectionSpeed=section.getSpeed()
NbLanes=section.getNbFullLanes()
if vehicleName==”HGV” and SectionSpeed==96 and NbLanes==1: #If its a HGV on a single carriageway road with a 96kph/60mph limit
speed=80
else:
speed=SectionSpeed
distance=section.length3D() / 1000.0 # Km
t0 = distance/speed # hour
return t0
def freeFlowTravelTime(context, section, funcVolume):
model = context.experiment.getModel()
speed=SectionSpeed
distance=section.length3D() / 1000.0 # Km
t0 = distance/speed # hour
return t0
def vdf( context, section, funcVolume ):
#coefficients alpha and beta must be modified accordingly
alpha = 0.15
beta = 4.0
freeFlowVehicleTravelTime = freeFlowVehicleTravelTime(context, section, funcVolume)
freeFlowTravelTime=freeFlowTravelTime(context, section, funcVolume)
volume = funcVolume.getVolume()
addVolume = section.getAdditionalVolume()
capacity = section.getCapacity()
cost = max(freeFlowTravelTime * (1 + alpha * ((volume + addVolume) / capacity ) ** beta), freeFlowVehicleTravelTime)
return cost
不要忘了,你可以使用表格视图将该函数应用于网络中的所有路段。 可以才这里找到: “窗口”>“窗口”> “表格视图” 进入流量延误函数列,改变最下面一行,所有路段都可以被更新。
关于脚本和函数的更多信息,请参见 qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/ScriptIntro.html
或参加我们的编程培训课程。
2020年11月:在之前的使用技巧中,我们分享了一种在动态模型中为不同类型的车辆不同限速编码的方法。 在这个月的专业技巧中,Tessa Hayman解释了如何对静态模型进行处理。
仿真是支持有效排放政策制定的一个宝贵工具。 Aimsun可以帮助你比较不同措施的有效性并评估相关影响,因此你可以在管理交通的同时,将空气污染控制在法律允许的数值范围内。
分享
Aimsun Next 20
Aimsun Next 8.4
Aimsun Next 20
@manual {AimsunManual,
title = {Aimsun Next 20 User’s Manual},
author = {Aimsun},
edition = {Aimsun Next 20.0.3},
address = {Barcelona, Spain},
year = {2021. [In software]},
month = {Accessed on: Month, Day, Year},
url = {qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html},
}
Aimsun Next 8.4
@manual {AimsunManual,
title = {Aimsun Next 8.4 User’s Manual},
author = {Aimsun},
edition = {Aimsun Next 8.4.4},
address = {Barcelona, Spain},
year = {2021. [In software]},
month = {Accessed on: Month, Day, Year},
url = {qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html},
}
Aimsun Next 20
TY – COMP
T1 – Aimsun Next 20 User’s Manual
A1 – Aimsun
ET – Aimsun Next Version 20.0.3
Y1 – 2021
Y2 – Accessed on: Month, Day, Year
CY – Barcelona, Spain
PB – Aimsun
UR – [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html
Aimsun Next 8.4
TY – COMP
T1 – Aimsun Next 8.4 User’s Manual
A1 – Aimsun
ET – Aimsun Next Version 8.4.4
Y1 – 2021
Y2 – Accessed on: Month, Day, Year
CY – Barcelona, Spain
PB – Aimsun
UR – [In software]. Available: qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html