如何在Aimsun Next中为不同类型的车辆设置不同的限速
2020年10月:Tessa Hayman揭示了如何在动态模型中为不同类型的车辆设置不同的限速。
在某些情况下,每种类型的车辆的限速是不同的。 For instance, on a single-carriageway road in the UK, vehicles over 7.5 tonnes can only travel at 50 miles per hour but other vehicles can travel at 60 miles per hour. 你可以在Aimsun Next中通过对微观和中观模型使用交通管理,或在宏观模型的延迟函数中进行编码。
对于微观和中观模型,道路的速度是由 “限速 “参数设定的。 这可以通过名为 “减速 “的交通管理行动来为某个类别的车辆减速,你也可以用它来降低大型车辆的转向速度。
第1步:增加一个交通条件:“项目”> “交通管理” > “新建” > “交通条件”
第2步: 双击“交通条件”打开它。 选择”激活条件”:“总是”并勾选“在仿真预热中应用”。
第3步: 右击“交通条件”添加一个“减速“行动:“交通条件” > “新建” > “减速”
第4步: 选择“减速”参数。
在”减速“菜单中,你可以指定该行动适用于哪个路段/转弯,新的速度是多少,并选择只适用于哪个车辆类别。 在上面的例子中,我们选择了重型车类别,其中包括所有超过7.5吨的车辆类型。
上述方法对一次一个路段或一个转弯有效;对于一个有大量道路的模型来说,这将是一项艰巨的任务,因为在这些道路上,HGV有不同的速度限制。 然而,你也可以选择将速度变化应用于一组路段、一组转弯或一种道路类型。
然而,你可能想对一个道路类型的子集路段进行减速,例如每小时限速60英里的单车道道路,而不必将其作为一个单独的道路类型。
下面的脚本可以用来为一个给定的道路类型应用减速行动,同时也检查该路段的车道数。 你需要指定”交通条件“名称、新的速度、车辆类别和道路类型以及新速度适用的车道。 然后,该脚本将搜索模型中所有指定道路类型的路段,并为每个路段添加减速行动。
这个程序的伪代码:
Get/Create Traffic Condition
Get vehicle class
For all sections:
If section.roadtype==roadtype and section.numberoflanes:
Create speed reduction action
Add speed reduction to Traffic Condition
'''This script applies a speed reduction for all sections in a road type. The User must specify the road type and the new speed'''
TrafficConditionName="Speed Reduction"
RoadTypeName="SingleCarriageway60" #96kph
VehicleClassName="Heavy Class"
NewSpeed=80 #50mph
NumberofLanes=1
def createSpeedReduction(section,Speed, VehicleClassname): #Add a speed reduction action
change = GKSystem.getSystem().newObject("GKSpeedChange", model)
change.setSection(section)
change.setSpeed(str(Speed)) #set the new speed
VehicleClassType=model.getType("GKVehicleClass")
VehicleClass=model.getCatalog().findByName(VehicleClassname,VehicleClassType)
change.setVehicleClass(VehicleClass) #add a filter for the vehicle class
return change
def NewTrafficCondition():#add a new TrafficConditionName
cmd = model.createNewCmd( model.getType( "GKTrafficCondition" ))
model.getCommander().addCommand( cmd )
res = cmd.createdObject()
res.setActivationType(GKSimulationEvent.eAlways) #set it to be active throughout the modelled period
applyToWarmUpAtt = model.getColumn("GKPolicy::applyOnWarmupAtt") #set it to be active in the warm up
res.setDataValue(applyToWarmUpAtt, QVariant(True))
return res
def GetVehicleClass( model, name): # get the vehicle class object
vehicleClassType=model.getType("GKVehicleClass")
vehicleClass = model.getCatalog().findByName(name, vehicleClassType)
if vehicleClass == None:
print ("No Vehicle Class Found")
return None
return vehicleClass
condition=model.getCatalog().findByName(TrafficConditionName, model.getType("GKTrafficCondition"))
if condition==None: #find condition or add new one
condition=NewTrafficCondition()
condition.setName(TrafficConditionName)
sections=model.getCatalog().getObjectsByType(model.getType("GKSection"))
for section in sections: #for all sections in road type, if the section has x lanes, make a new speed change in the given Traffic Condition
section=sections[section]
nooflanes=section.getNbFullLanes() #get the number of full lanes for this section
if section.getRoadType().getName()==RoadTypeName and nooflanes==NumberofLanes:
speedreductionaction=createSpeedReduction(section,NewSpeed,VehicleClassName)
speedreductionaction.setName("Speed reduction for section %s" %(section.getId()))
condition.addChange(speedreductionaction)
print ("new change")
print ("done")
最后,你需要将”交通条件“应用到”场景“中,无论它是通过脚本还是手动添加的;打开场景目标,进入“策略和条件”页。 勾选新的交通条件。
2020年10月: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