|
| 1 | +# EPDE |
| 2 | + |
| 3 | +--- |
| 4 | + |
| 5 | +[](https://badge.fury.io/py/epde) |
| 6 | +[](https://pepy.tech/project/epde) |
| 7 | + |
| 8 | +[](https://github.com/aimclub/OSA) |
| 9 | + |
| 10 | +Built with: |
| 11 | + |
| 12 | + |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +[](docs/epde_logo.png) |
| 20 | + |
| 21 | +We use this repository as the main entry point for the EDPE framework. |
| 22 | + |
| 23 | +We are of opinion that partial differential equations (PDE) discovery is more that the regression in the prescribed differential terms space. We propose the novel method of evolutionary equation discovery. Apart from the differential equations we have the algrbraic expressions discovery algorithm that is now uses same abstractions. |
| 24 | + |
| 25 | +The project is maintained by the research team of the Natural Systems Simulation Lab, which is a part of the National Center for Cognitive Research of ITMO University. |
| 26 | + |
| 27 | +--- |
| 28 | + |
| 29 | +## Overview |
| 30 | + |
| 31 | +EPDE framework pioneers a novel evolutionary approach to discover governing equations, particularly partial differential equations, directly from data. It moves beyond traditional regression in predefined spaces, employing evolutionary algorithms to identify mathematical relationships within datasets. The core objective is to automate the discovery of these equations, enhancing surrogate modeling in natural sciences. EPDE features a multi-objective version for Pareto frontier analysis, a numerical differentiation scheme for noisy data, and a solver for visualizing the discovery process. By implementing evolutionary equation discovery, EPDE addresses real and synthetic data, contributing to data-driven differential equation-based model development as described in associated research articles. |
| 32 | + |
| 33 | +The main features of the framework are as follows: |
| 34 | + |
| 35 | +- We dont need to create prescribed library of terms - our 'building blocks' are single differential terms or simple functions |
| 36 | +- We have the multi-objective version that allows to obtain Pareto frontier of the equations, which helps the expert to choose one from several equation. |
| 37 | +- We use our own numerical differntiaion scheme, which allows to deal with high noise values |
| 38 | +- We have solver to visualize the differential equations discovery process to add more control (https://github.com/ITMO-NSS-team/torch_DE_solver) |
| 39 | + |
| 40 | +--- |
| 41 | + |
| 42 | +## Table of Contents |
| 43 | + |
| 44 | +- [Overview](#overview) |
| 45 | +- [Content](#content) |
| 46 | +- [Algorithms](#algorithms) |
| 47 | +- [Installation](#installation) |
| 48 | +- [Getting Started](#getting-started) |
| 49 | +- [Examples](#examples) |
| 50 | +- [Documentation](#documentation) |
| 51 | +- [License](#license) |
| 52 | +- [Citation](#citation) |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +## Content |
| 57 | + |
| 58 | +The EPDE framework employs evolutionary algorithms to discover governing equations, particularly partial differential equations, from data. It eschews predefined term libraries, instead using fundamental differential terms and functions as building blocks. The framework integrates data input, preprocessing, symbolic regression, equation solving, and fitness evaluation. A key aspect is multi-objective optimization, generating a Pareto frontier of equations balancing accuracy and complexity. Numerical differentiation handles noisy data, and a solver aids visualization. The system iteratively refines equation structures through mutation, crossover, and sparse regression, identifying significant terms and weights. This approach facilitates data-driven equation derivation and surrogate model development, applicable to both synthetic and real-world data. |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## Algorithms |
| 63 | + |
| 64 | +The EPDE framework employs an evolutionary algorithm combined with sparse regression to discover partial differential equations from data. The evolutionary algorithm iteratively refines the equation structure through mutation and crossover operations. Sparse regression, specifically LASSO, is used to select significant terms and determine their weights within the equation. A numerical differentiation scheme handles noisy data. Multi-objective optimization allows for generating a Pareto frontier of potential equations, balancing accuracy and complexity. These algorithms facilitate the automated discovery of underlying equations from data, even in the presence of noise and high dimensionality, supporting surrogate modeling and data-driven equation derivation. |
| 65 | + |
| 66 | +--- |
| 67 | + |
| 68 | +## Installation |
| 69 | + |
| 70 | +**Prerequisites:** requires Python >=3.8 |
| 71 | + |
| 72 | +Common installation: |
| 73 | + |
| 74 | +```sh |
| 75 | +pip install epde |
| 76 | +``` |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +## Getting Started |
| 81 | + |
| 82 | +To get started with EPDE, you can install the package using pip: |
| 83 | + |
| 84 | +``` |
| 85 | +pip install epde |
| 86 | +``` |
| 87 | + |
| 88 | +Then, explore the examples provided in the `examples` directory. For instance, the `ODE discovery.ipynb` notebook demonstrates how to discover ordinary differential equations using the EPDE framework. It covers topics such as: |
| 89 | + |
| 90 | +- Generating synthetic data from known ODEs. |
| 91 | +- Setting up the `EpdeSearch` object with appropriate parameters. |
| 92 | +- Using trigonometric and grid tokens to enhance the search. |
| 93 | +- Visualizing and interpreting the discovered equations. |
| 94 | + |
| 95 | +Also, there is an intro video about EPDE: |
| 96 | + |
| 97 | +[](https://www.youtube.com/watch?v=BSXGCeuTcdc) |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +## Examples |
| 102 | + |
| 103 | +Examples of how this should work and how it should be used are available [here](https://github.com/ITMO-NSS-team/EPDE/tree/main/examples). |
| 104 | + |
| 105 | +--- |
| 106 | + |
| 107 | +## Documentation |
| 108 | + |
| 109 | +A detailed EPDE description is available [here](https://github.com/ITMO-NSS-team/EPDE/tree/main/docs). |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +## License |
| 114 | + |
| 115 | +This project is protected under the Other. For more details, refer to the [LICENSE](https://github.com/ITMO-NSS-team/EPDE/tree/main/LICENSE.txt) file. |
| 116 | + |
| 117 | +--- |
| 118 | + |
| 119 | +## Citation |
| 120 | + |
| 121 | +@article{maslyaev2021partial, |
| 122 | + title={Partial differential equations discovery with EPDE framework: application for real and synthetic data}, |
| 123 | + author={Maslyaev, Mikhail and Hvatov, Alexander and Kalyuzhnaya, Anna V}, |
| 124 | + journal={Journal of Computational Science}, |
| 125 | + pages={101345}, |
| 126 | + year={2021}, |
| 127 | + publisher={Elsevier} |
| 128 | +} |
| 129 | + |
| 130 | +@article{maslyaev2019discovery, |
| 131 | + title={Discovery of the data-driven differential equation-based models of continuous metocean process}, |
| 132 | + author={Maslyaev, Mikhail and Hvatov, Alexander}, |
| 133 | + journal={Procedia Computer Science}, |
| 134 | + volume={156}, |
| 135 | + pages={367--376}, |
| 136 | + year={2019}, |
| 137 | + publisher={Elsevier} |
| 138 | +} |
0 commit comments