如何在静态模型中按车辆类别定义限速

技术注解 #53
2020年11月

作者:Tessa Hayman

在某些情况下,限速可以根据车辆类型而不同;例如,在英国的单车道公路上,7.5吨以上的车辆只能以每小时50英里的速度行驶,但其它车辆可以每小时60英里的速度行驶。 你可以在宏观模型的延迟函数中进行编码,或者通过使用微观和中观模型的交通管理进行编码,如第一部分所解释的。

对于宏观模型,车辆的行驶时间(以及速度)是由流量延误函数、转弯罚函数和路口延误函数指定的。 这些函数可以读取的参数,如限速,以估计一条路段或一个转弯的出行时间。 要按车辆类型改变速度,你必须在这些函数中进行编辑。

在这个专业技巧中,我们将对英国单车道道路的规则进行编码,以获得流量延误函数。 对转弯罚函数也会采取类似的方法。 我们需要检查道路类型、车辆类型和车道数量。

要找出正在考虑的车辆类型,请使用:

				
					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
				
			

不要忘了,你可以使用表格视图将该函数应用于网络中的所有路段。 可以才这里找到: “窗口”>“窗口”> “表格视图” 进入流量延误函数列,改变最下面一行,所有路段都可以被更新。

如何在静态模型中按车辆类别定义限速

将底部一行设置为你所需要的VDF
将底部一行设置为你所需要的VDF

关于脚本和函数的更多信息,请参见 qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/ScriptIntro.html

或参加我们的编程培训课程

更多技术说明

如何在静态模型中按车辆类别定义限速

2020年11月:在之前的使用技巧中,我们分享了一种在动态模型中为不同类型的车辆不同限速编码的方法。 在这个月的专业技巧中,Tessa Hayman解释了如何对静态模型进行处理。

低排放区:评估它们的环境影响

仿真是支持有效排放政策制定的一个宝贵工具。 Aimsun可以帮助你比较不同措施的有效性并评估相关影响,因此你可以在管理交通的同时,将空气污染控制在法律允许的数值范围内。

Aimsun
  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

分享

引用Aimsun Next

Aimsun Next 20

Aimsun (2021). Aimsun Next 20 User’s Manual, Aimsun Next Version 20.0.3, Barcelona, Spain. Accessed on: May. 1, 2021. [In software].
Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html


Aimsun Next 8.4

Aimsun (2021). Aimsun Next 8.4 User’s Manual, Aimsun Next Version 8.4.4, Barcelona, Spain. Accessed on: May. 1, 2021. [In software]. Available: qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html

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