reachabilityanalysis.jl

Computing reachable states of dynamical systems in Julia

https://github.com/juliareach/reachabilityanalysis.jl

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 21 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, ieee.org, acm.org
  • Committers with academic emails
    3 of 16 committers (18.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.4%) to scientific vocabulary

Keywords

automatic-control control-systems cyber-physical-systems differential-equations dynamical-systems flowpipe formal-verification hybrid-systems interval-arithmetic julia numerical-analysis ode reachability-analysis rigorous-numerics set-propagation simulations verification

Keywords from Contributors

matrix-exponential projections pdes interpretability polygons meshing hack zonotope sets polyhedra
Last synced: 6 months ago · JSON representation ·

Repository

Computing reachable states of dynamical systems in Julia

Basic Info
Statistics
  • Stars: 205
  • Watchers: 9
  • Forks: 17
  • Open Issues: 147
  • Releases: 91
Topics
automatic-control control-systems cyber-physical-systems differential-equations dynamical-systems flowpipe formal-verification hybrid-systems interval-arithmetic julia numerical-analysis ode reachability-analysis rigorous-numerics set-propagation simulations verification
Created about 6 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

ReachabilityAnalysis.jl

| Documentation | Status | Community | License | |:-----------------:|:----------:|:-------------:|:-----------:| | docs-dev | CI codecov PkgEval aqua dev-commits | zulip JuliaHub | license |

✨ What is Reachability Analysis?

Reachability analysis is concerned with computing rigorous approximations of the set of states reachable by a dynamical system. In the scope of this package are systems modeled by continuous or hybrid dynamical systems, where the dynamics changes with discrete events. Systems are modelled by ordinary differential equations (ODEs) or semi-discrete partial differential equations (PDEs), with uncertain initial states, uncertain parameters or non-deterministic inputs.

The library is oriented towards a class of numerical methods known as set propagation techniques: to compute the set of states reachable by continuous or hybrid systems, such methods iteratively propagate a sequence of sets starting from the set of initial states, according to the systems' dynamics.

See our Frequently asked questions (FAQ) section for pointers to the relevant literature, related tools and more.

🎯 Table of Contents

💾 Installation

📙 Documentation

🎨 Features

:checkered_flag: Quickstart

🐾 Examples Gallery

:blue_book: Publications

📜 Citation

💾 Installation

Open a Julia session and activate the pkg mode (to activate the pkg mode in Julia's REPL, type ], and to leave it, type <backspace>), and enter:

julia pkg> add ReachabilityAnalysis

📙 Documentation

See the Reference Manual for introductory material, examples and API references.

📌 Need help? Have any question, or wish to suggest or ask for a missing feature? Do not hesitate to open an issue or join the JuliaReach Zulip chat: join the chat at https://julialang.zulipchat.com. You can also send an email to the developers.

🎨 Features

The following types of systems are supported (click on the left arrow to display a list of examples):

Continuous ODEs with linear dynamics :heavy_check_mark:

Operational amplifier

Heat

ISS

Motor

Building

Continuous ODEs with non-linear dynamics :heavy_check_mark:

Quadrotor

Brusselator

SEIR model

Robot arm

Continuous ODEs with parametric uncertainty :heavy_check_mark:

Transmission line

Lotka-Volterra

Hybrid systems with piecewise-affine dynamics :heavy_check_mark:

Platooning

Bouncing ball

Navigation system

Thermostat

Hybrid systems with non-linear dynamics :heavy_check_mark:

Spacecraft

Cardiatic cell

Powetrain control

Spiking neuron

Bouncing ball

Hybrid systems with clocked linear dynamics :heavy_check_mark:

Electromechanic break

Clocked thermostat

:checkered_flag: Quickstart

In less than 15 lines of code, we can formulate, solve and visualize the set of states reachable by the Duffing oscillator starting from any initial condition with position in the interval 0.9 .. 1.1 and velocity in -0.1 .. 0.1.

```julia using ReachabilityAnalysis, Plots

const ω = 1.2 const T = 2 * pi / ω

@taylorize function duffing!(du, u, p, t) local α = -1.0 local β = 1.0 local δ = 0.3 local γ = 0.37

x, v = u
f = γ * cos(ω * t)

# write the nonlinear differential equations defining the model
du[1] = u[2]
du[2] = -α*x - δ*v - β*x^3 + f

end

set of initial states

X0 = Hyperrectangle(low=[0.9, -0.1], high=[1.1, 0.1])

formulate the initial-value problem

prob = @ivp(x' = duffing!(x), x(0) ∈ X0, dim=2)

solve using a Taylor model set representation

sol = solve(prob, tspan=(0.0, 20*T), alg=TMJets21a());

plot the flowpipe in state-space

plot(sol, vars=(1, 2), xlab="x", ylab="v", lw=0.5, color=:red) ```

🐾 Examples

| | | |:--------:|:-----:| | quadrotor Quadrotor altitude control | LVHybrid Lotka-Volterra with tangential guard crossing| | | | | LaubLoomis Laub-Loomis model | PD
Production-Destruction model| | | | |vanderpol Coupled van der Pol oscillator | spaccecraft Spacecraft rendezvous |

:blue_book: Publications

This library has been applied in a number of scientific works.

Click to see the full list of publications that use ReachabilityAnalysis.jl. We list them in reverse chronological order. [11] **Combining Set Propagation with Finite Element Methods for Time Integration in Transient Solid Mechanics Problems.** Forets, Marcelo, Daniel Freire Caporale, and Jorge M. Pérez Zerpa. arXiv preprint [arXiv:2105.05841](https://arxiv.org/abs/2105.05841). Accepted in Computers & Structures (2021). [10] **Efficient reachability analysis of parametric linear hybrid systems with time-triggered transitions.** Marcelo Forets, Daniel Freire, Christian Schilling, 2020. [arXiv: 2006.12325](https://arxiv.org/abs/2006.12325). Published in [18th ACM-IEEE International Conference on Formal Methods and Models for System Design ](https://ieeexplore.ieee.org/document/9314994). See [conference page](https://iitjammu.ac.in/conferences/memocode2020/index.html). [9] **ARCH-COMP20 Category Report: Continuous and Hybrid Systems with Linear Continuous Dynamics.** Matthias Althoff, Stanley Bak, Zongnan Bao, Marcelo Forets, Daniel Freire, Goran Frehse, Niklas Kochdumper, Yangge Li, Sayan Mitra, Rajarshi Ray, Christian Schilling, Stefan Schupp, and Mark Wetzlinger (2020) ARCH20. 7th International Workshop on Applied Verification of Continuous and Hybrid Systems. 7th International Workshop on Applied Verification of Continuous and Hybrid Systems (ARCH20), vol 74, pages 16--48. [10.29007/7dt2](https://easychair.org/publications/paper/DRpS). [8] **ARCH-COMP20 Category Report: Continuous and Hybrid Systems with Nonlinear Dynamics.** Luca Geretti, Julien Alexandre dit Sandretto, Matthias Althoff, Luis Benet, Alexandre Chapoutot, Xin Chen, Pieter Collins, Marcelo Forets, Daniel Freire, Fabian Immler, Niklas Kochdumper, David P. Sanders and Christian Schilling (2020) ARCH20. To appear in 7th International Workshop on Applied Verification of Continuous and Hybrid Systems. 7th International Workshop on Applied Verification of Continuous and Hybrid Systems (ARCH20), vol 74, pages 49--75. [10.29007/zkf6](https://easychair.org/publications/paper/nrdD). [7] **Case Study: Reachability Analysis of a unified Combat-Command-and-Control Model.** Sergiy Bogomolov, Marcelo Forets, Kostiantyn Potomkin. *International Conference on Reachability Problems (2020). Lecture Notes in Computer Science, vol 12448.* (2020) doi: [10.1007/978-3-030-61739-4_4](https://dx.doi.org/10.1007/978-3-030-61739-4_4). Presented in the [14th International Conference on Reachability Problems 2020](https://www.irif.fr/~rp2020/). [article](https://doi.org/10.1007/978-3-030-61739-4_4) [6] **Reachability analysis of linear hybrid systems via block decomposition.** Sergiy Bogomolov, Marcelo Forets, Goran Frehse, Kostiantyn Potomkin, Christian Schilling. *IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 39:11 (2020).* doi: [10.1109/TCAD.2020.3012859](https://dx.doi.org/10.1109/TCAD.2020.3012859). Presented in [Embedded Systems Week 2020](http://esweek.hosting2.acm.org/). [Get pdf from arXiv: 1905.02458](https://arxiv.org/abs/1905.02458). [5] **ARCH-COMP19 Category Report: Continuous and Hybrid Systems with Linear Continuous Dynamics.** Matthias Althoff, Stanley Bak, Marcelo Forets, Goran Frehse, Niklas Kochdumper, Rajarshi Ray, Christian Schilling and Stefan Schupp (2019) ARCH19. 6th International Workshop on Applied Verification of Continuous and Hybrid Systems, vol 61, pages 14--40 [doi: 10.29007/bj1w](https://easychair.org/publications/paper/1gbP). [4] **ARCH-COMP19 Category Report: Continuous and Hybrid Systems with Nonlinear Dynamics.** Fabian Immler, Matthias Althoff, Luis Benet, Alexandre Chapoutot, Xin Chen, Marcelo Forets, Luca Geretti, Niklas Kochdumper, David P. Sanders and Christian Schilling (2019) ARCH19. 6th International Workshop on Applied Verification of Continuous and Hybrid Systems, vol 61, pages 41--61 [doi: 10.29007/bj1w](https://easychair.org/publications/paper/1gbP). [3] **JuliaReach: a Toolbox for Set-Based Reachability.** Sergiy Bogomolov, Marcelo Forets, Goran Frehse, Kostiantyn Potomkin, Christian Schilling. Published in Proceedings of [HSCC'19](http://hscc2019.eecs.umich.edu/): 22nd ACM International Conference on Hybrid Systems: Computation and Control (HSCC'19), see [ACM link here](https://dl.acm.org/citation.cfm?id=3311804). [Get pdf from arXiv: 1901.10736](https://arxiv.org/abs/1901.10736). [2] **ARCH-COMP18 Category Report: Continuous and Hybrid Systems with Linear Continuous Dynamics.** Matthias Althoff, Stanley Bak, Xin Chen, Chuchu Fan, Marcelo Forets, Goran Frehse, Niklas Kochdumper, Yangge Li, Sayan Mitra, Rajarshi Ray, Christian Schilling and Stefan Schupp (2018) ARCH18. 5th International Workshop on Applied Verification of Continuous and Hybrid Systems, 54: 23–52. doi: [10.29007/73mb](https://dx.doi.org/10.29007/73mb). [1] **Reach Set Approximation through Decomposition with Low-dimensional Sets and High-dimensional Matrices.** Sergiy Bogomolov, Marcelo Forets, Goran Frehse, Frédéric Viry, Andreas Podelski and Christian Schilling (2018) [HSCC'18](https://www.hscc2018.deib.polimi.it/) Proceedings of the 21st International Conference on Hybrid Systems: Computation and Control: 41–50. See the [ACM Digital Library link](http://dx.doi.org/10.1145/3178126.3178128), or the [arXiv: 1801.09526](https://arxiv.org/abs/1801.09526). *Note:* Articles [1-7] use the former codebase `Reachability.jl`.

📜 How to cite

Research credit and full references to the scientific papers presenting the algorithms implemented in this package can be found in the source code for each algorithm and in the References section of the online documentation.

If you use this package for your research, we kindly ask you to cite the following paper, see CITATION.bib. Moreover, please also cite the appropriate original references to the algorithms used.

Owner

  • Name: JuliaReach
  • Login: JuliaReach
  • Kind: organization

Reachability Computations for Dynamical Systems in Julia

Citation (CITATION.bib)

@inproceedings{JuliaReach19,
  title={JuliaReach: a toolbox for set-based reachability},
  author={Bogomolov, Sergiy and Forets, Marcelo and Frehse, Goran and Potomkin, Kostiantyn and Schilling, Christian},
  booktitle={Proceedings of the 22nd ACM International Conference on Hybrid Systems: Computation and Control},
  pages={39--44},
  year={2019}
}

GitHub Events

Total
  • Fork event: 1
  • Create event: 54
  • Commit comment event: 8
  • Issues event: 3
  • Release event: 4
  • Watch event: 15
  • Delete event: 47
  • Member event: 1
  • Issue comment event: 7
  • Push event: 179
  • Pull request review comment event: 15
  • Pull request review event: 25
  • Pull request event: 95
Last Year
  • Fork event: 1
  • Create event: 54
  • Commit comment event: 8
  • Issues event: 3
  • Release event: 4
  • Watch event: 15
  • Delete event: 47
  • Member event: 1
  • Issue comment event: 7
  • Push event: 179
  • Pull request review comment event: 15
  • Pull request review event: 25
  • Pull request event: 95

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,383
  • Total Committers: 16
  • Avg Commits per committer: 86.438
  • Development Distribution Score (DDS): 0.351
Past Year
  • Commits: 80
  • Committers: 4
  • Avg Commits per committer: 20.0
  • Development Distribution Score (DDS): 0.075
Top Committers
Name Email Commits
mforets m****s@g****m 897
schillic g****t@c****t 354
SebastianGuadalupe s****0@g****m 38
Daniel F Caporale d****e@g****m 32
github-actions[bot] 4****] 19
Marcelo Forets m****o@p****e 18
Luis Benet b****t@i****x 5
dependabot[bot] 4****] 5
CompatHelper Julia c****y@j****g 4
daniel.freire d****e@f****y 4
Alessandro a****o@s****l 2
Joaquim Puig j****g@u****u 1
Pietro Monticone 3****e 1
Viral B. Shah V****h 1
hpodhaisky h****y 1
marcefo m****s@p****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 68
  • Total pull requests: 396
  • Average time to close issues: 3 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 17
  • Total pull request authors: 9
  • Average comments per issue: 3.97
  • Average comments per pull request: 0.26
  • Merged pull requests: 273
  • Bot issues: 1
  • Bot pull requests: 97
Past Year
  • Issues: 4
  • Pull requests: 104
  • Average time to close issues: 9 days
  • Average time to close pull requests: 2 days
  • Issue authors: 3
  • Pull request authors: 4
  • Average comments per issue: 0.25
  • Average comments per pull request: 0.06
  • Merged pull requests: 62
  • Bot issues: 1
  • Bot pull requests: 35
Top Authors
Issue Authors
  • mforets (27)
  • schillic (24)
  • willsharpless (3)
  • baggepinnen (1)
  • JuliaTagBot (1)
  • paulius92 (1)
  • ArsalMu (1)
  • hurak (1)
  • ga72kud (1)
  • EthanJamesLew (1)
  • github-actions[bot] (1)
  • jonathanfischer97 (1)
  • adeyemiadeoye (1)
  • AnderGray (1)
  • Marek777777 (1)
Pull Request Authors
  • schillic (261)
  • github-actions[bot] (83)
  • mforets (29)
  • dependabot[bot] (14)
  • alecarraro (3)
  • dfcaporale (3)
  • SebastianGuadalupe (1)
  • joaquimpuig (1)
  • lbenet (1)
Top Labels
Issue Labels
algorithm (13) bug (10) refactors (6) documentation (4) performance (2) external (2) enhancement (2)
Pull Request Labels
dependencies (14) github_actions (1)

Dependencies

.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/checkout v4 composite
  • codecov/codecov-action v3 composite
  • julia-actions/cache v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/ci_PR.yml actions
  • actions/checkout v4 composite
  • codecov/codecov-action v3 composite
  • julia-actions/cache v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/clean-gh-pages.yml actions
  • actions/checkout v4 composite
.github/workflows/docs.yml actions
  • actions/checkout v4 composite
  • julia-actions/setup-julia latest composite
.github/workflows/format.yml actions
  • actions/checkout v4 composite
  • peter-evans/create-pull-request v5 composite
.github/workflows/invalidations.yml actions
  • actions/checkout v4 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-invalidations v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/SpellCheck.yml actions
  • actions/checkout v4 composite
  • crate-ci/typos master composite