Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(GA)
- min_x = -5
- max_x = 5
- pop_size = 10
- pc = 0.6
- pm = 0.1
- maxiter = 10
- seed = 1
- sleep = 0
- #funkcja optymalizowana
- f <- function(x) abs(x)-sin(3*x)
- #funkcja dopasowania
- fitness = function(x) - f(x)
- #narysowanie wykresu funkcji
- #im wieksza wartosc tym obiekt jest lepiej przystosowany, wiec gdyby bylo maksimum to f(x)
- curve(f, min_x, max_x)
- # funkcja monitorująca przebieg realizacji algorytmu
- monitor <- function(obj)
- {
- curve(f, min_x, max_x, main = paste("Pokolenie =", obj@iter))
- points(obj@population, f(obj@population), pch = 1, col = 2)
- rug(obj@population, col = 2)
- if (sleep<0)
- readline()
- else
- Sys.sleep(sleep)
- }
- # uruchomienie algorytmu
- GA <- ga(
- type = "real-valued"
- ,fitness = fitness
- ,min = min_x
- ,max = max_x
- ,popSize = pop_size
- ,pcrossover = pc
- ,pmutation = pm
- ,maxiter = maxiter
- ,monitor = monitor
- ,keepBest = TRUE
- ,seed = seed
- )
- #wyświetlenie podsumowania
- summary(GA)
- # zaznaczenie na wykresie najlepiej dopasowanego osobnika na wykresie
- abline(v = GA@solution, lty = 3)
- #wypisanie wartości najlepszego przystosowania osiągniętego w każdej iteracji.
- GA@bestSol
- plot(GA)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement