Skip to content

Latest commit

 

History

History
131 lines (82 loc) · 4.55 KB

README.rst

File metadata and controls

131 lines (82 loc) · 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