Welche Richtlinien sollten bei der Suche nach guten Vorkonditionierungsmethoden für ein bestimmtes Problem verwendet werden?


19

Für die Lösung großer linearer Systeme mit iterativen Methoden ist es häufig von Interesse, Vorkonditionierung einzuführen, zB anstelle von M - 1 aufzulösen ( A x = b ) , wobei M hier für die linke Vorkonditionierung des Systems verwendet wird. Normalerweise sollten wir haben M - 1A - 1 und bilden die Grundlage für (viel mehr) effiziente Lösung oder Reduzierung der Rechenressourcen (zB Speicher) im Vergleich mit der Lösung des ursprünglichen Systems (dh wenn M = AAx=bM1(Ax=b)MM1A1M=A). Welche Richtlinien sollten wir jedoch verwenden, um den Vorkonditionierer auszuwählen? Wie machen Praktiker das für ihr spezifisches Problem?


1
Selbst für eine bestimmte Klasse von Gleichungen würde dies eine sehr lange und detaillierte Antwort erfordern ...
Jack Poulson

Sollte es möglich sein, heuristische Strategien für die Auswahl der Vorkonditionierer vorzuschlagen. Was unternehmen die Praktizierenden zum Beispiel angesichts eines Problems in der Praxis, um einen guten Vorkonditionierer zu finden? Beginnen Sie einfach mit einem grundlegenden Diagonal-Vorkonditionierer, der auf dem Extrahieren der Diagonale aus ? oder? EIN
Allan P. Engsig-Karup

4
Ich werde @MattKnepley kanalisieren und sagen, dass die entsprechende Aktion darin besteht, eine Literaturrecherche durchzuführen. Wenn dies fehlschlägt, probieren Sie alle verfügbaren Optionen für ein relativ großes Problem aus. Wenn dies fehlschlägt, denken Sie gründlich über die Physik nach und wie Sie eine ungefähre Lösung für das Problem finden können, und verwenden Sie diese als Vorkonditionierer.
Jack Poulson

@ JackPoulson: Da diese Frage in ähnlicher Weise zu Welchem ​​spärlichen linearen Systemlöser zu verwenden ist? und wie man einen skalierbaren linearen Löser auswählt , scheint mir ein Thema zu sein (obwohl es weit gefasst ist). Da es sich bei Ihrem Kommentar im Grunde um eine Antwort handelt, können Sie ihn bitte in eine Antwort umwandeln?
Geoff Oxberry

Ich habe mit dieser Frage ein Kopfgeld angefangen, aber ich bin auch daran interessiert, mehr Fragen in dieser Richtung zu sehen, die möglicherweise besser gestellt oder auf eine bestimmte Klasse von Problemen beschränkt sind.
Aron Ahmadia

Antworten:


17

Ich wollte ursprünglich keine Antwort geben, weil dies eine sehr lange Behandlung verdient, und hoffentlich wird es noch jemand anderes geben. Ich kann jedoch mit Sicherheit einen sehr kurzen Überblick über den empfohlenen Ansatz geben:

  1. Führen Sie eine gründliche Literaturrecherche durch.
  2. Wenn dies fehlschlägt, versuchen Sie es mit jedem Vorkonditionierer, den Sie in die Finger bekommen können. MATLAB, PETSc und Trilinos sind dafür gute Umgebungen.
  3. Wenn dies fehlschlägt, sollten Sie sorgfältig über die Physik Ihres Problems nachdenken und prüfen, ob es möglich ist, eine kostengünstige Näherungslösung zu finden, möglicherweise sogar für eine geringfügig geänderte Version Ihres Problems.

Beispiele für 3 sind verschobene Laplace-Versionen von Helmholtz und die jüngsten Arbeiten von Jinchao Xu zur Vorkonditionierung des biharmonischen Operators mit Laplace-Operatoren.


Vielen Dank! Der Rest dieses Kommentars entspricht der minimalen Zeichenbeschränkung.
Geoff Oxberry

14

Andere haben bereits die Frage der Vorkonditionierung von sogenannten "monolithischen" Matrizen kommentiert, z. B. die diskretisierte Form einer Skalargleichung wie der Laplace-Gleichung, der Helmholtz-Gleichung oder, wenn Sie sie verallgemeinern wollen, der Vektorwert Elastizitätsgleichung. Für diese Dinge ist es klar, dass Multigrid (entweder algebraisch oder geometrisch) der Gewinner ist, wenn die Gleichung elliptisch ist, und für andere Gleichungen ist es nicht ganz so klar - aber so etwas wie SSOR funktioniert oft ziemlich gut (für irgendeine Bedeutung von "angemessen").

Für mich war die große Offenbarung, was bei nicht monolithischen Problemen zu tun ist, zum Beispiel für den Stokes-Operator Als ich vor ungefähr 15 Jahren mit der numerischen Analyse begann, hoffte man, dass die gleichen Techniken auf solche Matrizen wie oben angewendet werden könnten, und die Forschungsrichtung bestand darin, entweder direkt Multigrid zu versuchen oder Verallgemeinerungen von SSOR zu verwenden (unter Verwendung von " point smoothers "wie Vanka) und ähnliche Methoden. Aber das ist verblasst, da es nicht sehr gut funktioniert.

(EINBBT0).

Was dies ersetzt hat, war das, was anfänglich als "physikalisch-basierte Vorkonditionierer" und später einfach (und vielleicht genauer) als "Block-Vorkonditionierer" von Silvester und Wathen bezeichnet wurde. Diese basieren oft auf Blockeliminierungen oder Schur-Ergänzungen und die Idee ist, einen Vorkonditionierer so aufzubauen, dass man Vorkonditionierer für einzelne Blöcke wiederverwenden kann, von denen bekannt ist, dass sie gut funktionieren. Im Fall der Stokes-Gleichung verwendet beispielsweise der Silvester / Wathen-Vorkonditionierer die Matrix

(EINB0BTEIN-1B)-1
bei Verwendung als Vorkonditionierer mit GMRES würde dies zu einer Konvergenz in genau zwei Iterationen führen. Da es dreieckig ist, ist die Inversion auch viel einfacher, aber wir haben immer noch das Problem, was wir mit den diagonalen Blöcken machen sollen, und dort verwendet man Näherungen: wobei die Tilde bedeutet, die genaue Inverse durch eine Näherung zu ersetzen. Dies ist oft viel einfacher: weil der A- Block ein elliptischer Operator ist, ~ A - 1
(EIN-1~B0(BTEIN-1B)-1~)
EINEIN-1~wird auch durch ein Mehrgitter V-Zyklus, beispielsweise angenähert, und es stellt sich heraus , daß hier, ist gut durch einen ILU einer Masse Matrix approximiert.(BTEIN-1B)-1~

Diese Idee, mit den einzelnen Blöcken, aus denen die Matrix besteht, zu arbeiten und Vorkonditionierer wiederzuverwenden, hat sich als enorm leistungsfähig erwiesen und unsere heutigen Vorstellungen zur Vorkonditionierung von Gleichungssystemen grundlegend verändert. Dies ist natürlich relevant, da es sich bei den meisten tatsächlichen Problemen tatsächlich um Gleichungssysteme handelt.


1
Mann, ja, ich wollte so das Kopfgeld! ;-)
Wolfgang Bangerth 10.04.12

In Ihrem zweiten Absatz: "Aber das ist verblasst, da es nicht sehr gut funktioniert." Kannst du eine Vorstellung davon geben, warum es nicht sehr gut funktioniert? Gibt es Umstände, unter denen es funktionieren kann?
Andrew T. Barker

Der Grund, warum sich die Anwendung von direktem Multigrid auf ganze Systeme nicht als so erfolgreich erwiesen hat, ist, dass die Glättung die strukturellen Eigenschaften der Gleichung bewahren muss, und das ist nicht trivial zu erreichen. Wenn Sie beispielsweise Multigrid auf die Stokes-Gleichungen anwenden möchten, müssen Sie einen Glatter haben, der bei einem divergenzfreien Vektor einen divergenzfreien Vektor ergibt. Es gibt solche Smoothers für Stokes, aber es ist nicht trivial zu konstruieren und es nimmt normalerweise die Qualität als Smoother / Solver ab. Es wird sehr viel schwieriger, die Eigenschaften in eher egneralen Fällen zu erhalten.
Wolfgang Bangerth

Für die Verallgemeinerung von Dingen wie Jacobi / SSOR / etc auf Systeme: Die meisten dieser Methoden setzen voraus, dass die diagonalen Einträge der Matrix ungleich Null sind. Das ist bei Stokes offensichtlich nicht der Fall. Die nächst einfachere Methode ist es also, nicht einzelne Matrixzeilen sondern zu betrachten Blöcke von Zeilen, zum Beispiel aller Zeilen für DoFs mit einem einzelnen Scheitelpunkt verbunden ist . Diese werden als "Point-Smoothers" (Punkt wie im Scheitelpunkt) bezeichnet und funktionieren bis zu einem gewissen Grad, leiden jedoch unter der gleichen Verschlechterung der Leistung wie Jacobi / SSOR, wenn die Probleme groß werden. Um dies zu vermeiden, muss ein Vorkonditionierer Informationen global austauschen wie Multigrid.
Wolfgang Bangerth

Multigrid ist bei der Lösung von Helmholtz bekanntermaßen unwirksam, da es schwierig ist, die Schwingungsmoden mit niedriger Energie zu glätten oder in einem groben Raum darzustellen. Es wurden einige Arbeiten zu Wave-Ray-Multigrid durchgeführt, aber die Formulierung ist sehr technisch und zu diesem Zeitpunkt noch keine ausgereifte Methodik. Beachten Sie, dass mit dieser Art der Blockzerlegung auch unsymmetrische Systeme gelöst werden können. Abhängig von der Wahl der Variablen (z. B. primitiv oder konservativ) kann ein Wechsel der Basis im Vorkonditionierer erforderlich sein, um die blockierte Struktur freizulegen.
Jed Brown

13

Jack hat ein gutes Verfahren angegeben, um einen Vorkonditionierer zu finden. Ich werde versuchen eine Adresse mit der Frage "Was macht einen guten Vorkonditionierer aus?" Die operative Definition lautet:

EINx=bM-1EIN-1

Dies gibt uns jedoch keinen Einblick in die Konstruktion eines Vorkonditionierers. Die meisten Vorkonditionierer basieren auf der Manipulation des Operator-Spektrums. Im Allgemeinen konvergieren Krylov-Methoden schneller, wenn Eigenwerte in Gruppen zusammengefasst werden (siehe Matrixiterationen oder meromorphe Funktionen und lineare Algebra) . Manchmal können wir nachweisen, dass ein Vorkonditionierer nur aus wenigen eindeutigen Eigenwerten besteht, z. B. Ein Hinweis zur Vorkonditionierung für unbestimmte lineare Systeme .

Ein Beispiel für eine gemeinsame Strategie ist Multigrid. Entspannungskonditionierer (hier Smoothers) wie SOR entfernen im Fehler hochfrequente Anteile. Wenn das Residuum auf ein grobes Gitter projiziert wird, werden niederfrequente Fehlerkomponenten höher und können erneut von SOR angegriffen werden. Diese grundlegende Strategie liegt komplizierteren MG-Versionen wie AMG zugrunde. Beachten Sie, dass der Solver die niedrigsten Fehlerfrequenzen genau auflösen muss.

Eine andere Strategie besteht darin, die Gleichung in kleinen Teilräumen zu lösen. Genau das tun Krylov-Löser. In der einfachsten Form ist dies die Kaczmarz-Methode oder die Additiv-Schwarz-Methode . Die fortgeschrittene Theorie, Domain Decomposition , konzentriert sich auf die spektrale Approximation des Fehlers an der Grenzfläche, da angenommen wird, dass die Domänen ziemlich genau gelöst sind.

Dann gibt es eine Reihe von Dingen, die Betreiber in der Nähe produzieren EIN


Danke für Ihre Antwort. Alle Erfahrungen darüber, wie weit wir gehen sollten, um tatsächlich zu beweisen, dass die Vorkonditionierung für große Systeme funktioniert - und möglicherweise, wie dies in der Praxis geschehen kann oder sollte. Ich habe die Erfahrung gemacht, dass wir uns bei vielen Systemen auf Intuition, Heuristik usw. verlassen müssen
Allan P. Engsig-Karup

Ich denke, die Intuition geht zu weit. Was ich in der Praxis sehe, ist ein Beweis für ein einfaches System. Dann ein Argument, dass eine Modifikation für einen Parameter oder eine bestimmte Art von Variation unempfindlich sein sollte. Dann zeigen numerische Experimente, dass es auch außerhalb dieses Variationsmodells funktioniert.
Matt Knepley
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.