Question

I can't figure out how a genetically programmed A.I. can determine when there should be a constant in the final equation. If I take the formula F(m) = ma; F(m) = m9.8, how can the A.I. know what the real number 9.8 actually is? I understand that instead of putting the final number in the binary tree, you can actually put a symbol that describes a constant and then later calculate or guess what is its value in a certain way.

Thank you

Was it helpful?

Solution

Given a predefined set of constants (part of the terminal set) they'll be combined to form new constants (using a tree-representation, any sub-tree with only numeric constants as leaves can itself be thought of as a new numeric constant).

Even with a single constant (c) the system will create:

  • the 1.0 constant (constant divided by itself: c / c);
  • the 2.0 constant (1.0 + 1.0 i.e. c / c + c / c);
  • the 0.5 constant (1.0 / 2.0 i.e. c / c / (c / c + c / c));
  • many constants will be created this way (if you are lucky... 9.8).

Sometimes special terminals named "ephemeral random constant" (Koza) are used. For each ephemeral in the initial population, a random number in a specified range is generated. Then these random constants are moved around and combined.

Anyway, even with the use of the ephemeral random constant, GP can be hard put to generate the right constants (Koza said "the finding of numeric constants is a skeleton in the GP closet").

So other techniques can be used during/after the evolution, e.g. numeric mutation, hill climbing...

These hybrid systems often have significant improvements in the success ratios (at least for regression problems).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top