Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
131 lines (82 sloc) 4.55 KB

ODE plugin

This plugin is intended to gather several tools for the simulation and analysis of ODEs.

Currently, it contains a single program ibexode-attract-region, that allows to calculate a region inside which all points converge to an (exponentially) stable point of a dynamical system.

The principle is as follows.

The user gives as input:

  • an ODE under the form x'=f(x);
  • a Lyapunov function v(x);
  • an approximation of the fixpoint x* of f;

and the program finds an attracting region for the considered fixpoint: any solution trajectory of the ODE starting inside this region is proven to converge to this fixpoint.

The region is returned as a sub-level set of the Lyapunov function, that is, a set described by an inequality v(x)<=c. So the programs actually just returns a scalar: the value of "c".

For further details, see the paper:

Estimating the Robust Domain of Attraction for Non-Smooth Systems using an Interval Lyapunov Equation
by A. Goldsztejn and G. Chabert
in Automatica, Vol. 100, pp. 371-377, Elsevier, 2019

Installation

Just use --with-ode in the configure step:

ibex$ ./waf configure --with-optim --with-ode --lp-lib=soplex
ibex$ sudo ./waf install

The executable ibexode-attract-region is then installed by default on the bin/ folder of IBEX.

The examples of the paper cited above are all in the examples/ subfolder of this plugin.

Usage

Try for instance:

ibex$ ./ibexode-attract-region plugins/ode/examples/Example1.txt

The output is:

c_dichotomy_derivative= [0.0247955322265624, 0.02481460571289053] t=1.742ms
c_dichotomy_hansen=     [0.05653381347656235, 0.05657196044921861] t=1.71101ms
c_dichotomy_hessian=    [0.009870529174804626, 0.00988006591796869] t=2.65201ms
c_optimizer=            [0.3208558139611485, 0.3211766697751097] t=39.3421ms

A point x such that v(x-x*)=c and v'(x-x*)>0:
(0.461418 ; 0.329046 ; 0.321177)

The 4 first lines gives the estimated value of "c" by 4 different methods. Each time, the value of "c" is given under the form of a rigorous enclosing interval but only the lower bound should actually be of interest for you. The more interesting estimation is of course the last one, c_optimizer, as it is larger than all others. However, the optimizer-based method can be prohibitively long when the dimension of the problem increases. For this reason, it is recommended to run ibexode-attract-region with the timeout option (try ibexode-attract-region --help).

The last line of the output gives a point that violates the non-positiveness of the Lie derivative.

To use this executable on your own problem, just copy-paste one of the Minibex examples and adapt it to your problem.

Advanced

In more details, the input Minibex file of ibexode-attract-region must contain the declaration of:

  • A function f(x) that represents your vector field, i.e. the mapping of your ODE x'=f(x). Note that x can be a vector argument of any size. So you can declare a function f(x[3]) for instance . The function f can also have an extra argument "theta" (i.e. we have f(x[...],theta[...])) if your vector field has an uncertain parameter "theta". This argument can also be a vector. See the paper for more details on how uncertainty is considered in this tool. An example problem with uncertain parameter is MicrobialGrowthProcess.txt.
  • A function v(x) that represents the chosen Lyapunov function.
  • A quadratic function vminor(x) minoring v(x), if v(x) is not already quadratic. The function vminor is ignored if v is already quadratic. An example problem with non-quadratic Lyapunov function is Hu2005-4.txt.
  • A (vector) variable x with an approximation of the fixpoint as domain. The variable is declared just as in a standard Minibex system of equations.
  • Optionally, a (vector) variable theta if the system has an uncertain parameter theta, with potentially an initial domain
  • Optionally, constraints on the uncertain parameter theta, in complement with the initial domain

To run the scalable "academic benchmark" of the paper:

1- move to the plugin folder:

ibex$ cd plugins/ode

1- set the PKG_CONFIG_PATH variable:

export PKG_CONFIG_PATH=[path-to-ibex]/share/pkgconfig

2- compile the programs (from this directory):

$ make

4- run the programs. Example:

$ ./dicho-scalable examples/scalable/Scalable2_ 2 10 1e-3 10

or

$ ./optim-scalable examples/scalable/Scalable2_ 2 10 1e-3 10
You can’t perform that action at this time.