File tree Expand file tree Collapse file tree 3 files changed +16
-1
lines changed
shared/src/main/scala/rolodato/genetics Expand file tree Collapse file tree 3 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -42,3 +42,11 @@ trait Gene {
4242 }
4343 }
4444}
45+
46+ object Gene {
47+ val DummyGene = new Gene {
48+ def copy (newString : List [Int ]): Gene = this
49+ def fitness : Double = Double .NegativeInfinity
50+ val string : List [Int ] = List ()
51+ }
52+ }
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ trait Genetic {
3434 var population = initial.to[ListBuffer ]
3535 var fitnesses = ListBuffer [Double ]()
3636 val selectionSize = (population.length * selectionPercentage).toInt
37+ var best : Gene = Gene .DummyGene
3738 for (i <- 1 to iterations) {
3839 // Selection
3940 population = selection.selectPopulation(population, selectionSize).to[ListBuffer ]
@@ -50,10 +51,16 @@ trait Genetic {
5051 population = population.updated(pos, mutation.mutate(population(pos)))
5152 }
5253 fitnesses += avgFitness(population)
54+ best = {
55+ val currentBest = population.maxBy(_.fitness)
56+ if (currentBest.fitness > best.fitness) currentBest
57+ else best
58+ }
5359 }
5460 new GeneticResult {
5561 val finalPopulation = population.sortBy(- _.fitness).toList
5662 val fitnessEvolution = fitnesses.toList
63+ val fittest = best
5764 }
5865 }
5966 }
Original file line number Diff line number Diff line change @@ -2,6 +2,6 @@ package rolodato.genetics
22
33trait GeneticResult {
44 val finalPopulation : List [Gene ]
5- def fittest : Gene = finalPopulation.sortBy( - _.fitness).head
5+ val fittest : Gene
66 val fitnessEvolution : List [Double ]
77}
You can’t perform that action at this time.
0 commit comments