Stellen Sie sich vor, Ihre Kostenfunktionen haben mehrere Komponenten, wie z.B. Entfernung, Fahrzeit oder Mautgebühren. Wenn Sie sie alle einzeln auswerten und als Output (zusätzlich zu den Gesamtkosten) anzeigen möchten, können Sie so viele Makrofunktionskomponenten deklarieren, wie Sie benötigen, um jeden der zusätzlichen Outputs bei der Ausführung einer Zuweisung zu erzeugen.
Sie können neue Makrofunktionskomponenten im gleichen Ordner wie die Kostenfunktionen anlegen.
Es gibt zwei Arten von Komponenten: nicht-abgeleitete und abgeleitete.
Nicht abgeleitete Komponenten basieren auf der Bewertung eines Teils der Kostenfunktion (einer Unterfunktion), und sie wird durch den Funktionsstring erkannt.
Das heißt, der Editor für Makrofunktionskomponenten wird ein Schlüsselwort enthalten, das mit dem Namen einer Unterfunktion (in allen Makrokostenfunktionen) übereinstimmen muss:
Volumenverzögerungsfunktionen für Sektionen und Turning Penalty und Junction Delay für Runden).
Um z.B. die Komponenten „Entfernung (km)“ und „Zeit (h)“ zu definieren: Legen Sie in der Makrofunktionskomponente den Funktionsstring „Entfernung“ bzw. „Zeit“ als Schlüsselwörter fest.
Nun müssen wir die Definition dieser Komponenten in allen Makrokostenfunktionen einführen (Vorsicht bei Drehungen, ihre Standarddrehungsstrafe ist fest programmiert, so dass sie keine Komponenten enthält), damit die Komponente in allen Abschnitten und Drehungen bewertet werden kann. Im Funktionscode ist die letzte Funktion (in den Bildern ‚def vdf‘ und ‚def tpf‘) die Hauptfunktion. Zuvor haben wir die Unterfunktionen „Entfernung“ und „Zeit“ definiert, die am Ende der Aufgabe ausgewertet werden, wobei die zusätzlichen Ausgabespalten angegeben werden.
Zusätzlich können wir abgeleitete Komponenten definieren, die sich aus der Kombination anderer Komponenten ergeben. Zum Beispiel könnten wir Geschwindigkeit als Abstand/Zeit definieren:
Abgeleitete Komponenten implizieren keine zusätzlichen Änderungen in der Funktionsdefinition.
Bei der Ausführung einer Zuweisung werden zusätzliche Spalten erstellt, die die Werte für jede Komponente enthalten.
Die Ergebnisse der Pfadzuweisung enthalten auch Ergebnisse für die Makrofunktionskomponenten. Nicht abgeleitete Komponenten werden entlang des Pfades hinzugefügt, während abgeleitete Komponenten mit den nicht abgeleiteten Pfadwerten berechnet werden (wenn wir z.B. die Geschwindigkeit als abgeleitet definieren, addieren wir nicht die Geschwindigkeiten durch den Pfad, sondern berechnen die Gesamtlänge/Gesamtzeit).
Und für jede Komponente werden auch Skim- und Ausgabematrizen zur Verfügung stehen: