Advertisement
Guest User

Core

a guest
Nov 19th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. package sztucznainteligencja;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Core {
  6. public double dlg=0D;//odległość pomiędzy miastami
  7. private double sum; //liczba potrzebna do obliczenia dłg pierwiastka
  8. private double minOdlg=10000;////zmienna potrzebna do wyliczenia minimalnej odległości
  9. private int minOdlgIndx=-1;// zmienna służąca do namieżenia obiektu do którego jest najbliżej z punktu startowego
  10.  
  11.  
  12.  
  13. Punkt dana = new Punkt();
  14. Scanner odczyt = new Scanner(System.in);
  15. Punkt[] tablica = new Punkt [Main.MAX];
  16.  
  17.  
  18.  
  19.  
  20. public double length(Punkt A, Punkt B)//odleglosc miedzy wspolrzędnymi
  21. {
  22. sum= ((B.x -A.x)^2) +((B.y-A.y)^2);
  23.  
  24. dlg=Math.sqrt(sum);
  25.  
  26. return dlg;
  27. }
  28.  
  29. public void wyliczenie(Punkt tab[])//fkcja przyjmująca tablice obiektów typu pkt oraz obiekt typu pkt
  30. {
  31.  
  32. for(int i=0; i<Main.MAX;i++)
  33. {
  34.  
  35.  
  36. if(i != Punkt.AKTIndex && tab[i].nrKolejnosci==0)
  37. {
  38. length(tab[Punkt.AKTIndex], tab[i]);//obliczenie odległości pomiędzy aktualnym punktem
  39.  
  40. if(dlg<minOdlg)
  41. {
  42. minOdlg=dlg;
  43. minOdlgIndx=i;
  44. }
  45. tab[minOdlgIndx].nrKolejnosci=tab[Punkt.AKTIndex].nrKolejnosci+1;//pkt ktory jest najblizej zyskuje kolejny index
  46. //przez co będzie pomijany w kolejnych iteracjach
  47.  
  48. Punkt.AKTIndex=minOdlgIndx;//ustawienie numeru kolejnego indeksu
  49.  
  50. Punkt.suma+=minOdlg;//zswumowanie drogi
  51.  
  52.  
  53.  
  54. }
  55. }
  56. length(tab[Punkt.AKTIndex], tab[Punkt.pierwszyIndex]);//obliczenie odległości od ostatniego do 1 punktu
  57. Punkt.suma+=dlg;
  58.  
  59.  
  60.  
  61.  
  62. }
  63.  
  64. public void dataSetting(Punkt tab[])
  65. {
  66.  
  67. System.out.println("Podaj proszę współrzędne "+ Main.MAX + " punktów, przez które ma przejść algorytm komiwojażera");
  68. for( int i=0; i<Main.MAX;i++)//pętla przypisująca współrzędne do pktu
  69. {
  70. System.out.println("Punkt "+(i+1)+": ");
  71.  
  72. System.out.print("X: ");
  73. tab[i].x= odczyt.nextInt();
  74.  
  75. System.out.print("\tY: ");
  76. tab[i].y= odczyt.nextInt();
  77. }
  78. System.out.println("Podaj numer punktu który ma być ustawiony jako początkowy: ");
  79. dana.ktoryPKT = odczyt.nextInt();//uzytkownik wybiera od którego pkt zaczyna
  80. Punkt.AKTIndex=dana.ktoryPKT-1;//wybranie indeksu od którego zaczynamy
  81. Punkt.pierwszyIndex=Punkt.AKTIndex;//zapisanie na stałe 1go punktu
  82. tab[Punkt.AKTIndex].nrKolejnosci=1;// identyfikacja punktu aktualnie jest punktem początkowym w danej iteracji
  83.  
  84.  
  85. }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement