-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathGeneticAlgorithmWithObserver.jl
More file actions
42 lines (28 loc) · 1.36 KB
/
GeneticAlgorithmWithObserver.jl
File metadata and controls
42 lines (28 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using MetaJul
# Genetic algorithm example applied to problem OneMax
function main()
problem = oneMax(512)
solver::EvolutionaryAlgorithm = EvolutionaryAlgorithm()
populationSize = 100
offspringPopulationSize = 100
solver.solutionsCreation = DefaultSolutionsCreation(problem, populationSize)
solver.evaluation = SequentialEvaluation(problem)
solver.termination = TerminationByEvaluations(40000)
mutation = BitFlipMutation(probability = 1.0 / numberOfVariables(problem))
crossover = SinglePointCrossover(probability = 1.0)
solver.variation = CrossoverAndMutationVariation(offspringPopulationSize, crossover, mutation)
solver.selection = BinaryTournamentSelection(solver.variation.matingPoolSize, IthObjectiveComparator(1))
solver.replacement = MuPlusLambdaReplacement(IthObjectiveComparator(1))
#observer = EvaluationObserver(4000)
observer = FitnessObserver(500)
register!(observable(solver), observer)
optimize!(solver)
foundSolutions = solver.foundSolutions
println("Algorithm: ", name(solver))
printObjectivesToCSVFile("FUN.csv", [foundSolutions[1]])
printVariablesToCSVFile("VAR.csv", [foundSolutions[1]])
println("Fitness: ", -1.0 * foundSolutions[1].objectives[1])
println("Solution: ", foundSolutions[1].variables)
println("Computing time: ", computingTime(solver))
end
main()