This repository implements DEQGAN, a generative adversarial network method for solving ordinary and partial differential equations. Our paper appeared at the AI4Science workshop at ICML 2022.
Using Anaconda:
conda env create -f environment_minimal.yml
conda activate denn_minimal
python setup.py develop
The minimal installation includes the dependencies required to reproduce the results of experiments. Additional dependencies include:
ray
for hyperparameter tuning (ray_tune.py
)plotly
for parallel plotsfenics
for finite element methods
The full list of dependencies can be installed via the environment.yml
file.
Substitute {key}
with the appropriate problem key (e.g. exp
, sho
, nlo
, etc.) and follow instructions for each method below. See the table below for the full list of problem keys.
DEQGAN:
python denn/experiments.py --pkey {key} --gan
L1 / L2 / Huber:
- Define PyTorch loss in
denn/config/{key}.yaml
undertraining.loss_fn
(L1=L1Loss
, L2=MSELoss
, Huber=SmoothL1Loss
) python denn/experiments.py --pkey {key}
RK4 / FD:
python denn/traditional.py --pkey {key}
This table details the currently available differential equations and corresponding problem keys.
Key | Equation | Class | Order | Linear |
---|---|---|---|---|
exp |
Exponential Decay | ODE | 1st | Yes |
sho |
Simple Harmonic Oscillator | ODE | 2nd | Yes |
nlo |
Damped Nonlinear Oscillator | ODE | 2nd | No |
coo |
Coupled Oscillators | ODE | 1st | Yes |
sir |
SIR Epidemiological Model | ODE | 1st | No |
ham |
Hamiltonian System | ODE | 1st | No |
ein |
Einstein's Gravity System | ODE | 1st | No |
pos |
Poisson Equation | PDE | 2nd | Yes |
hea |
Heat Equation | PDE | 2nd | Yes |
wav |
Wave Equation | PDE | 2nd | Yes |
bur |
Burgers' Equation | PDE | 2nd | No |
aca |
Allen-Cahn Equation | PDE | 2nd | No |
If you would like to reference our work, please use the following BibTeX citation!
@misc{randle2020unsupervisedlearningsolutionsdifferential,
title={Unsupervised Learning of Solutions to Differential Equations with Generative Adversarial Networks},
author={Dylan Randle and Pavlos Protopapas and David Sondak},
year={2020},
eprint={2007.11133},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
@misc{bullwinkel2022deqgan,
title={DEQGAN: Learning the Loss Function for PINNs with Generative Adversarial Networks},
author={Blake Bullwinkel and Dylan Randle and Pavlos Protopapas and David Sondak},
year={2022},
eprint={2209.07081},
archivePrefix={arXiv},
primaryClass={cs.LG}
}