Turning Penalty Function

Technical Note #27

June 2017
By Dimitris Triantafyllos and Carles Illera

Did you know that in Aimsun 8.2 you can now make use of a Turning Penalty Function (TPF) that perceives the costs from a control plan selected in the macro scenario? Did you ever use Junction Delay Functions (JDF) to model stop/yield signs during a static assignment?

Below you will find examples of TPF and JDF functions that can be used at:

  • Signalized intersections
  • Yield/stop signs

Signalised Intersections

Aimsun 8.2 introduces the capability of the TPF to access the control plan information (green time and cycle duration) of a turn and to include this cost in the link cost calculation. You’ll find one example in the template named ‘TPF – Example for Signalized Intersection’. This cost function calculates, as a function of the Assigned Volume, the average delay of each signalized turn based on the statistical calculation found in the 2010 Highway Capacity Manual (HCM).

TPF Example:

Consider the orange-marked turn at the following signalized intersection. This movement receives 43 seconds of green time during 90-second cycle.

Figure 1. Turn green time and cycle time at signalized intersection 


1. First assign the desired Control Plan inside the Macro Assignment Scenario.


Figure 2. Definition of the Master Control Plan in the Static Assignment Scenario


2. Then assign the ‘TPF – Example for Signalized Intersection’ to the signalised turn by double-clicking on the turn object. See the following screenshot:


Figure 3. Definition of the TPF – Example for Signalized Intersection


3. After executing a Macro Assignment you can see the final cost calculated based on the assigned volume:

Figure 4. Cost of a turn post to a macro assignment


The Assigned Volume at this turn came out 339.62 PCUs, and the corresponding cost 0.20 minutes.


– Double-click on the TPF object to check the Python code. To plot a graph that shows how the cost value varies with the assigned volume of the turn, select one Static Assignment Experiment, one Vehicle Type and then just click on the desired turn.

Figure 5. A graph that shows how the cost varies with the assigned volume for a specific turn inside the Python-coded TPF


– If a Master Control Plan with various Control Plans is selected, then the average green time and cycle time will be calculated by taking into account the different plans, each weighted with its relative duration within the period covered in the scenario.

– If an Actuated Control Plan is assigned, then the TPF has access to the cycle (considered as fixed) and to the minimun and maximum green time defined for each phase in the control plan. You are responsible for implementing in the TPF a function that calculates the green duration to take into account in the computation of the delay.

Yield and Stop Signs

When a yield or stop sign is associated to a turn movement, then another type of cost function, called Junction Delay Function (JDF), can be assigned to this turn to model the travel time or the cost as a function of conflicting turn volumes, the own turn volume or the origin section’s volume.
JDF Example:

The template provides an example of such JDF that can be applied at yield and stop signs named ‘JDF – Example for Unsignalized Intersection’.

Figure 6. JDF – Example for Unsignalized Intersection


This JDF calculates the turn capacity depending on the conflicting turn volumes. Once the capacity has been determined, the JDF function evaluates the turn’s cost based on its Assigned Volume.

First, this function needs to be assigned to a specific turn:

Figure 7. JDF – Example for Unsignalized Intersection can be defined in the turn object
  • To apply this cost function to all turns with stop or yield signs, use the Table View tool to modify an attribute of multiple objects of the same type. Just select all turns and use the filter to only select turns with a yield or stop sign associated. Then assign the Junction Delay Function to all filtered turns.

Figure 8. Using the Table View to perform multiple changes at the same object type


Finally, launch a Macro Assignment Experiment to see the following results:

Figure 9. Cost of turns post to a macro assignment



This JDF “Example for Unsignalized Intersection” is an example and can only be used for turns with a dedicated lane.


Signalised Turns with Yield or Stop Signs

If a turn at a signalised intersection has conflicts with other movements during the green phase (e.g. permitted left turn), create a new JDF that captures the effects of both the signal timing and the conflicting volume.

More technical notes

Switching to Python 3

May 2021: Python 2 reached end-of-life status in January 2020. Tessa Hayman gives you some tips on getting your script Python 3-ready for optimum performance in Aimsun Next

Scripting with time series

March 2021: Tessa Hayman guides you through the complexity of handling time series via Python scripting and explains how to create your custom time series in a way that can be visualized in the UI.

  • Got a question? Get in touch.

    We are here to help!


Cite Aimsun Next

Aimsun Next 24

Aimsun (2024). Aimsun Next 24 User’s Manual, Aimsun Next Version 24.0.0, Barcelona, Spain. Accessed on: April. 16, 2024. [Online].

Available: https://docs.aimsun.com/next/24.0.0/

Aimsun Next 24

@manual {AimsunManual,
title = {Aimsun Next 24 User’s Manual},
author = {Aimsun},
edition = {Aimsun Next 24.0.0},
address = {Barcelona, Spain},
year = {2024. [Online]},
month = {Accessed on: Month, Day, Year},
url = {https://docs.aimsun.com/next/24.0.0},

Aimsun Next 24

T1 – Aimsun Next 24 User’s Manual
A1 – Aimsun
ET – Aimsun Next Version 24.0.0
Y1 – 2024
Y2 – Accessed on: Month, Day, Year
CY – Barcelona, Spain
PB – Aimsun
UR – [In software]. Available: