Cómo definir límites de velocidad por clase de vehículo en modelos estáticos

Nota Técnica #53
Noviembre de 2020

Por Tessa Hayman

En ciertas situaciones, el límite de velocidad puede diferir según el tipo de vehículo; por ejemplo, en una carretera de una sola vía en el Reino Unido, los vehículos de más de 7,5 toneladas sólo pueden circular a 50 millas por hora, pero otros vehículos pueden circular a 60 millas por hora. Puede codificar esto dentro de las funciones de retardo para los modelos macroscópicos o mediante el uso de la gestión del tráfico para los modelos microscópicos y mesoscópicos como se explica en la parte 1.

En los modelos macroscópicos, el tiempo de viaje de un vehículo (y por lo tanto su velocidad) se especifica mediante la función de retraso de volumen, la función de penalización de giro y la función de retraso de cruce. Estas funciones pueden leer parámetros como el límite de velocidad para estimar el tiempo de viaje a lo largo de una sección o giro. Por lo tanto, para alterar la velocidad por tipo de vehículo, debes hacer ediciones dentro de estas funciones.

Para esta nota técnica, codificaremos las reglas del Reino Unido en carreteras de una sola calzada para una función de retraso de volumen. Se adoptaría un enfoque similar en las funciones de penalización de giro. Tendremos que comprobar el tipo de carretera, el tipo de vehículo y el número de carriles.

Para averiguar el tipo de vehículo que se está considerando, utiliza:

				
					vehicle = context.userClass.getVehicle()
				
			

Para saber el límite de velocidad que se está considerando, utiliza:

				
					SectionSpeed=section.getSpeed()
				
			

Para saber el número de carriles que se están considerando, utiliza:

				
					NbLanes=section.getNbFullLanes()
				
			

La velocidad a lo largo de una sección puede entonces ser especificada usando la siguiente función:

				
					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
				
			

Esto podría ampliarse con otros tipos de vehículos, como los vehículos con remolque, si fuera necesario.

Esta función freeflowspeed debería entonces ser integrada en el VDF. Por ejemplo, usando la función BPR. Sin embargo, es importante tener en cuenta la demora dentro del tiempo total del viaje. Por lo tanto, calcularemos el tiempo de viaje como el máximo del tiempo de viaje específico del volumen y el límite de velocidad del vehículo)

				
					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
				
			

No olvides que puedes usar la vista de tabla para aplicar la función a todas las secciones de la red. Esto se puede encontrar en Window > Windows > Table View. Al ir a la columna de la función de retraso de volumen y cambiar la fila inferior, se pueden actualizar todas las secciones.

Cómo definir límites de velocidad por clase de vehículo en modelos estáticos

Ponga la fila de abajo en su VDF deseado
Ponga la fila de abajo en su VDF deseado

Para obtener más información sobre los scripts y las funciones, consulta qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/ScriptIntro.html

o asiste a uno de nuestros cursos de Scripting.

Más notas técnicas

Cómo codificar glorietas: parte 2

Diciembre 2019: Tessa Hayman explica cómo ajustar parámetros en glorietas para garantizar una calibración y comportamiento precisos en modelos dinámicos.

Aimsun
  • ¿Tienes alguna pregunta? Ponte en contacto.

    ¡Estamos aquí para ayudarte!

  • ¿Tienes alguna pregunta? Ponte en contacto.

    ¡Estamos aquí para ayudarte!

SHARE

Citar Aimsun Next

Aimsun Next 23

Aimsun (2023). Aimsun Next 23 Manual del usuario, Aimsun Next Versión 23.0.0, Barcelona, España. Acceso: 19, 2023. [Online].
Disponible en: https://docs.aimsun.com/next/23.0.0/


Aimsun Next 20.0.5

Aimsun (2021). Aimsun Next 20.0.5 Manual del usuario, Aimsun Next Versión 20.0.3, Barcelona, España. Acceso: May. 1, 2021. [En software].
Disponible: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html

Aimsun Next 23

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

título = {​​​​​​​​Aimsun Next 23 User’s Manual}​​​​​,
autor = {​​​​​​​​Aimsun}​​​​​​​​,
edición = {​​​​​​​​​​​​​​​Aimsun Next 23.0.0}​​​​​​​​​​​​​​​,
domicilio = {​​​​​​​​​​​​​​​Barcelona, Spain}​​​​​​​​​​​​​​​,
año = {​​​​​​​​​​​​​​​2023. [Online]}​​​​​​​​​​​​​​​,
mes = {​​​​​​​​​​​​​​​Accessed on: Month, Day, Year}​​​​​​​​​​​​​​​,
url = {​​​​​​​​​​​​​​​https://docs.aimsun.com/next/23.0.0/}​​​​​​​​​​​​​​​,
}​​​​​​​​​​​​​​​


Aimsun Next 20.0.5

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

título = {​​​​​​​​Aimsun Next 20.0.5 User’s Manual}​​​​​​​​,
autor = {​​​​​​​​Aimsun}​​​​​​​​,
edición = {​​​​​​​​​​​​​​​Aimsun Next 20.0.5}​​​​​​​​​​​​​​​,
domicilio = {​​​​​​​​​​​​​​​Barcelona, Spain}​​​​​​​​​​​​​​​,
año = {​​​​​​​​​​​​​​​2021. [En software]}​​​​​​​​​​​​​​​,
mes = {​​​​​​​​​​​​​​​Accessed on: Month, Day, Year}​​​​​​​​​​​​​​​,
url = {​​​​​​​​​​​​​​​qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html}​​​​​​​​​​​​​​​,
}​​​​​​​​​​​​​​​

Aimsun Next 23

TY – COMP
T1 – Manual del usuario de Aimsun Next 23
A1 – Aimsun
ET – Aimsun Next Version 23.0.0
Y1 – 2023
Y2 – Acceso: Mes, Día, Año
CY – Barcelona, España
PB – Aimsun
UR – [En software]. Disponible en: https://docs.aimsun.com/next/23.0.0/


Aimsun Next 20.0.5

TY – COMP
T1 – Manual del usuario de Aimsun Next 20.0.5
A1 – Aimsun
ET – Aimsun Next Version 20.0.5
Y1 – 2021
Y2 – Acceso: Mes, Día, Año
CY – Barcelona, España
PB – Aimsun
UR – [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html