CodingTrain / CodingTrain/Suggestion-Box

Evolution time

Offen
#481 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Keine Sprachdaten
Sterne
570
Forks
85
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I have an idea of decreasing evolution time by shifting gene index for fitness calculation.

Suppose we want to generate "To be or not to be". We compare every single letter to the result every time we want to calculate fitness. Code below increases comparing gene index starting point by 1 every 10th generation is made. Every time fitness calculation is active, comparing gene index will increase by 3.

The question arises. How can we be sure that every 3rd gene with starting point of 1 and 2 is "correct" after 20 generations? Maybe new way of reproduction or just adding an inspection array in fitness calculation method?

public class Evolution {

private final int TIME_INTERVAL = 10;
private final int GENE_SHIFT = 3;

private int geneStart = 0;

public Evolution(DNA resultDNA) {
startEvolution(resultDNA);
}

public void startEvolution(DNA resultDNA) {
initializePopulation();

int counter = 0;

while(true) {
counter++;

if(counter > TIME_INTERVAL) {
geneStart++;

if(geneStart > GENE_SHIFT - 1) {
geneStart = 0;
}

counter = 0;
}

calculateFitness(resultDNA.getGenes());
doSelection();
doReproduction();

if(evaluationOK()) {
break;
}
}
}

private void calculateFitness(Gene[] resultGenes) {
for(DNA dna : population) {
Gene[] genes = dna.getGenes();

dna.setFitness(0);

int i = geneStart;

while(i < genes.length) {
if(genes[i] == resultGenes[i]) {
dna.increaseFitness();
}

i += GENE_SHIFT;
}
}
}

private void doSelection() {
//...
}

private void doReproduction() {
//...
}
}

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.