# une fonction unidimensionnelle library(GA) f <- function(x) { abs(x)+cos(x) } curve(f, -20, 20) #on cherche le minimum. La fonction de fitness est donc la fonction elle même. fit <- function(x) -f(x) #l'algorithme maximise ! GA <- ga(type = "real-valued", fitness = fit, min = -20, max = 20, monitor = NULL, popSize = 50, maxiter = 100) # les résultats summary(GA) # la dynamique de la convergence plot(GA) #examen graphique de la solution curve(f, -20, 20) abline(v = GA@solution, lty = 3) ###----------------------------------------------------------------------- # 2) plus complexe f <- function(x) { (x^2+x)*cos(x) # -10 < x < 10 } curve(f, -10, 10) #On cherche le maximum de f La fonction de fitness est donc f elle même GA <- ga(type = "real-valued", fitness = f, min = -10, max = 10, monitor = NULL,popSize = 50, maxiter = 100) summary(GA) monitor(GA) abline(v = GA@solution, lty = 3) ###-------------------------------------------------------------------------- # 3) fonction de Rastrigin (2D) Rastrigin <- function(x1, x2) { 20 + x1^2 + x2^2 - 10*(cos(2*pi*x1) + cos(2*pi*x2)) } x1 <- x2 <- seq(-5.12, 5.12, by = 0.1) f <- outer(x1, x2, Rastrigin) persp3D(x1, x2, f, theta = 50, phi = 20) filled.contour(x1, x2, f, color.palette = jet.colors) #de nouveau, on cherche un minimum fit <- function(x) -Rastrigin(x[1], x[2]) GA <- ga(type = "real-valued", fitness = fit, min = c(-5.12, -5.12), max = c(5.12, 5.12),monitor = NULL, popSize = 50, maxiter = 100) summary(GA) plot(GA) ###-------------------------------------------------------------------------