Definition von Höchstgeschwindigkeiten nach Fahrzeugklassen in statischen Modellen

Technische Mitteilung #53
November 2020

Von Tessa Hayman

In bestimmten Situationen können je nach Fahrzeugtyp unterschiedliche Geschwindigkeitsbegrenzungen gelten. Auf einbahnigen Landstraßen im Vereinigten Königreich beispielsweise beträgt die zulässige Höchstgeschwindigkeit für Fahrzeuge über 7,5 Tonnen 50 mph bzw. 80 km/h, für alle anderen Fahrzeuge dagegen 60 mph bzw. 100 km/h. Sie können dies für makroskopische Modelle in den CR-Funktionen codieren oder – bei mikroskopischen und mesoskopischen Modellen – wie in Teil 1 erläutert die Verkehrsmanagementfunktion verwenden.

Bei makroskopischen Modellen wird die Fahrzeit (und damit die Geschwindigkeit) eines Fahrzeugs durch CR-Funktionen (VDF, TPF, JDF) festgelegt. Diese Funktionen können zur Fahrzeitschätzung auf einer Strecke oder entlang eines Abbiegers entsprechende Parameter wie z. B. die geltenden Höchstgeschwindigkeiten auslesen. Um die Geschwindigkeit dem jeweiligen Fahrzeugtyp entsprechend zu ändern, müssen Sie diese Funktionen bearbeiten.

Bei diesem Profi-Tipp codieren wir die in Großbritannien auf einbahnigen Landstraßen geltenden Höchstgeschwindigkeitsregeln für eine CR-Funktion (VDF). Bei Abbieger-CR-Funktionen (TPF) ist die Vorgehensweise ähnlich. Zunächst müssen Sie den Straßentyp, den Fahrzeugtyp und die Fahrstreifenanzahl überprüfen.

Zur Ermittlung des entsprechenden Fahrzeugtyps verwenden Sie folgenden String:

				
					vehicle = context.userClass.getVehicle()
				
			

Zur Ermittlung der jeweiligen Höchstgeschwindigkeit verwenden Sie folgenden String:

				
					SectionSpeed=section.getSpeed()
				
			

Zur Ermittlung der Fahrstreifenanzahl verwenden Sie folgenden String:

				
					NbLanes=section.getNbFullLanes()
				
			

Die Geschwindigkeit auf einer Strecke kann anschließend mit folgender Funktion festgelegt werden:

				
					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
				
			

Diese kann bei Bedarf um weitere Fahrzeugtypen wie beispielsweise Anhängerfahrzeuge erweitert werden.

This freeflowspeed function should then be integrated into the VDF. For example using the BPR function. Dabei ist jedoch weiterhin die Verlustzeit innerhalb der Gesamtfahrzeit zu berücksichtigen. Die Reisezeit wird daher als maximale belastungspezifische Fahrzeit aus der zulässigen Fahrzeughöchstgeschwindigkeit berechnet.

				
					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
				
			

Denken Sie daran, dass Sie zur Anwendung der Funktion auf alle Strecken im Netz die Tabellenansicht verwenden können. Diese finden Sie unter Window > Windows > Table View. Zur Aktualisierung aller Strecken wechseln Sie in die Spalte „Volume Delay Function“ und geben die gewünschte Änderung in die unterste Zeile ein.

Definition von Höchstgeschwindigkeiten nach Fahrzeugklassen in statischen Modellen

Stellen Sie in der untersten Zeile die gewünschte CR-Funktion ein.
Stellen Sie in der untersten Zeile die gewünschte CR-Funktion ein.

For more information on scripting and functions, please see qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/ScriptIntro.html

or attend one of our Scripting courses.

More technical notes

DTA: Beschleunigen sie ihre due konvergenz

September 2016: Eine geringe Anzahl von Iterationen verringert die Gesamtberechnungszeit für die Ausführung einer DUE drastisch – Josep Perarnau zeigt Ihnen, wie Sie die Initialisierungszeit halbieren können, indem Sie statt der vollständigen Pfadzuweisungs-Ergebnisdatei eine Teilmenge verwenden.

Wie man Kreisverkehre kodiert – Teil 1

November 2019: Tessa Hayman erklärt verschiedene Methoden der Codierung von Kreisverkehren für verschiedene Kreisverkehre, um eine korrekte Spurnutzung und ein Spurwechselverhalten von der Ein- bis zur Ausfahrt zu gewährleisten.

  • Hast du eine Frage? Nimm Kontakt auf.

    Wir sind hier um zu helfen!

  • Hast du eine Frage? Nimm Kontakt auf.

    Wir sind hier um zu helfen!

TEILEN

Zitieren Aimsun Next

Aimsun Next 23

Aimsun (2023). Aimsun Next 23 User's Manual, Aimsun Next Version 23.0.0, Barcelona, Spanien. Zugriff am: July. 19, 2023. [Online].
Verfügbar: https://docs.aimsun.com/next/23.0.0/


Aimsun Next 20.0.5

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

Aimsun Next 23

@manual {​​​​​​​​AimsunManual,

title = {​​​​​​​​Aimsun Next 23 User's Manual}​​​​​,
author = {​​​​​​​​Aimsun}​​​​​​​​,
edition = {​​​​​​​​​​​​​​​Aimsun Next 23.0.0}​​​​​​​​​​​​​​​,
address = {​​​​​​​​​​​​​​​Barcelona, Spain}​​​​​​​​​​​​​​​,
year = {​​​​​​​​​​​​​​​2023. [Online]}​​​​​​​​​​​​​​​,
month = {​​​​​​​​​​​​​​​Accessed on: Month, Day, Year}​​​​​​​​​​​​​​​,
url = {​​​​​​​​​​​​​​​https://docs.aimsun.com/next/23.0.0/}​​​​​​​​​​​​​​​,
}​​​​​​​​​​​​​​​


Aimsun Next 20.0.5

@manual {​​​​​​​​AimsunManual,

title = {​​​​​​​​Aimsun Next 20.0.5 User's Manual}​​​​​​​​,
author = {​​​​​​​​Aimsun}​​​​​​​​,
edition = {​​​​​​​​​​​​​​​Aimsun Next 20.0.5}​​​​​​​​​​​​​​​,
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 23

TY - COMP
T1 - Aimsun Next 23 User's Manual
A1 - Aimsun
ET - Aimsun Next Version 23.0.0
Y1 - 2023
Y2 - Accessed on: Month, Day, Year
CY - Barcelona, Spain
PB - Aimsun
UR - [In software]. Verfügbar: https://docs.aimsun.com/next/23.0.0/


Aimsun Next 20.0.5

TY - COMP
T1 - Aimsun Next 20.0.5 User's Manual
A1 - Aimsun
ET - Aimsun Next Version 20.0.5
Y1 - 2021
Y2 - Accessed on: Month, Day, Year
CY - Barcelona, Spanien
PB - Aimsun
UR - [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html