This is a benchmark suite for reach set computations. It includes the SLICOT models, which reflect real world applications with dimensions ranging from several dozens to over 10.000.
Clone this repository
git clone https://github.com/JuliaReach/ReachabilityBenchmarks.git
Some models are stored in MAT files. These can be loaded in Julia using the MAT.jl package. To install this package, do:
julia> import Pkg; Pkg.add("MAT")
There are also bash scripts to run SpaceEx for most of the models.
These scripts assume that
spaceex (and some other tools for creating plots) are added to the PATH.
The models are given as Julia scripts, which you can run by including them in Julia's REPL, e.g.
The scripts are accompanied by a function named like the model, which calculates reachable states or checks a safety property, depending on the model's options. To compute the reach set using the default options with a time step of 0.01, do
julia> sol = solve(iss(:mode=>"reach", :T=>20.0, :δ=>0.01)...);
More options can be added in the same style.
To plot the reachable states, you can use the function
plot from the
julia> using Plots julia> plot(sol)
Running all the benchmarks
This repository provides a Julia script that will execute Julia on all existent SLICOT models.
julia -e 'include("src/benchmark_all.jl")'
The results are stored in the current folder. There is also a bash script which can be modified (by just uncommenting the respective parts) to run SpaceEx on all the models.
Exploring the tutorial notebooks
Follow this Jupyter nbviewer link to access the folder of available models, and click on files of type ".ipynb" to open the notebooks.
For example, in models/ARCH2018/SpaceStation you will find a safety property check for the 270-variable structural model of component 1R (Russian service module) of the International Space Station.