Genetic Programming

m0ti

Senior member
Jul 6, 2001
975
0
0
Hello,

Just wanted to hear some stuff on GP's, since I've just started reading up on them.

From what I've read so far, my basic understanding is that the designer has to, at the very least, provide the most basic modules, with which the GP process can the put together. Hmm, now that I think of it, this seems to be a typical search process in AI. We have to exactly define the most basic of operators which go from state to state, and then conduct a search to the correct order of their application. So in GP, we define THE most basic functions, without applying any bias as to how we expect the program to look, to allow the GP to put it together in the best way. This begs the question, for large complex systems how does one find out what the basic operators we expect to be? Or is this more a case, of not looking at the complexity. Look at the most basic question of the problem, and define the functions which must be a part of that answer. For example, how to get from location A to location B, we could just define the basic operations (turn in place X degrees clockwise, and move 1 step forward).

Has anybody seen an implementation in C, C++, or Java? How would one go about building a GP program in one of these languages, versus the more typical examples, like Lisp, where one can comfortably work with lists only? Or do they all suffer from similar problems in terms of the legality of function calling from one to the other, in terms of arguments. In Java everything can be declared to be an Object (including return types) to create a parallel to the Lisp style, and perhaps in C/C++ we could just use pointers (void *) for everything, though that's quite ugly. I take it that all of the construction mechanisms (or replacement in the case of mutation) would take care to handle the number of arguments correctly, right?

 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
My reaction to Genetic Programming was "hmm, interesting repackaging of AI and Operations Research search / optimization techniques." I write Windows application software though, and have yet to run into a situation where finding a new-optimal function would be worth the setup time.

I'd guess GP could be useful in some embedded systems where time and CPU power are scarce, and perhaps for optimizing video card drivers / BIOS / hardware. Not much value for typical applications though.

C/C++ could use a set of "instructions" stored in an array or linked list, where each element is one call to a basic building block. You're essentially building a pseudo-processor and instruction set to use for your optimization run.

Interesting stuff, if I had more free time :)
 

m0ti

Senior member
Jul 6, 2001
975
0
0
Yeah, that's what it's starting to look like for me. Though I am interested in its applicability to designing data structures, for compression and the like. I think that it could perhaps be more useful if they tried to make it a bit more top-down and not so appallingly bottom-up. Mind you, the bottom-up approach is much simpler.