Tarjan’s Schleifenaufbrechalgorithmus • In dieser Vorlesung wird ein Verfahren vorgestellt, welches in der Lage ist, algebraische Schleifen systematisch und algorithmisch aufzulösen. • Beim Tarjan Algorithmus handelt es sich um ein graphisches Verfahren, welches dazu dient, Gleichungssysteme gleichzeitig sowohl horizontal wie vertikal zu sortieren. Der Algorithmus kann ausserdem dazu verwendet werden, algebraisch gekoppelte Gleichungssysteme zu erkennen und zu isolieren. 3. November, 2004 Anfang Präsentation Übersicht • • • • 3. November, 2004 Strukturinzidenzmatrix Strukturdigraph Tarjan Algorithmus Aufbrechen algebraischer Gleichungssysteme Anfang Präsentation Die Strukturinzidenzmatrix I • Die Strukturinzidenzmatrix enthält eine Zeile für jede Gleichung des Algebrodifferentialgleichungssystems sowie eine Spalte für jede Unbekannte, die das Gleichungssystem erhält. • Da ein vollständiges Gleichungssystem immer gleich viele Gleichungen wie Unbekannte aufweist, ist die Strukturinzidenzmatrix quadratisch. • Das Element <i,j> der Strukturinzidenzmatrix betrachtet die Gleichung #i sowie die Unbekannte #j. Das Element hat einen Wert von 1, falls die angezeigte Variable in der betrachteten Gleichung auftritt, sonst enthält das entsprechende Matrixfeld den Wert 0. 3. November, 2004 Anfang Präsentation Die Strukturinzidenzmatrix: Ein Beispiel 1: U0 = f(t) 2: i0 = iL + iR1 3: uL = U0 4: diL/dt = uL / L1 5: v1 = U0 6: uR1 = v1 – v2 7: iR1 = uR1 / R1 8: v2 = uC 9: iC = iR1 – iR2 10: duC/dt = iC / C1 11: uR2 = uC 12: iR2 = uR2 / R2 3. November, 2004 U0 S= 01 02 03 04 05 06 07 08 09 10 11 12 1 0 1 0 1 0 0 0 0 0 0 0 i0 uL diL v u i 1 R1 R1 v2 dt iC duC uR2 iR2 dt 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 Anfang Präsentation Der Strukturdigraph • Der Strukturdigraph enthält die gleiche Information wie die Strukturinzidenzmatrix. Die Information ist nur anders dargestellt. • Der Strukturdigraph listet links die Gleichungen, rechts die Unbekannten. Eine Verbindungslinie zwischen einer Gleichung und einer Unbekannten zeigt an, dass die Unbekannte in der Gleichung vorkommt. 3. November, 2004 Anfang Präsentation Der Strukturdigraph: Ein Beispiel Gleichungen 1: U0 = f(t) 2: i0 = iL + iR1 3: uL = U0 4: diL/dt = uL / L1 5: v1 = U0 6: uR1 = v1 – v2 7: iR1 = uR1 / R1 8: v2 = uC 9: iC = iR1 – iR2 10: duC/dt = iC / C1 11: uR2 = uC 12: iR2 = uR2 / R2 3. November, 2004 Unbekannte 01 U0 02 i0 03 uL 04 05 diL/dt v1 06 uR1 07 iR1 08 v2 09 iC 10 duC/dt 11 uR2 12 iR2 Anfang Präsentation Der Tarjan Algorithmus • Der Tarjan Algorithmus basiert auf dem Strukturdigraphen. • Es handelt sich um ein graphisches Verfahren, bei welchem der Digraph gefärbt wird. Gleichungen mit nur einer schwarzen Linie, färbe man diese Linie rot und färbe man alle schwarzen Linien, die von der angezeigten Unbekannten ausgehen blau. Man nummeriere die Gleichungen neu aufsteigend und beginnend mit 1. Unbekannten mit nur einer schwarzen Linie, färbe man diese Linie rot und färbe man alle schwarzen Linien, die von der angezeigten Gleichung ausgehen blau. Man nummeriere die Gleichung neu absteigend und beginnend mit n, der Anzahl Gleichungen. 3. November, 2004 Anfang Präsentation Der Tarjan Algorithmus: Ein Beispiel I Gleichungen 1: U0 = f(t) 2: i0 = iL + iR1 3: uL = U0 4: diL/dt = uL / L1 5: v1 = U0 6: uR1 = v1 – v2 7: iR1 = uR1 / R1 8: v2 = uC 9: iC = iR1 – iR2 10: duC/dt = iC / C1 11: uR2 = uC 12: iR2 = uR2 / R2 3. November, 2004 01 02 03 Unbekannte 01 U0 02 i0 03 uL 04 05 diL/dt v1 06 uR1 07 iR1 08 v2 09 iC 10 duC/dt 11 uR2 12 iR2 Anfang Präsentation 10 11 12 Algebraische Schleifen: Ein Beispiel II Gleichungen 1: U0 = f(t) 2: i0 = iL + iR1 3: uL = U0 4: diL/dt = uL / L1 5: v1 = U0 6: uR1 = v1 – v2 7: iR1 = uR1 / R1 8: v2 = uC 9: iC = iR1 – iR2 10: duC/dt = iC / C1 11: uR2 = uC 12: iR2 = uR2 / R2 3. November, 2004 Unbekannte 01 U0 02 i0 03 uL 04 05 diL/dt v1 06 uR1 07 iR1 08 v2 09 iC 10 duC/dt 03 11 uR2 06 12 iR2 01 04 05 02 Anfang Präsentation 10 11 09 12 Der Tarjan Algorithmus: Ein Beispiel III Gleichungen 01 1: U0 = f(t) 2: i0 = iL + iR1 3: uL = U0 4: diL/dt = uL / L1 5: v1 = U0 6: uR1 = v1 – v2 7: iR1 = uR1 / R1 8: v2 = uC 9: iC = iR1 – iR2 10: duC/dt = iC / C1 11: uR2 = uC 12: iR2 = uR2 / R2 3. November, 2004 04 Unbekannte 01 U0 02 i0 03 uL 04 05 05 diL/dt v1 07 06 uR1 07 iR1 08 v2 09 iC 10 duC/dt 03 11 uR2 06 12 iR2 02 Anfang Präsentation 10 11 08 09 12 Der Tarjan Algorithmus: Ein Beispiel IV Gleichungen 01 04 Unbekannte 01 U0 02 i0 03 uL 04 05 05 diL/dt v1 07 06 uR1 07 iR1 08 v2 09 iC 10 duC/dt 03 11 uR2 06 12 iR2 02 3. November, 2004 1: U0 = f(t) 10 11 08 09 12 2: v2 = uC 3: uR2 = uC 4: uL = U0 5: v1 = U0 6: iR2 = uR2 / R2 7: uR1 = v1 – v2 8: iR1 = uR1 / R1 9: iC = iR1 – iR2 10: i0 = iL + iR1 11: diL/dt = uL / L1 12: duC/dt = iC / C1 Anfang Präsentation Die Strukturinzidenzmatrix II 1: U0 = f(t) 2: v2 = uC 3: uR2 = uC 4: uL = U0 5: v1 = U0 6: iR2 = uR2 / R2 7: uR1 = v1 – v2 8: iR1 = uR1 / R1 9: iC = iR1 – iR2 10: i0 = iL + iR1 11: diL/dt = uL / L1 12: duC/dt = iC / C1 3. November, 2004 U0 v2 uR2 uL v1 iR2 uR1 iR1 iC S= 01 02 03 04 05 06 07 08 09 10 11 12 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 i0 diL duC dt dt 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 Die Strukturinzidenzmatrix des vollständig sortierten Gleichungssystems ist eine Matrix in der unteren Dreiecksform. Anfang Präsentation Algebraische Schleifen: Ein Beispiel I Gleichungen Unbekannte 1: U0 = f(t) 01 U0 2: u1 = R1· i1 02 i0 3: u2 = R2· i2 03 uL 4: u3 = R3· i3 04 05 diL/dt u1 06 i1 7: i1 = i2 + i3 07 u2 8: U0 = u1 + u3 08 i2 9: u3 = u2 09 u3 10: uL = u1 + u2 10 i3 5: uL = L· diL/dt 6: i0 = i1 + iL 3. November, 2004 Anfang Präsentation Algebraische Schleifen: Ein Beispiel II Gleichungen 1: U0 = f(t) Unbekannte 01 U0 2: u1 = R1· i1 02 i0 3: u2 = R2· i2 03 uL 4: u3 = R3· i3 04 05 diL/dt u1 06 i1 7: i1 = i2 + i3 07 u2 8: U0 = u1 + u3 08 i2 9: u3 = u2 09 u3 10: uL = u1 + u2 10 i3 5: uL = L· diL/dt 6: i0 = i1 + iL 3. November, 2004 01 Anfang Präsentation 09 10 Algebraische Schleifen: Ein Beispiel III Gleichungen Unbekannte 01 U0 1: U0 = f(t) 02 i0 09 2: u1 = R1· i1 03 uL 3: u2 = R2· i2 04 4: u3 = R3· i3 05 diL/dt u1 08 10 06 i1 07 u2 7: i1 = i2 + i3 08 i2 8: U0 = u1 + u3 09 u3 9: u3 = u2 10 i3 01 5: uL = L· diL/dt 6: i0 = i1 + iL 10: uL = u1 + u2 3. November, 2004 Der Algorithmus kommt ins Stocken, da es keine einzelnen schwarzen Linien zu Gleichungen oder Variablen mehr gibt. Anfang Präsentation Das Aufbrechen algebraischer Schleifen I • Die folgende Heuristik kann angewandt werden, um geeignete Schnittvariablen zu suchen: Im Digraphen bestimmt man diejenigen Gleichungen mit der grössten Anzahl Unbekannter. Für jede dieser Gleichungen findet man die Unbekannten, die am häufigsten in noch unverwendeten Gleichungen vorkommen. Für jede dieser Variablen ermittelt man, wie viele zusätzliche Gleichungen kausalisiert werden können, wenn man diese als bekannt annimmt. Man wählt diejenige Variable als nächste Schnittvariable, die die grösste Anzahl zusätzlicher Gleichungen kausalisiert. 3. November, 2004 Anfang Präsentation Das Aufbrechen algebraischer Schleifen II • Im gegebenen Beispiel hat Gleichung #7 noch 3 Unbekannte. Alle anderen unverwendeten Gleichungen haben nur noch 2 Unbekannte. • Gleichung #7 beinhaltet die Variablen i1, i2 , and i3 . • Jede dieser Variablen kommt in einer weiteren unbenutzten Gleichung vor. • Bereits Variable i1 erlaubt es, sämtliche Gleichungen zu kausalisieren. • Somit wird i1 als Schnittvariable verwendet. 3. November, 2004 Anfang Präsentation Algebraische Schleifen: Ein Beispiel IV Gleichungen 1: U0 = f(t) Unbekannte 01 U0 2: u1 = R1· i1 02 i0 09 3: u2 = R2· i2 03 uL 4: u3 = R3· i3 04 05 diL/dt u1 08 10 06 i1 07 u2 8: U0 = u1 + u3 08 i2 9: u3 = u2 09 u3 10: uL = u1 + u2 10 i3 5: uL = L· diL/dt 6: i0 = i1 + iL 7: i1 = i2 + i3 01 02 Wahl 3. November, 2004 Anfang Präsentation Algebraische Schleifen: Ein Beispiel V Gleichungen Unbekannte 1: U0 = f(t) 01 01 U0 2: u1 = R1· i1 03 02 i0 09 3: u2 = R2· i2 03 uL 4: u3 = R3· i3 04 05 diL/dt u1 08 10 06 i1 07 u2 8: U0 = u1 + u3 08 i2 9: u3 = u2 09 u3 10: uL = u1 + u2 10 i3 5: uL = L· diL/dt 6: i0 = i1 + iL 7: i1 = i2 + i3 02 Wahl 3. November, 2004 Anfang Präsentation Algebraische Schleifen: Ein Beispiel VI Gleichungen Unbekannte 1: U0 = f(t) 01 01 U0 2: u1 = R1· i1 03 02 i0 09 3: u2 = R2· i2 03 uL 4: u3 = R3· i3 04 05 diL/dt u1 08 10 06 i1 5: uL = L· diL/dt 6: i0 = i1 + iL 7: i1 = i2 + i3 02 07 u2 8: U0 = u1 + u3 04 08 i2 9: u3 = u2 09 u3 10: uL = u1 + u2 10 i3 Wahl 3. November, 2004 Anfang Präsentation Algebraische Schleifen: Ein Beispiel VII Gleichungen Unbekannte 1: U0 = f(t) 01 01 U0 2: u1 = R1· i1 03 02 i0 09 03 uL 04 05 diL/dt u1 08 10 06 i1 3: u2 = R2· i2 4: u3 = R3· i3 5: uL = L· diL/dt 6: i0 = i1 + iL 05 7: i1 = i2 + i3 02 07 u2 8: U0 = u1 + u3 04 06 08 i2 09 u3 10 i3 9: u3 = u2 10: uL = u1 + u2 Wahl 3. November, 2004 Anfang Präsentation Algebraische Schleifen: Ein Beispiel VIII Gleichungen Unbekannte 1: U0 = f(t) 01 01 U0 2: u1 = R1· i1 03 02 i0 09 3: u2 = R2· i2 07 05 03 uL 04 05 diL/dt u1 08 10 06 i1 4: u3 = R3· i3 5: uL = L· diL/dt 6: i0 = i1 + iL 7: i1 = i2 + i3 02 07 u2 8: U0 = u1 + u3 04 06 08 i2 09 u3 10 i3 9: u3 = u2 10: uL = u1 + u2 Wahl 3. November, 2004 Anfang Präsentation Algebraische Schleifen: Ein Beispiel IX Gleichungen Unbekannte 1: U0 = f(t) 01 01 U0 03 02 i0 09 2: i1 = i2 + i3 07 05 03 uL 3: u1 = R1· i1 04 05 diL/dt u1 08 10 06 i1 02 07 u2 7: i2 = u2 / R 04 06 08 i2 8: uL = u1 + u2 09 u3 9: i0 = i1 + iL 10 i3 10: diL/dt = uL / L 4: u3 = U0 - u1 5: i3 = u3 / R3 6: u2 = u3 Wahl 3. November, 2004 Anfang Präsentation Die Strukturinzidenzmatrix III 1: U0 = f(t) 2: i1 = i2 + i3 3: u1 = R1· i1 4: u3 = U0 - u1 U0 01 02 03 04 05 06 07 08 09 10 S= 5: i3 = u3 / R3 6: u2 = u3 1 0 0 1 0 0 0 0 0 0 i1 u1 u3 i3 u2 i2 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 uL 0 0 0 0 0 0 0 1 0 1 i0 diL dt 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 7: i2 = u2 / R 8: uL = u1 + u2 9: i0 = i1 + iL 10: diL/dt = uL / L Wahl 3. November, 2004 Die Strukturinzidenzmatrix hat nun die Form einer unteren Blockdreiecksmatrix (“Block Lower Triangular form” oder BLT form). Anfang Präsentation Das Auflösen algebraischer Schleifen I • Der Tarjan Algorithmus identifiziert und isoliert algebraische Schleifen. • Er formt die Strukturinzidenzmatrix um, so dass sie eine untere Blockdreiecksform annimmt, wobei die diagonalen Blöcke so klein wie möglich gehalten werden. • Die Schnittvariabeln werden nicht in einer echt optimalen Form ausgewählt. Dies erweist sich nicht als sinnvoll, da gezeigt wurde, dass das Problem der optimalen Wahl von Schnittvariabeln npvollständig ist. Stattdessen werden Heuristiken angewandt, welche normalerweise zu einer sehr kleinen Anzahl von Schnittvariabeln führen, obwohl diese Zahl möglicherweise nicht minimal ist. • Der Tarjan Algorithmus befasst sich nicht mit dem Problem, wie die resultierenden algebraischen Schleifen aufgelöst werden. 3. November, 2004 Anfang Präsentation Das Auflösen algebraischer Schleifen II • Die algebraischen Schleifen können entweder analytisch oder aber numerisch aufgelöst werden. • Falls die algebraisch gekoppelten Gleichungen nichtlinear sind, mag eine Newton Iteration über die Schnittvariabeln optimal sein. • Falls die algebraisch gekoppelten Gleichungen linear sind und falls der Satz ziemlich gross ist, mag eine Newton Iteration immer noch die Methode der Wahl sein. • Falls die algebraisch gekoppelten Gleichungen linear sind und falls der Satz nicht sehr gross ist, können die Gleichungen entweder mittels Matrizenrechnung oder aber mittels expliziter symbolischer Formelmanipulation gelöst werden. • Die Modelica Modellierungsumgebung verwendet eine Reihe geeigneter Heuristiken, um in jedem Fall automatisch die beste Methode auszuwählen. 3. November, 2004 Anfang Präsentation Referenzen • Elmqvist H. and M. Otter (1994), “Methods for tearing systems of equations in object-oriented modeling,” Proc. European Simulation Multi-conference, Barcelona, Spain, pp. 326-332. • Tarjan R.E. (1972), “Depth first search and linear graph algorithms,” SIAM J. Comp., 1, pp. 146-160. 3. November, 2004 Anfang Präsentation