Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. fitness <-function (obiekt)
  2. {
  3. #pozycja 1. pojemność silnika: 1.8L, 2.3L, 3L
  4. #pozycja 2. kierownica: plastikowa, skóra sztuczna, skóra naturalna
  5. #pozycja 3. wygłuszenie silnika: minimalne, średnie, maksymalne
  6. #pozycja 4. rodzaj skrzyni: manualna, półautomatyczna, automatyczna
  7. #pozycja 5. rodzaj foteli: welurowe, skórzane, alcantara
  8. #pozycja 6. napęd: na przednie koła, 4x4 dołączany automatycznie, 4x4 stały
  9. #pozycja 7. kamerka: brak, cofania, cofania oraz w zderzaku przednim
  10.  
  11. komfort_jazdy = -70*obiekt[1] + 25*obiekt[2] + 30* obiekt[3] + 70*obiekt[4] + 15*obiekt[5] + 2*obiekt[6] + 20*obiekt[7]
  12. cena = 800*obiekt[1] + 100*obiekt[2] + 20*obiekt[3] + 900*obiekt[4] + 250*obiekt[5] + 650*obiekt[6] + 150*obiekt[7]
  13.  
  14.  
  15. ocena = komfort_jazdy/cena - abs((obiekt[1]/obiekt[3]) - 0.55)
  16. return (ocena);
  17. }
  18.  
  19. wyswietlac=TRUE
  20.  
  21. liczbaobiektow=100
  22. liczbagenow=7
  23. liczbageneracji=100
  24. obiekty=matrix(nrow=liczbaobiektow, ncol=liczbagenow) #populacja, uwaga na typy zmiennych
  25.  
  26. #losowa inicjalizacja populacji
  27. set.seed(as.integer(Sys.time()))
  28. for(i in c(1:liczbaobiektow))
  29. {
  30. #wype-nij losowymi wartosciami
  31. obiekty[i,] = floor(3*runif(liczbagenow))+1
  32.  
  33.  
  34. }
  35.  
  36. for(g in c(0:liczbageneracji))
  37. {
  38. if(wyswietlac) print(sprintf("generacja %d",g))
  39.  
  40. #Ocena
  41. best=1 #zawiera indeks wyznaczajacy pozycje najlepszego objektu w populacji
  42.  
  43. for(i in c(1:liczbaobiektow))
  44. {
  45. if(fitness(obiekty[best,])<fitness(obiekty[i,]))
  46. {
  47. best=i
  48. }
  49. }
  50.  
  51.  
  52. #Reprodukcja (podejscie Elitarne) z Mutacja
  53. for(i in c(1:liczbaobiektow))
  54. {
  55. #nie krzyzuj najlepszego (best) sie z soba samym
  56. if(i!=best)
  57. {
  58. for(j in c(1:liczbagenow))
  59. {
  60. #krzyzowanie - losowo podmieniaj gen j na gen z objektu najlepszego
  61. if(runif(1)<=0.6)
  62. obiekty[i,j]=obiekty[best,j];
  63.  
  64. #Mutacja losowa
  65. if(runif(1)<=0.3) #ten zapis oznacza, ze 1/2 genow sa zmieniane
  66. obiekty[i,j]=floor(3*runif(1))+1
  67. }
  68. }
  69. #if(wyswietlac) print(obiekty[i,])
  70. }
  71.  
  72. if(wyswietlac) print(sprintf("Fitness: %f",fitness(obiekty[best,])))
  73. if(fitness(obiekty[best,])>0.0178) break
  74. }
  75.  
  76. print(obiekty[best,])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement