We want to apply the technique of genetic programming to finding Lyapunov functions, where the tree structures represent potential Lyapunov functions. The population will evolve (we hope) until a Lyapunov function is produced (assuming the system is stable). But like most optimization methods, the hard part of genetic programming is not the genetic programming itself, but the evaluation of the objective function, i.e., the fitness.
The fitness of a potential Lyapunov function is a measure of its
``Lyapunovness,'' that is, how well the function satisfies the
criteria for a Lyapunov function. A continuously differentiable,
real-valued function , where
, is is a Lyapunov
function of a system
that is stable at the origin if the
following criteria hold for some domain
containing the origin:
Should be defined but not equal zero, it is easy enough to
define a function
that does satisfy the first
criterion. (If
is not defined, then
is not a Lyapunov
function and not likely to be close. The fitness of such a
function is zero.) Henceforth we assume, when evaluating the other
two criteria, that
has been corrected by subtracting
.
Criteria 2 and 3 are applicable to the entire domain. A function may
satisfy one or both of these criteria in some places, but not others.
This suggests a possible measure of fitness: the percentage of
the domain where these criteria hold. More specifically, the
fitness could be the percentage of the domain satisfying
Criterion 2 plus the percentage of the domain satisfying
Criterion 3.
Unfortunately, determining this measure of fitness exactly is not easy
for a computer to do. The most obvious way to approximate the fitness
is numerically: evaluate and
at many points, and
take the ratio of points satisfying the criteria as an approximation
to the fitness. The many points could be a grid of points covering
the domain
. Or, the points could be randomly chosen.
For this paper, I have implemented this fitness approximation using random points.