I have a few questions about linear genetic programming. I'm struggling to find much information on them, hopefully someone here can help me, it would be much appreciated.

1) Initialisation: When initialising the population, does each individual point to the same set of registers or register values, or is a separate space allocated to each individual ?

2) Crossover / mutation: Are the registers crossed over and mutated as well as the program bodies, or just the program bodies ? I am guessing they're not, but then how would one go about optimising the values in the registers ?

3) Crossover cont: What, based on your experience, is the most efficient method of crossover ? I have written a linear GP, and have applied to various datasets for time series forecasting. One being linear, a few trigonometric, and some economic data. It works fine when given anything except the economic data. Why could this be ? My guess is that is has something to do with crossover, which at present is two point. Although i have tested other methods such as one point and uniform but they have not in any way improved the performance? The first few generations are ok, and then the fitness of the population seems to fluctuate randomly with no improvement whatsoever :(

These may seem like very simple, or strange questions. I have only just begun learning about this so please be nice ! :)

Many Thanks

  • 2
    $\begingroup$ What is a "register" in this context? What makes "Linear Genetic Programming" linear? Crossovers are tricky because you have to be careful do it in a semantic-pertaining way. You should motivate why you use genetic algorithms; have more precise/tailored methods failed? $\endgroup$
    – Raphael
    Nov 6, 2011 at 22:17

1 Answer 1


1) I think this depends on the implementation of linear GP you use. Since you're writing your own implementation, I would recommend looking at some other people's implementations. IMO, this really depends on what kind of linear GP system you wrote/are using. I haven't looked myself, but ECJ might have an implementation that you can reference.

2) There are TONS of methods to crossover/mutate your individuals. I would argue that you could perform crossover using either of the approaches you mention. The one you should use will depend on the problem you're tackling and how you represent your individuals. Sometimes it's best to design crossover and mutation methods specifically for your system. A Google Scholar search for various mutation and crossover operations in GP, GAs, and linear GP will give you A LOT to work with.

3) Time series forecasting is a particularly difficult problem. In my very limited experience, economic data can be pretty volatile. Using a standard linear GP algorithm probably won't give you especially good results. With a problem that difficult, you're going to need more advanced approaches than just different crossover/mutation operators. It might be worth your time to look into some probabilistic, generalization, or strongly-typed GP approaches. Check out the Field Guide to GP for some more on those. Again, Google Scholar is a great resource for learning more about those.

I hope this helps!

  • $\begingroup$ Many thanks for the useful points, appreciated :) $\endgroup$
    – Daniel
    Nov 18, 2011 at 15:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.