Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fitness <-function (obiekt)
- {
- #tu zawarte jest wlasciwe kodowanie genu i jego ocena
- #kod genu, zawartosc skladnikow w recepcje na sok cytrynowy
- #[1]: ilosc pamieci
- #[2]: ilosc_operacji
- #[3]: wielkosc
- #[4]: prad
- jakosc = 50 * obiekt[1] + 70 * obiekt[2] + 5 * obiekt[3] - 20 * obiekt[4]
- cena = 1 + 40 * obiekt[1] + 35 * obiekt[2]-20 * obiekt[3] - 15 * obiekt[4]
- ocena = jakosc/cena
- return (ocena);
- }
- wyswietlac=TRUE
- func <-function (mutacja,krzyz) {
- liczbaobiektow=100
- liczbagenow=4
- liczbageneracji=100
- #mutacja=0.5
- #krzyz=0.5
- obiekty=matrix(nrow=liczbaobiektow, ncol=liczbagenow) #populacja, uwaga na typy zmiennych
- #losowa inicjalizacja populacji
- set.seed(as.integer(Sys.time()))
- for(i in c(1:liczbaobiektow))
- {
- #wype-nij losowymi wartosciami
- obiekty[i,] = (1+floor(runif(liczbagenow)*9))
- }
- for(g in c(0:liczbageneracji))
- {
- #Ocena
- best=1 #zawiera indeks wyznaczajacy pozycje najlepszego objektu w populacji
- for(i in c(1:liczbaobiektow))
- {
- if(fitness(obiekty[best,])<fitness(obiekty[i,]))
- {
- best=i
- }
- }
- if(fitness(obiekty[best,])>=445)break
- #Reprodukcja (podejscie Elitarne) z Mutacja
- for(i in c(1:liczbaobiektow))
- {
- #nie krzyzuj najlepszego (best) sie z soba samym
- if(i!=best)
- {
- for(j in c(1:liczbagenow))
- {
- #krzyzowanie - losowo podmieniaj gen j na gen z objektu najlepszego
- if(runif(1)<=krzyz)
- obiekty[i,j]=obiekty[best,j];
- #Mutacja losowa
- if(runif(1)<=mutacja) #ten zapis oznacza, ze 1/2 genow sa zmieniane
- obiekty[i,j]=(1+floor(9*runif(1)))
- }
- }
- }
- }
- return (g)
- }
- vec = c(0.1, 0.2, 0.5, 0.7, 0.9)
- cat( sprintf("%f ",0))
- for(v1 in vec){
- cat( sprintf("%f ",v1))
- }
- cat('\n\n')
- for(v1 in vec){
- cat(sprintf("%f ",v1))
- for(v2 in vec){
- cat(sprintf("%f ",(func(v1,v2)+func(v1,v2)+func(v1,v2))/3))
- }
- cat("\n")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement