Advertisement
Enter121

Untitled

Apr 26th, 2021
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. fitness <-function (obiekt)
  2. {
  3. #tu zawarte jest wlasciwe kodowanie genu i jego ocena
  4. #kod genu, zawartosc skladnikow w recepcje na sok cytrynowy
  5. #[1]: ilosc pamieci
  6. #[2]: ilosc_operacji
  7. #[3]: wielkosc
  8. #[4]: prad
  9. jakosc = 50 * obiekt[1] + 70 * obiekt[2] + 5 * obiekt[3] - 20 * obiekt[4]
  10. cena = 1 + 40 * obiekt[1] + 35 * obiekt[2]-20 * obiekt[3] - 15 * obiekt[4]
  11. ocena = jakosc/cena
  12.  
  13. return (ocena);
  14. }
  15.  
  16. wyswietlac=TRUE
  17. func <-function (mutacja,krzyz) {
  18. liczbaobiektow=100
  19. liczbagenow=4
  20. liczbageneracji=100
  21.  
  22. #mutacja=0.5
  23. #krzyz=0.5
  24.  
  25. obiekty=matrix(nrow=liczbaobiektow, ncol=liczbagenow) #populacja, uwaga na typy zmiennych
  26.  
  27. #losowa inicjalizacja populacji
  28. set.seed(as.integer(Sys.time()))
  29. for(i in c(1:liczbaobiektow))
  30. {
  31. #wype-nij losowymi wartosciami
  32. obiekty[i,] = (1+floor(runif(liczbagenow)*9))
  33.  
  34. }
  35.  
  36. for(g in c(0:liczbageneracji))
  37. {
  38.  
  39. #Ocena
  40. best=1 #zawiera indeks wyznaczajacy pozycje najlepszego objektu w populacji
  41.  
  42. for(i in c(1:liczbaobiektow))
  43. {
  44. if(fitness(obiekty[best,])<fitness(obiekty[i,]))
  45. {
  46. best=i
  47. }
  48. }
  49. if(fitness(obiekty[best,])>=445)break
  50.  
  51. #Reprodukcja (podejscie Elitarne) z Mutacja
  52. for(i in c(1:liczbaobiektow))
  53. {
  54. #nie krzyzuj najlepszego (best) sie z soba samym
  55. if(i!=best)
  56. {
  57. for(j in c(1:liczbagenow))
  58. {
  59. #krzyzowanie - losowo podmieniaj gen j na gen z objektu najlepszego
  60. if(runif(1)<=krzyz)
  61. obiekty[i,j]=obiekty[best,j];
  62.  
  63. #Mutacja losowa
  64. if(runif(1)<=mutacja) #ten zapis oznacza, ze 1/2 genow sa zmieniane
  65. obiekty[i,j]=(1+floor(9*runif(1)))
  66. }
  67. }
  68. }
  69.  
  70. }
  71. return (g)
  72. }
  73.  
  74. vec = c(0.1, 0.2, 0.5, 0.7, 0.9)
  75. cat( sprintf("%f ",0))
  76. for(v1 in vec){
  77. cat( sprintf("%f ",v1))
  78. }
  79. cat('\n\n')
  80. for(v1 in vec){
  81. cat(sprintf("%f ",v1))
  82. for(v2 in vec){
  83. cat(sprintf("%f ",(func(v1,v2)+func(v1,v2)+func(v1,v2))/3))
  84. }
  85. cat("\n")
  86.  
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement