While at the start up and learning more about stock markets I tried to supply my own contributions to the endeavor. Being a computer person I tried to find a computer solution to the problem. I realize not all problems have computer solutions. This is just data, I should be able to find a solution.
Naive I was.
I quickly learned about genetic programming. I find this niche of Artificial Intelligence fascinating.
The idea behind genetic programming is similar to the idea behind genetic algorithms, however where you have an equation that you are attempting to find a near-optimal solution for in genetic algorithms, genetic programming creates the equation for you.
Computers understand mathematics and numbers best. That's where we'll start. Like genetic algorithms, the object function in genetic programming is where you will spend all your time. An objective function can be made to handle anything, if you can simulate it. As a first example we'll discuss an approximation for the square root of 2 (about 1.414). Each genetic programming system is allowed to use operators and terminal values. For this small test we will allow the use of the numbers '1' through '9' as terminal values, and the operators '+', '-', '*', and '/'. The objective function will evaluate each individual in the population and return the absolute value of the difference between the evaluated individual and the square root of 2.
When I originally performed this experiment I was surprised to learn that "7 / 5" is a close approximation.
An experiment I have read about discuss feeding planetary orbital data to a more sophisticated genetic programming system. The system evolved a form of Kepler's Laws of Planetary Motion. As I mentioned above computers are best at numbers, but that's not the only approach you can use for the objective function. One experiment used an objective function that tested individuals of a population for the specifics of an antenna design. The parameters included dimensions of the antenna, electrical power usage of the antenna, and how many decibels gain. This experiment recreated an antenna design by two fellows from Japan in the 1940s.
Researcher and author John Koza has described genetic programming as invention machine. I think he's right. John Koza performed experiments where genetic programming systems that investigate molecules navigating organic molecular pathways. In the most recent book by him I read where he and his group have submitted two electronic amplifier designs to the United States Patent Office that have never been seen previously by humans.
It's exciting stuff to me. This has been a very brief introduction to genetic programming. I hope you find it as fascinating as I do.
Below are links to the genetic programming systems I have used. The PERL is simple to setup and for learning, but is not as robust as the others. I modified lil-gp to run in a parallel system across ten linux boxes for a large (for me) application. The most flexible is ECJ. I was surprised by how fast ECJ runs. The ECJ community and Sean Luke are extremely helpful.
PERL:
GPerl.pm (can't find the link)
lil-gp:
http://garage.cse.msu.edu/software/lil-gp/overview.html
http://www.genetic-programming.com/c2003lilgpwebpagedarren.html
http://garage.cse.msu.edu/software/lil-gp/
ECJ:
http://cs.gmu.edu/~eclab/projects/ecj/
Researchers and Authors:
John Koza
Lee Spector
Bill Langdon
No comments:
Post a Comment