Advertisement
Guest User

Untitled

a guest
May 20th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1.  
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.util.Arrays;
  8. import java.util.List;
  9.  
  10. public class Main {
  11.  
  12. public static void main(String[] args) {
  13.  
  14. Integer vel_pop = 0, broj_iteracija = 0;
  15. Double Pc = 0.0, Pm = 0.0;
  16. Integer najboljaJedinka = 0;
  17.  
  18. try {
  19. File dat = new File("GA.txt");
  20. BufferedReader datoteka = new BufferedReader(new FileReader(dat));
  21. String linija;
  22. int i = 0;
  23.  
  24. while ((linija = datoteka.readLine()) != null) {
  25. if (i == 0) {
  26. vel_pop = Integer.parseInt(linija.split("=")[1].trim());
  27. }
  28.  
  29. if (i == 1) {
  30. Pc = Double.parseDouble((linija.split("=")[1]).trim());
  31. }
  32.  
  33. if (i == 2) {
  34. Pm = Double.parseDouble((linija.split("=")[1]).trim());
  35. }
  36.  
  37. if (i == 3) {
  38. broj_iteracija = Integer.parseInt(linija.split("=")[1].trim());
  39. }
  40.  
  41. i++;
  42. }
  43. datoteka.close();
  44. }
  45. catch (FileNotFoundException e) {
  46. e.printStackTrace();
  47. }
  48. catch (IOException e) {
  49. e.printStackTrace();
  50. };
  51.  
  52. List<Integer> populacija = Funkcije.stvoriPopulaciju(vel_pop);
  53. najboljaJedinka = Funkcije.najboljaJedinkaPopulacije(populacija);
  54.  
  55. Double max = Funkcije.maksimalnaDobrotaPopulacije(populacija);
  56. System.out.println("Maksimalna vrijednost dobrote u populaciji: " + max);
  57.  
  58. Double prosjecnaVrijednostDobrote = Funkcije.prosjecnaVrijednostDobrotePopulacije(populacija);
  59. System.out.println("Prosječna vrijednost dobrote cijele populacije: " + prosjecnaVrijednostDobrote);
  60.  
  61. System.out.println("Normirane vrijednosti dobrote svake jedinke: ");
  62. for (int j = 0; j < populacija.size(); j++) {
  63. System.out.println(" Normirana vrijednost dobrote jedinke " + populacija.get(j) + " -> "
  64. + Funkcije.dobrota(populacija.get(j)) / prosjecnaVrijednostDobrote);
  65. }
  66.  
  67. for (int i = 0; i < broj_iteracija; i++) {
  68. System.out.println("ITERACIJA BROJ: " + (i + 1));
  69.  
  70. List<Integer> populacijaNakonSelekcije = Funkcije.jednostavnaSelekcija(populacija);
  71. populacija = Funkcije.populacijaNakonKrizanjaImutacije(populacijaNakonSelekcije, Pc, Pm);
  72.  
  73. max = Funkcije.maksimalnaDobrotaPopulacije(populacija);
  74. System.out.println("Maksimalna vrijednost dobrote u populaciji: " + max);
  75.  
  76. prosjecnaVrijednostDobrote = Funkcije.prosjecnaVrijednostDobrotePopulacije(populacija);
  77. System.out.println("Prosječna vrijednost dobrote cijele populacije: " + prosjecnaVrijednostDobrote);
  78.  
  79. System.out.println("Normirane vrijednosti dobrote svake jedinke: ");
  80. for (int j = 0; j < populacija.size(); j++) {
  81. System.out.println(" Normirana vrijednost dobrote jedinke " + populacija.get(j) + " -> "
  82. + Funkcije.dobrota(populacija.get(j)) / prosjecnaVrijednostDobrote);
  83. }
  84.  
  85. Integer najboljaJedinkaIteracije = Funkcije.najboljaJedinkaPopulacije(populacija);
  86. if (Funkcije.dobrota(najboljaJedinka) < Funkcije.dobrota(najboljaJedinkaIteracije)) {
  87. najboljaJedinka = najboljaJedinkaIteracije;
  88. }
  89.  
  90. if (Funkcije.dobrota(najboljaJedinka) == 270.0) {
  91. break;
  92. }
  93. }
  94.  
  95. System.out.println("Globalno rješenje: " + najboljaJedinka + " -> Dobrota: " + Funkcije.dobrota(najboljaJedinka)
  96. + " Binarno: " + Arrays.toString(Funkcije.pretvoriIntegerUbinarniBroj(najboljaJedinka)));
  97.  
  98. }
  99.  
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement