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.