Unlocking the power of Path Assignment Plans
Marga Delgado explains how the the Path Assignment Plan feature in Aimsun Next gives you unparalleled flexibility in reusing previously calculated paths.
Von Tessa Hayman
Mai 2021
Mit der aktuellen Version von Aimsun Next 20 besteht jetzt die Möglichkeit, Aimsun Next mit Python 3 zu . verwenden. Es gibt jedoch einige wesentliche Unterschiede zwischen Python 2 und Python 3, auf die Sie achten sollten, wenn Sie mit der Konvertierung Ihrer Modelle und Skripte beginnen. Diese technische Mitteilung erläutert die wichtigsten Unterschiede und zeigt Ihnen, wie Sie Ihr Python-2-Skript aktualisieren, um es Python-3–fähig zu machen.
Python 2 wurde im Januar 2020 eingestellt,was bedeutet, dass es keine weiteren Updates oder Bugfixes und vor allem keine Sicherheitspatches mehr erhält. Wir empfehlen daher, für Neuentwicklungen nur noch Python 3 zu verwenden. Ein Großteil des Python–3-Codes in der Aimsun-Software kann auch in Python 2 verwendet werden. Es kann jedoch sein, dass Ihr altes Skript beider Verwendung mit Python 3 – insbesondere im Zusammenhang mit Druckanweisungen – zu Fehlern führt!
Neben den Druckanweisungen sollten Sie die wichtigsten Unterschiede kennen, damit Sie überprüfen können, was geändert werden muss, wenn Sie dasselbe Skript oder dieselbe Kostenfunktion für mehrere Modelle verwenden möchten, da einige Änderungen in Ihrem Skript unter Umständen nicht zu Fehlerausgaben führen.
Die meisten Änderungen betreffen die Druckanweisungen. In Python 3 sollten Druckanweisungen in Klammern gesetzt werden..
print “hello”
print (“hello”)
In Python 2 wurde bei einer Division zweier ganzzahliger Variablen ein ganzzahliger Wert gebildet. In Python 3 wurde dies dahingehend geändert, dass jetzt ein Fließkommawert ausgegeben wird, was vor einem der häufigsten Verwechslungsfehler durch den Anwender schützt.
Dies kann bei ganzzahligen Divisionen in Ihrem Skript zu erheblichen Auswirkungen führen.
5/3=1
5/3=1.6666...
In Python 2 musste bei einer Zeichenkette mit einem vorangestellten „u“ angegeben werden, ob diese in Unicode gespeichert werden soll.. In Python 3 werden Zeichenketten nun standardmäßig in Unicode gespeichert.
u“café”
“café”
Zur Iteration über eine Objektmenge in einer Liste oder for-Schleife wird in Python 2 oftmals „xrange()“ verwendet. Dies ist sinnvoll bei einmaligen Operationen, kann aber bei mehrmaliger Wiederholung ineffizient werden, da der Bereich dabei immer wieder neu erzeugt wird.Außerdem ist keine Verwendung bei Funktionen möglich, die auf Listen angewendet werden. Daher erfolgte ein Ersatz durch „range()“, das ein Bereichsobjekt erzeugt, welches sich eher wie eine Liste verhält.
for x in xrange():
for x in range():
Die Iteration über Wörterbuchschlüssel wurde an die Iteration über Listen angeglichen. „.iterkeys()“wird daher nicht mehr benötigt und Sie können stattdessen direkt über die Schlüssel iterieren. Zur Iteration über die Werte können Sie „.values()“ anstelle von „itervalues()“ verwenden.
for x in dict.iterkeys():
for x in dict.itervalues():
for x in dict:
for x in dict.values():
Ausnahmen können ausgelöst werden, um den Anwender auf einen Fehler aufmerksam zu machen und dem Skript mitzuteilen, wie es im Falle eines Fehlers weiter verfahren soll. In Python 3 müssen diese Ausnahmen in Klammern gesetzt werden.
raise IOError, “file error”
raise IOError(“file error”)
„Try“ und „except“ werden verwendet, um den Code auf Fehler zu testen und diese entsprechend zu beheben. Mit dem „try“-Block können Sie einen Codebaustein auf Fehler testen und mit dem „except“-Block den Fehler anschließend beheben. Sie können in der Ausnahme die Ausführung einer bestimmten Aktion festlegen, wenn ein bestimmter Fehler auftritt. Die Syntax für die „except“-Anweisung muss in Python 3 jetzt ein „as“ enthalten.
Beispiel:
try:
print(x)
except NameError as err:
print("x is not defined")
print(err)
except:
print("Something else")
Die Syntax der „except“-Zeile wurde so geändert, dass sie jetzt ein „as“ enthält und in diesem Beispiel zur folgenden Druckausgabe führt:
x is not defined
name ‚x‘ is not defined
except NameError, err:
except NameError as err:
Mit „Next“ können Sie das nächste Element in einem Iterator zurückgeben. In Python 2 konnte dies bisher mit „List.next()“ und „next(List)“ angegeben werden, in Python 3 ist nur noch die letztere Syntax möglich.
X=next(List) or
X=List.next()
X =next(List)
In Python 2 bestand die Möglichkeit, dass die in einer for-Schleifeverwendete iterierte Variable in den globalen Namensraum überlaufen konnte. Konkret heißt das, dass die Variable in der for-Schleife diesen Wert bei Verwendung desselben Variablennamens vor und nach der for-Schleife mit dem Endwert der Schleifenvariable überschreiben konnte.
Beispiel:
variable = 0
print 'before: variable =', variable
print 'for-loop: ', [variable for variable in range(5)]
print 'after: variable =', variable
before: variable = 0
for-loop: [0, 1, 2, 3, 4]
after: variable = 4
before: variable = 0
comprehension: [0, 1, 2, 3, 4]
after: variable = 0
Marga Delgado explains how the the Path Assignment Plan feature in Aimsun Next gives you unparalleled flexibility in reusing previously calculated paths.
Dimitris Triantafyllos explains how to create speed contour plots in Aimsun Next to show the time, location, and subsequent propagation and dispersal of congestion on the highway.
TEILEN
Aimsun Next 23
Aimsun Next 20.0.5
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