Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package sztucznainteligencja;
- import java.util.Scanner;
- public class Core {
- public double dlg=0D;//odległość pomiędzy miastami
- private double sum; //liczba potrzebna do obliczenia dłg pierwiastka
- private double minOdlg=10000;////zmienna potrzebna do wyliczenia minimalnej odległości
- private int minOdlgIndx=-1;// zmienna służąca do namieżenia obiektu do którego jest najbliżej z punktu startowego
- Punkt dana = new Punkt();
- Scanner odczyt = new Scanner(System.in);
- Punkt[] tablica = new Punkt [Main.MAX];
- public double length(Punkt A, Punkt B)//odleglosc miedzy wspolrzędnymi
- {
- sum= ((B.x -A.x)^2) +((B.y-A.y)^2);
- dlg=Math.sqrt(sum);
- return dlg;
- }
- public void wyliczenie(Punkt tab[])//fkcja przyjmująca tablice obiektów typu pkt oraz obiekt typu pkt
- {
- for(int i=0; i<Main.MAX;i++)
- {
- if(i != Punkt.AKTIndex && tab[i].nrKolejnosci==0)
- {
- length(tab[Punkt.AKTIndex], tab[i]);//obliczenie odległości pomiędzy aktualnym punktem
- if(dlg<minOdlg)
- {
- minOdlg=dlg;
- minOdlgIndx=i;
- }
- tab[minOdlgIndx].nrKolejnosci=tab[Punkt.AKTIndex].nrKolejnosci+1;//pkt ktory jest najblizej zyskuje kolejny index
- //przez co będzie pomijany w kolejnych iteracjach
- Punkt.AKTIndex=minOdlgIndx;//ustawienie numeru kolejnego indeksu
- Punkt.suma+=minOdlg;//zswumowanie drogi
- }
- }
- length(tab[Punkt.AKTIndex], tab[Punkt.pierwszyIndex]);//obliczenie odległości od ostatniego do 1 punktu
- Punkt.suma+=dlg;
- }
- public void dataSetting(Punkt tab[])
- {
- System.out.println("Podaj proszę współrzędne "+ Main.MAX + " punktów, przez które ma przejść algorytm komiwojażera");
- for( int i=0; i<Main.MAX;i++)//pętla przypisująca współrzędne do pktu
- {
- System.out.println("Punkt "+(i+1)+": ");
- System.out.print("X: ");
- tab[i].x= odczyt.nextInt();
- System.out.print("\tY: ");
- tab[i].y= odczyt.nextInt();
- }
- System.out.println("Podaj numer punktu który ma być ustawiony jako początkowy: ");
- dana.ktoryPKT = odczyt.nextInt();//uzytkownik wybiera od którego pkt zaczyna
- Punkt.AKTIndex=dana.ktoryPKT-1;//wybranie indeksu od którego zaczynamy
- Punkt.pierwszyIndex=Punkt.AKTIndex;//zapisanie na stałe 1go punktu
- tab[Punkt.AKTIndex].nrKolejnosci=1;// identyfikacja punktu aktualnie jest punktem początkowym w danej iteracji
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement