Terminals not having a unique value in a population for every chromosome

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Terminals not having a unique value in a population for every chromosome

disgruntled_young_man
Hi,

After building my nodeSets and including a Terminal (for a GP solution) I've come to the conclusion that the Terminal value only randomizes once upon initial population setup.  This is not ideal for me as I feel it doesn't make chromosomes distinct enough.  I've confirmed this by putting a System.out in the Terminal constructor where the "if" statement lives to randomize, and I have two sets of populations.  I only see my output twice.

Here's my example of population and what I need to have random for each item:


BEFORE EVOLUTION NUMBER 1 (BUY POPULATION)
(Sma(6281, 0))
(Ema(6281, 0))
(Sma(6281, 0))

BEFORE EVOLUTION NUMBER 1 (SELL POPULATION)
(Sma(64331, 0))
(Sma(6281, 0))
(Ema(6281, 0))

As you can see above, the first child of both "SMA" and "EMA" is a "PastDuration" in the past to look at for calculating the moving average.  Here's the Terminal declaration:

int possibleDuration = rawTimes.getSampleSize();
new Terminal(config, PastDurationClass.class, 1, possibleDuration, true)

I've viewed Terminal's code and yes it does set Randomize to true in the class's super calls.


As you can see from my population it doesn't make sense to have SMA's duration in the past to be the same for every chromosome.  How do I make the value random for each instance (it doesn't matter if the ultimate random value is actually the same as another, I just want to be sure that the value is indeed random for each chromosome case in a population)?

I've already looked at "ensureUniqueness" but I don't think that's a solution I'm looking for/is relevant to my question.  Is there a configuration flag I'm missing?  I'm hoping there isn't some hackery like slogging through the populations before evolving that I need to do :(



Thanks in advance!
Loading...