Question

What are the advantages and disadvantages to explicitly defining constants within the memory register, as opposed to initially seeding individuals with constants and mutating them through genetic operators ?

Specifically, reading this from a book I have on Linear Genetic Programming:

In our implementation all registers hold floating-point values. Internally, constants are stored in registers that are write-protected, i.e., may not become destination registers. As a consequence, the set of possible constants remains fixed.

What I am wondering is, is this a better approach than simply initially randomly generating the constants and integrating them into the program, and then improving upon them through the training process.

Thanks

Was it helpful?

Solution

From your use of the term memory register I'm going to assume you are referring to a memory enhanced genetic programming technique.

Even with memory registers it isn't normal to use constants. Instead, a technique like Memory with memory in genetic programming can allow you to mutate your memory registers slowly instead of making abrupt changes that make the memory irrelevant. Still, it is common to introduce the values with random initialization so you can do random restarts to attempt to escape local optimums.

Perhaps you are thinking of setting all the memory registers to zero or some human estimated values?

EDIT:

It sounds like they have some values they wish to carry through all generations unmodified. Personally, that would think that kind of value is better represented by the environment your GA lives in, assuming they are shared across all instances.

IF they are not shared across instances, then this may reflect an intention to seed the population with some random values in setup which should not be allowed to evolve (at least, not during a given run).

The first type of constant (the environment constant) can be useful if you need to evolve against a complex background and you want to get good fit against a fixed environment first before trying to get a good fit for the more complex case of variable environments.

The second kind of constant (per DNA instance) isn't something I have used, but I guess if the analyst has identified some "volatile" variables that are too chaotic to allow continuous evolution it might be useful to "protect" them as constants for a run.

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