No description
Find a file
2025-11-15 01:07:55 +01:00
__pycache__ Initial commit: Deep Ritz method implementation 2025-09-13 14:59:45 +02:00
.DS_Store update 2025-11-15 01:07:55 +01:00
deepritz1d_test.ipynb update 2025-11-15 01:07:55 +01:00
deepritz_1d.py Initial commit: Deep Ritz method implementation 2025-09-13 14:59:45 +02:00
deepritz_2d.py update 2025-11-15 01:07:55 +01:00
deepritz_2d_test.ipynb update 2025-11-15 01:07:55 +01:00
err_for1d_test.ipynb update 2025-11-15 01:07:55 +01:00
readme.md update 2025-11-15 01:07:55 +01:00
requirements.txt Initial commit: Deep Ritz method implementation 2025-09-13 14:59:45 +02:00

⚛️ Deep Ritz Methode (DRM) Implementierung

Dieses Projekt implementiert die Deep Ritz Methode (DRM), einen Deep-Learning-basierten numerischen Algorithmus zur Lösung von Variationsproblemen, die aus partiellen Differentialgleichungen (PDGs) entstehen (E & Yu, 2018).

Das Repository enthält PyTorch-Implementierungen zur Lösung der Poissongleichung (\mathbf{-\Delta u = f}) mit homogenen Dirichlet-Randbedingungen in 1D und 2D. Der Kern der Methode ist das Training eines Neuronalen Netzes u_{\Theta}, um das zugehörige Ritz-Energie-Funktional \mathcal{R}(u) zu minimieren.


🧠 Mathematisches Prinzip (Kurzfassung)

Die DRM approximiert die Lösung u der PDG durch ein Neuronales Netz $u_{\Theta}$ (mit Parametern \Theta). Das Netz wird so trainiert, dass es das zugehörige Ritz-Energie-Funktional \mathcal{R}(u) minimiert.

1. Penalisiertes Energie-Funktional (Verlustfunktion)

Das Funktional wird um einen Boundary Penalty (Randstrafe)-Term ergänzt, um die Dirichlet-Randbedingungen (u|_{\partial\Omega}=0) durchzusetzen:

\mathcal{R}_{\delta}(u_{\Theta}) = \underbrace{\frac{1}{2} \int_{\Omega} |\nabla u_{\Theta}|^{2}\,dx - \int_{\Omega} f u_{\Theta}\,dx}_{\text{Ritz-Funktional (Innenintegral)}} + \underbrace{\frac{1}{2\delta} \int_{\partial\Omega} (\gamma u_{\Theta})^{2}\,ds}_{\text{Randstrafe (Randintegral)}}

2. Monte-Carlo Diskretisierung & Training

Die Integrale werden mittels Monte-Carlo-Quadratur über zufällig gezogene Innenpunkte x_{i}^{\Omega} und Randpunkte x_{j}^{\partial\Omega} approximiert (\widehat{\mathcal{R}}_{\delta}(\Theta)).

Das Training erfolgt durch Minimierung dieses diskretisierten Funktionals \widehat{\mathcal{R}}_{\delta}(\Theta) mittels Stochastic Gradient Descent (SGD) / Adam:

\Theta^{(k+1)} = \Theta^{(k)} - \eta\,\nabla_{\!\Theta}\widehat{\mathcal{R}}_{\delta}\bigl(\Theta^{(k)}\bigr)

⚙️ Projektstruktur und Nutzung

Das Projekt ist modular aufgebaut und ermöglicht die einfache Ausführung der 1D- und 2D-Löser. Die Jupyter Notebooks dienen zur Durchführung von Testläufen, Visualisierung und Experimenten.

Dateistruktur


deepritz/
├── deepritz\_1d.py          \# Implementierung der DRM für das 1D-Poisson-Problem
├── deepritz\_2d.py          \# Implementierung der DRM für das 2D-Poisson-Problem
├── deepritz\_1d.ipynb       \# Jupyter Notebook für 1D-Testläufe und Analysen
├── deepritz\_2d.ipynb       \# Jupyter Notebook für 2D-Testläufe und Analysen
├── requirements.txt        \# Erforderliche Python-Pakete (z.B. PyTorch, NumPy)
├── .env                    \# Umgebungsvariablen (optional, z.B. für Konfigurationen)
└── readme.md               \# Diese Dokumentation

Installation und Ausführung

  1. Virtuelle Umgebung: Es wird empfohlen, eine virtuelle Umgebung (venv) zu verwenden, um die Abhängigkeiten zu isolieren.

    python -m venv .venv
    source .venv/bin/activate  # Unter Windows: .venv\Scripts\activate
    
  2. Abhängigkeiten: Installieren Sie die erforderlichen Pakete aus der requirements.txt Datei.

    pip install -r requirements.txt
    
  3. Konfiguration: Falls erforderlich, kann die .env Datei Umgebungsvariablen für die Ausführung definieren (z.B. Pfade, Hyperparameter).

  4. Testläufe und Experimente: Führen Sie die Experimente direkt in den Jupyter Notebooks aus:

    • deepritz_1d.ipynb
    • deepritz_2d.ipynb

🛠️ Implementierung

Die Lösungen verwenden eine 4-Block-MLP-Architektur (Multi-Layer Perceptron), die die skalare Lösung u(x) oder u(x,y) approximiert.

Datei Problem Domain/RHS Randbedingungen (RB) Netzwerk
deepritz_1d.py 1D Poisson \Omega=[0,\pi], f(x)=1 Shape Function (xpix, sin) oder Penalty (delta) FourBlock1D
deepritz_2d.py 2D Poisson \Omega=[-1,1]^2 Penalty (delta) FourBlock2D

Pseudocode (Deep-Ritz-Methode, klassisch)

# ALGORITHMUS: Deep-Ritz-Methode
# Eingabe: u_Theta (Netzwerk), f (RHS), delta (Penalty), K (Iterationen)

initialisiere_parameter(Theta)

FOR k = 0 TO K-1:
    # 1. Sampling (Innen- und Randpunkte werden in jedem Schritt neu gezogen)
    X_interior = sample_interior(N)
    X_boundary = sample_boundary(M)
    
    # 2. Verlustberechnung (Monte-Carlo-Approximation des Funktionals)
    Loss = deep_ritz_energy(u_Theta, X_interior, X_boundary, f, delta)
    
    # 3. Optimierungsschritt
    optimizer.zero_grad()
    Loss.backward()  # Gradienten g = ∇_Theta(Loss) mittels Autograd
    optimizer.step() # Theta(k+1) = Theta(k) - eta * g

RETURN Theta_K

📉 Fehleranalyse

Der Gesamtfehler \Vert u-u_{\mathcal N}\Vert_\delta der Methode setzt sich formal aus vier Komponenten zusammen:

\Vert u-u_{\mathcal N}\Vert_\delta \le \underbrace{\Vert u-u_\delta\Vert_\delta}_{\text{1. Randfehler}} + \underbrace{\Vert u_\delta - u_{\mathcal N,\mathrm{ex}}\Vert_\delta}_{\text{2. Approximationsfehler}} + \underbrace{\Vert u_{\mathcal N,\mathrm{ex}} - u_{\mathcal N,\mathrm{mc}}\Vert_\delta}_{\text{3. Diskretisierungsfehler}} + \underbrace{\Vert u_{\mathcal N,\mathrm{mc}} - u_{\mathcal N}\Vert_\delta}_{\text{4. Optimierungsfehler}}
Fehlerbeitrag Ursache Theoretische Rate Status
1. Randfehler Abweichung von exakter RB-Lösung aufgrund des Penalty-Parameters \delta. Konvergiert mit \delta \to 0. kontrolliert
2. Approximationsfehler Unfähigkeit des NN-Raums V_{\mathcal N} die Lösung exakt abzubilden. \mathcal{O}(\frac{\sqrt{\log N}}{\sqrt{N}}) für ReLU-Netze. kontrolliert
3. Diskretisierungsfehler Fehler durch Monte-Carlo-Quadratur (N, M Samples). \mathcal O(\min\{N,M\}^{-1/2}). kontrolliert
4. Optimierungsfehler Stagnation oder Nicht-Konvergenz des nicht-konvexen SGD/Adam-Trainingsprozesses. Nicht a priori kontrolliert. kritisch

📚 Quelle

@Article{EYu2018DeepRitz,
    author={E, Weinan and Yu, Bing},
    title={The Deep Ritz Method: A Deep Learning-Based Numerical Algorithm for Solving Variational Problems},
    journal={Communications in Mathematics and Statistics},
    year={2018},
    volume={6},
    number={1},
    pages={1-12},
    doi={10.1007/s40304-018-0127-z}
}