Aus Formel berechnete Matrix erstellen

Sie können eine Visum-Matrix erstellen, die aus Werten anderer Visum-Matrizen oder Bezirks-, Oberbezirks- oder Haltestellenbereichsattributen berechnet wird. Eine solche Formelmatrix wird automatisch neu berechnet, sobald sich an den Operanden etwas ändert.

In der formalen Erstellung der Formel werden Sie von Visum unterstützt. Die Syntax wird bei der Eingabe überprüft und Fehler farblich hervorgehoben.

Sonderfälle der Formelmatrizen sind die folgenden Matrizen, die Sie über bereitgestellte Funktionen berechnen können:

  • Gesamtnachfrage-Matrizen
  • Umlegungsmatrizen
  • Beziehungsfilter-Umlegungsmatrizen
  • Spinnenmatrizen

Umlegungs- und Spinnenmatrizen können Sie automatisch erstellen lassen, wenn sie in den allgemeinen Verfahrenseinstellungen die entsprechenden Optionen auswählen (Spinnenmatrizen und Umlegungsmatrizen automatisch als Formelmatrizen speichern)

Hinweise: Werte in Formelmatrizen können Sie nicht ändern.

Falls Sie Matrizen oder Attribute löschen, die zur Berechnung einer Formelmatrix verwendet werden, wird die Formelmatrix ebenfalls gelöscht.

1.  Klicken Sie in der Symbolleiste des Fensters Matrizen auf das Symbol  Matrizen einfügen.

Das Fenster Matrizen einfügen öffnet sich.

Tipp: Alternativ können Sie im Fenster Matrizen mit der rechten Maustaste neben den Navigator klicken und im Kontextmenü den Eintrag Matrizen einfügen wählen oder Sie wählen im Menü Bearbeiten > Matrizen den Eintrag Einfügen. Das Symbol und den Eintrag im Kontextmenü finden Sie auch in der Liste Matrizen (Liste öffnen).

2.  Wählen Sie das Register Matrixattribute.

3.  Wählen Sie im Bereich Datenquellen-Typ die Option Formelmatrix.

4.  Klicken Sie auf die Schaltfläche Formel bearbeiten.

Das Fenster Formel für Matrix <Nummer> bearbeiten öffnet sich.

5.  Geben Sie in das Textfeld die gewünschte Formel für die Berechnung ein oder erstellen Sie die Formel über die Schaltflächen neben dem Textfeld.

Hinweise: Sie können auch die Formel einer anderen Formelmatrix durch Kopieren und Einfügen verwenden.

Achten Sie darauf, dass Ihre Formel keinen direkten oder indirekten Zirkelbezug enthält. Auch Bezüge zwischen Ausgabewerten und Eingabewerten des gleichen Verfahrensschritts im Verfahrensablauf sollten Sie vermeiden, da sie zu unerwünschten Berechnungsergebnissen führen können.

Tipp: Es gibt verschiedene Tastenkombinationen, die Ihnen die Arbeit im Formeleditor erleichtern (Tastenkombinationen im Formeleditor für Formelattribute und Formelmatrizen).

Element

Beschreibung

Über die Schaltfläche können Sie Operanden für die Formelmatrix auswählen. Die verfügbaren Optionen sind abhängig vom Kontext, aus dem heraus Sie eine Formelmatrix erstellen.

Matrix direkt auswählen

Ist die Option ausgewählt, können Sie eine Matrix nach ihrer Nummer im Navigator auswählen.

Matrix nach Eigenschaften auswählen

Ist die Option ausgewählt, können Sie eine Matrix nach bestimmten Attributen und deren Werten auswählen, die Sie über die Eingabefelder definieren können (Matrizen auswählen)

Einfaches Attribut (Netz)

Ist die Option ausgewählt, können Sie im unteren Teil des Fensters ein Netzattribut für die Formel auswählen.

Einfaches Attribut (Matrix)

Ist die Option ausgewählt, können Sie im unteren Teil des Fensters ein Matrixattribut für die Formel auswählen.

Quelle/Ziel-Attribut (Bezirk/Oberbezirk)

Ist die Option ausgewählt, können Sie, pro nach eingestelltem Netzobjekt-Bezugstyp, ein Quell- oder Zielattribut in die Formel übernehmen. Über die Schaltfläche wählen Sie Quelle oder Ziel aus, im unteren Teil des Fensters wählen Sie das zugehörige Attribut aus.

Variablenattribut

Bei Formelmatrizen besteht die Möglichkeit, Variablenattribute in die Formel einzufügen. Ist die Option ausgewählt, können Sie ein Variablenattribut in die Formel aufnehmen.

Konstante

Ist die Option gewählt, können Sie einen festen numerischen Wert als Operanden eingeben.

Über die Schaltfläche können Sie einen Operator für die Formel wählen. Die verfügbare Auswahl ist abhängig vom Typ des Operanden, dessen Werte in die Formel einfließen.

Verwendbare Operatoren und ihre Priorität:

Oberste Priorität hat der Klammeroperator, den Sie über das Symbol  einfügen können, danach kommen in absteigender Priorität die folgenden Gruppen:

1. unärer Operator:

  • ! Negation eines nachfolgenden Terms

2. multiplikative binäre Operatoren:

  • * bildet das Produkt zweier Terme
  • / bildet den Quotienten zweier Terme

3. additive binäre Operatoren:

  • + bildet die Summe zweier Terme

Hinweis

Sie können mit dieser Funktion auch zwei Texte zusammenfügen.

  • - bildet die Differenz zweier Terme

4. relationale binäre Operatoren:

  • > vergleicht zwei Terme bezüglich „größer‟
  • >= vergleicht zwei Terme bezüglich „größer‟ oder „gleich‟
  • <= vergleicht zwei Terme bezüglich „kleiner‟ oder „gleich‟
  • < vergleicht zwei Terme bezüglich „kleiner‟

5. binäre Gleichheitsoperatoren:

  • = prüft die Gleichheit zweier Terme
  • != prüft die Ungleichheit zweier Terme
  • & verknüpft zweier Terme durch logisches Und
  • | verknüpft zwei Terme durch logisches Oder

Binäre Operatoren, die die gleiche Priorität besitzen, werden von links nach rechts (linksassoziativ) ausgewertet.

Beispiel 4/2/2 wird als (4/2)/2 = 1 ausgewertet, nicht als 4/(2/2) = 4

Über die Schaltfläche können Sie eine Funktion für die Formel auswählen (Mit Matrixwerten rechnen).

  • NurAktiveBeziehungen(x,y) wirkt sich auf aktive Beziehungen mit dem Wert x aus, für inaktive Beziehungen mit dem Wert y, es wird ONLYACTIVERELATION(,) an der Mauszeigerposition eingefügt.
  • Min(x,y) bildet das Minimum von x und y.
  • Max(x,y) bildet das Maximums von x und y.
  • Abs(x) Absolutbetrag von x.
  • Runden(x,p) rundet x auf p Nachkommastellen, es wird der Text ROUND(,) an der Mauszeigerposition eingefügt.
  • Zufällig runden(x,p) rundet x zufällig auf p Nachkommastellen, es wird der Text RANDOMROUND(,) an der Mauszeigerposition eingefügt. Die Variable p ist optional. Bei zufälligem Runden werden die Werte in Abhängigkeit vom zu rundenden Anteil gerundet. Die Summe der Matrixwerte bleibt dabei konstant.

Beispiel

0,3 wird mit 30% Wahrscheinlichkeit auf 1 aufgerundet und mit 70% Wahrscheinlichkeit auf 0 abgerundet.

  • Abrunden(x) rundet auf die größte Ganzzahl ab, die kleiner oder gleich x ist, es wird FLOOR() an der Mauszeigerposition eingefügt.
  • Aufrunden(x) rundet auf die kleinste Ganzzahl auf, die größer oder gleich x ist, es wird CEIL() an der Mauszeigerposition eingefügt.
  • Abschneiden(x) schneidet die Dezimalstellen von x ab. An der Mauszeigerposition wird TRUNCATE() eingefügt
  • Kehrwert(x) bildet den Kehrwert von x, also 1/x, es wird RECIPROCAL() an der Mauszeigerposition eingefügt.
  • Prozent(x,y) entspricht 100*x/y, es wird PERCENT(,)an der Mauszeigerposition eingefügt.
  • Potenz(x,y) entspricht xy, es wird POW(,) an der Mauszeigerposition eingefügt.
  • Wurzel(x) bildet die Quadratwurzel von x, es wird der Text SQRT() an der Mauszeigerposition eingefügt.
  • Exp(x) bildet die Exponentialfunktion von x.
  • Ln(x) bildet den natürlichen Logarithmus von x.
  • GEH Statistik(x,y) berechnet die GEH Statistik für x und y.
  • Transponieren(x) vertauscht die Zeilen und Spaltenwerte einer quadratischen Matrix, es wird Transpose() an der Mauszeigerposition eingefügt.
  • Oberes Dreieck spiegeln(x) spiegelt das obere Dreieck der Matrix x, es wird MIRROR_UPPER() an der Mauszeigerposition eingefügt.
  • Unteres Dreieck spiegeln(x) spiegelt das untere Dreieck der Matrix x, es wird MIRROR_LOWER() an der Mauszeigerposition eingefügt.
  • Symmetrisieren() bildet in Matrix x aus den Werten unterhalb und oberhalb der Matrixdiagonalen den Mittelwert, es wird SYMMETRIZE() an der Mauszeigerposition eingefügt.
  • Wenn(b;w;f) bildet eine bedingte Verzweigung, die den Wert w ausgibt, wenn die Bedingung b wahr ist oder den Wert f ausgibt, wenn die Bedingung b falsch ist. Es wird der Text If(,,) an der Mauszeigerposition eingefügt.
  • Modulo(x,y) berechnet den Rest einer Division aus Dividend x und Divisor y. Es wird der Text MODULO(x,y) an der Mauszeigerposition eingefügt.

Beispiele

MODULO(5,2) = 1

MODULO(9,3) = 0

  • Div(x,y) bildet den ganzzahligen Quotienten aus Dividend x und Divisor y. Es wird der Text DIV(,) an der Mauszeigerposition eingefügt.

Beispiele

DIV(5,2) = 2

DIV(9,3) = 3

DIV(7,−3) = −3

DIV(-7,−3) = 2

  • Sin(x) berechnet den Sinus von x, es wird SIN() an der Mauszeigerposition eingefügt.
  • Cos(x) berechnet den Kosinus von x, es wird COS() an der Mauszeigerposition eingefügt.
  • Tan(x) berechnet den Tangens von x, es wird TAN() an der Mauszeigerposition eingefügt.
  • ArcSin(x) berechnet den Arkussinus von x, es wird ARCSIN() an der Mauszeigerposition eingefügt.
  • ArcCos(x) berechnet den Arkuskosinus von x, es wird ARCCOS() an der Mauszeigerposition eingefügt.
  • ArcTan(x) berechnet den Arkustangens von x, es wird ARCTAN() an der Mauszeigerposition eingefügt.
  • Aktuelle Iteration() ist parameterlos und zeigt den aktuellen Wert des Iterationszählers innerhalb einer Rückkopplungsschleife an. Wird die Funktion in einer Formel außerhalb des Verfahrensablaufs benutzt wird immer null angezeigt. Es wird der Text Iterationcounter() an der Mauszeigerposition eingefügt.
  • MSA (x,y) bildet den gewichteten Mittelwert aus x und y. Es wird MSA(,) an der Mauszeigerposition eingefügt. Die Formel der Berechnung lautet MSA (x, y) = 1 / (IterationCounter() + 1) * x + IterationCounter() / (IterationCounter() + 1) * y. Bei der Verwendung der Funktion ohne Rückkopplungsschleife ist der Iterationszähler immer 0. Das Ergebnis entspricht dann dem Wert von x (Grundlagen: Mittelwertbildung gemäß Method of Successive Average (MSA)).
  • Variablenwert Zahl ("ID") fügt den aktuellen numerischen Wert der angegebenen Variable in die Formel ein.
  • Summe(MatrixList(...)) berechnet elementweise die Summe aller Matrizen in der Matrixliste, es wird SUM(MatrixList()) an der Mauszeigerposition eingefügt (Grundlagen: Berechnungen mit mehreren Matrizen)
  • Produkt (MatrixList(...)) berechnet elementweise das Produkt aller Matrizen in der Matrixliste, es wird PRODUCT(MatrixList()) an der Mauszeigerposition eingefügt (Grundlagen: Matrix-Kombinationsfunktionen verwenden)
  • Durchschnitt(MatrixList(...)) berechnet elementweise den Durchschnitt aller Matrizen in der Matrixliste, es wird AVERAGE (MatrixList()) an der Mauszeigerposition eingefügt (Grundlagen: Matrix-Kombinationsfunktionen verwenden).
  • Gesamtnachfrage-Matrix(”x”) berechnet die Gesamtnachfrage-Matrix des Nachfragesegments x, es wird TOTALDEMANDMATRIX() an der Mauszeigerposition eingefügt.
  • Umlegungs-Matrix(”x”) berechnet die tatsächlich umgelegte Nachfragematrix des Nachfragesegments x, es wird ASSIGNEDVOLUMEMATRIX() an der Mauszeigerposition eingefügt
  • Beziehungsfilter-Umlegungs-Matrix(”x”) berechnet die tatsächlich umgelegte Nachfragematrix des Nachfragesegments x, nachdem der Beziehungsfilter angewendet wurde, es wird FILTEREDASSIGNEDVOLUMEMATRIX() an der Mauszeigerposition eingefügt
  • Spinnenmatrix („x“) berechnet die Spinnenmatrix des Nachfragesegments x, es wird FLOWBUNDLEMATRIX() an der Mauszeigerposition eingefügt.
  • Spinnenmatrix Abfahrt ZI („x“, „y“) berechnet die Spinnenmatrix des Nachfragesegments x zum Zeitintervall y bezogen auf die Abfahrtszeit am Quellbezirk, es wird FLOWBUNDLEMATRIXDEPARTURETI(,) an der Mauszeigerposition eingefügt.
  • Spinnenmatrix Ankunft ZI („x“, „y“) berechnet die Spinnenmatrix des Nachfragesegments x zum Zeitintervall y bezogen auf die Ankunftszeit am Zielbezirk, es wird FLOWBUNDLEMATRIXARRIVALTI(,) an der Mauszeigerposition eingefügt.
  • Luftlinienentfernung () berechnet für eine Bezirks-Matrix (Oberbezirks-Matrix oder Haltestellenbereichs-Matrix) die Luftlinienentfernung der Bezirks-Beziehungen (Oberbezirks-Beziehungen). Bei Haltestellenbereichs-Matrizen ist dies die Entfernung zwischen den Haltestellenbereichen, es wird DIRECTDISTANCE() an der Mauszeigerposition eingefügt.

Hinweis

Als Trennzeichen zwischen den Elementen wird das Komma verwendet, wenn Sie in den Benutzereinstellungen als Dezimaltrennzeichen den Punkt eingestellt haben, sonst wird das Semikolon verwendet (Dezimaltrennzeichen wählen).

Über die Schaltfläche öffnet sich das Fenster ForEach einfügen, in dem Sie die Funktionen ForEach in Ihre Formel einfügen können (Grundlagen: Berechnungen mit mehreren Matrizen).

Sie fügen eine Schleifenfunktion des Typs ForEach in die Formel ein. Sie können mit dieser Funktion in einem Verfahrensschritt mehrere Matrizen erzeugen und berechnen.

Über die Schaltfläche öffnet sich das Fenster Aggregationsfunktion einfügen, in dem Sie Matrixübergangsfunktionen auswählen können (Grundlagen: Matrixübergangsfunktionen verwenden)

  • Matrix Summe (x, b) berechnet die Summe der Matrix x, es wird MATRIXSUM(,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.
  • Matrix Diagonalsumme (x, b) berechnet die Summe der Diagonale der Matrix x, es wird MATRIXDIAGONALSUM(,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.
  • Matrix Zeilensumme (x, i, b) berechnet die Summe der Zeile i der Matrix x, es wird MATRIXROWSUM(,,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.
  • Matrix Spaltensumme (x, i, b) berechnet die Summe der Spalte i der Matrix x, es wird MATRIXCOLSUM(,,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.
  • Matrix Minimum (x, b) sucht das Minimum der Elemente der Matrix x, es wird MATRIXMIN(,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.
  • Matrix Maximum (x, b) sucht das Maximum der Elemente der Matrix x, es wird MATRIXMAX(,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.
  • Matrix Durchschnitt (x, b) berechnet den Durchschnitt aller Elemente der Matrix x, es wird MATRIXAVG(,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.
  • Matrix Wert (x, i, j) zeigt den Wert der Zeile i und Spalte j der Matrix x, es wird MATRIXVAL(,) an der Mauszeigerposition eingefügt. Die Variable b ist optional. Ist der Wert von b ungleich null, werden nur aktive Beziehungen berücksichtigt.

Über die Schaltfläche öffnet sich das Fenster TableLookup einfügen, in dem Sie die Funktionen TableLookup in Ihre Formel einfügen können (Grundlagen: TableLookup-Funktion verwenden).

Sie können mit dieser Funktion einen Wert aus einer beliebigen Visum-Tabelle ziehen und in der Formel weiter verarbeiten. Beispielsweise zur Verwaltung von Parameterwerten, die bei der Berechnung von Attributen heran gezogen werden. Alternativ können Sie beispielsweise Daten von einem Netzobjekttyp auf einen anderes übertragen.

Netzobjekttyp

In der Auswahlliste wählen Sie den Netzobjekttyp aus, der die Basis für die Funktion darstellt. Alle folgenden Bedingungen der Funktion beziehen sich auf den ausgewählten Netzobjekttyp. Auch Verfahrensvariablen können ausgewählt werden.

Variablenname

Geben Sie einen Variablennamen ein, der mit einem Buchstaben beginnt. Der erste passende Wert in der Tabelle wird für die weitere Berechnung verwendet. Wird kein passender Wert gefunden, wird ein Leerwert verwendet.

Über die Schaltfläche fügen Sie einen Klammerausdruck ohne Inhalt in die Formel ein.

6.  Wählen Sie das Register Matrixmenge.

7.  Nehmen Sie die gewünschten Einstellungen vor.

Element

Beschreibung

Feste Anzahl von Matrizen einfügen

Ist die Option ausgewählt, legen Sie im entsprechenden Feld die Anzahl der Matrizen fest, die Sie einfügen möchten.

Hinweis

Fügen Sie mehr als eine Matrix ein, wird die Matrixnummer automatisch fortlaufend erhöht. Alle eingefügten Matrizen besitzen die gleichen Eigenschaften.

Matrizen über einen Matrixbezug einfügen

Ist die Option ausgewählt, können Sie eine oder mehrere Matrizen erstellen. Für neue Matrizen können Sie die Werte der Matrixattribute über Bezüge, die Sie als Code eingeben, festlegen (Matrizen auswählen).

Neue Matrizen nach dem Einfügen bearbeiten

Ist die Option ausgewählt, werden die eingefügten Matrizen im Matrixeditor geöffnet und Sie können sie bearbeiten.

8.  Bestätigen Sie mit OK.

9.  Bestätigen Sie nochmals mit OK.

Die neue Formelmatrix wird erstellt und berechnet. Sie wird im Fenster Matrizen unter dem Eintrag Formelmatrizen angezeigt. Haben Sie Formeln für benötigte Matrizen in Verfahren erstellt, werden die entsprechenden Formelmatrizen beim Ausführen des Verfahrensablaufs erzeugt.

Hinweis: Wenn Sie eine Formelmatrix als Datei speichern, werden in der Datei nur die aktuellen Werte gespeichert, nicht die Formel.

 

Hinweis: Im Verzeichnis C:\Users\Public\Documents\PTV Vision\PTV Visum 2025/Examples finden Sie ein Anwendungsbeispiel zu diesem Thema. Das Beispiel Formulas zeigt die Verwendung von Formelattributen, Formelmatrizen und von Aggregationsfunktionen in Listen.