Skip to contents

Overview

This vignette demonstrates how to use the genetic.algo.optimizeR package to optimize the function f(x)=x24x+4f(x) = x^2 - 4x + 4 using a genetic algorithm.

Aim

Optimize the function f(x)=x24x+4f(x) = x^2 - 4x + 4 to find the value of xx that minimizes the function.

Method

Initial Population

We start with a population of three individuals: x1=1x_1 = 1, x2=3x_2 = 3, and x3=0x_3 = 0.

# devtools::install_github("danymukesha/genetic.algo.optimizeR", upgrade = c("never"),)
library(genetic.algo.optimizeR)
# Initialize population
population <- initialize_population(population_size = 3, min = 0, max = 3)
population
#> [1] 2 1 3

Evaluation

We evaluate the fitness of each individual by calculating f(x)f(x) for each xx value:

# Evaluate fitness
fitness <- evaluate_fitness(population)
fitness
#> [1] 0 1 1

Selection

We select individuals x1x_1 and x2x_2 as parents for crossover because they have higher fitness.

# Perform selection
selected_parents <- selection(population, fitness, num_parents = 2)
selected_parents
#> [1] 2 1

Crossover and Mutation

We perform crossover and mutation on the selected parents to generate offspring: x1=1x_1' = 1, x2=3x_2' = 3.

# Perform crossover
offspring <- crossover(selected_parents, offspring_size = 2)
offspring
#> [1] 1 1

# Perform mutation
mutated_offspring <- mutation(offspring, mutation_rate = 0.1)
mutated_offspring
#> [1] 1 1

Replacement

We replace individual x3x_3 with offspring x1x_1', maintaining the population size.

# Replace individuals in the population
new_population <- replacement(population, mutated_offspring, num_to_replace = 1)
new_population
#> [1] 2 1 1
# Termination
# Repeat the above steps(from Evaluation) for multiple generations or until a termination condition is met.

Warp-Up

This vignette demonstrates the usage of the genetic.algo.optimizeR package to optimize the given function using a genetic algorithm. Users can follow similar steps to optimize other functions or customize the parameters as needed.