List of commits:
Subject Hash Author Date (UTC)
implemented first version of 2-opt-change algorithm 376954bfb1e24116e0935d70263c0ec0c2792b92 SF2311 2018-04-25 16:29:06
just to update 2fa820634306068c8a97315ecb29661604bb34dc SF2311 2018-04-25 14:21:33
Merge branch 'dev' of T:\GIPS\Klassen\2017_GIPS_J1\Informatik JB\ts into dev 0fa550b00774b011f7e87ef1ac5b8fbdb9abb0bc ani.moosb 2018-04-25 13:25:48
prepared data structure ad7e293e1679e05d274ebcacf043522c2f3e8f5c SF2311 2018-04-25 13:21:54
new class Algorythm to implement BrutForce algorithm cd2f3565cc145dd9f14290b727f74ea0281ef2c7 ani.moosb 2018-04-25 13:12:14
prepared data structure 0d55315b39e973974793aadfc188dc9e055ef029 SF2311 2018-04-25 13:10:50
added class City for represnetation of data 057841348e42a9bf916d6b5bf8d8f069a8e4f555 SF2311 2018-04-25 12:42:18
new class Algorythm to implement BrutForce algorithm c0ba57e67447133ed5b2fcde4cc9c6a2c61a1036 ani.moosb 2018-04-25 12:29:31
Fixed menu loading problems 9858b4b11fd912d8b40e681b772bf0ef16678ca6 SF2311 2018-04-20 17:07:20
Added Menu loading 428354d568e6bf97e45ec4c416ce9b3db227eea4 SF2311 2018-04-20 16:12:55
designed main window added launching main window added first menu part in form of gridpane 1f4e52733f4aeb9524fb0f40f8cf7604aaf17898 SF2311 2018-04-19 16:15:30
prepared User interface cfad65413554fbd7a1026f2c8e73e73e996df69d SF2311 2018-04-18 18:51:26
initial commit 272ab94837f2e39f77b768df08a25a78466d52d1 SF2311 2018-04-18 18:43:17
Commit 376954bfb1e24116e0935d70263c0ec0c2792b92 - implemented first version of 2-opt-change algorithm
Author: SF2311
Author date (UTC): 2018-04-25 16:29
Committer name: SF2311
Committer date (UTC): 2018-04-25 16:29
Parent(s): b0c794ba2f43cdc5c31fec4ad96fa452085848ff
Signing key:
Tree: 9a76151422b70c453ae8c8c0948b69a8cd0640a0
File Lines added Lines deleted
src/salesman/algorithms/AlgorithmBrutForce.java 1 1
src/salesman/algorithms/Opt2.java 49 0
src/salesman/data/City.java 2 3
src/salesman/data/Data.java 50 0
src/salesman/data/Order.java 26 3
src/salesman/salesman/data/City.java 0 27
src/salesman/ui/BrutForceController.java 1 1
src/salesman/ui/MainWindowController.java 2 0
File src/salesman/algorithms/AlgorithmBrutForce.java renamed from src/salesman/salesman/algorithms/AlgorithmBrutForce.java (similarity 72%) (mode: 100644) (index 26ddb54..8a0bc1f)
1 package salesman.salesman.algorithms;
1 package salesman.algorithms;
2 2
3 3 public class AlgorithmBrutForce extends Thread{ public class AlgorithmBrutForce extends Thread{
4 4
File src/salesman/algorithms/Opt2.java added (mode: 100644) (index 0000000..5536bce)
1 package salesman.algorithms;
2
3
4 import salesman.data.Order;
5 import salesman.ui.MainWindowController;
6
7 import java.util.ArrayList;
8 import java.util.List;
9 import java.util.Random;
10
11 public class Opt2 extends Thread {
12 private Order currentOrder;
13 private int currentLength;
14 private double[][] distances = MainWindowController.data.getDistances();
15 private Random r = new Random();
16
17 @Override
18
19 public void run() {
20 int count = 0;
21 while (count<40) {
22 currentOrder = generateRandomOrder();
23 currentLength = currentOrder.getTotalLength(distances);
24 int index1 = r.nextInt(currentOrder.getSize()), index2 = r.nextInt(currentOrder.getSize());
25 currentOrder.swapIndicies(index1, index2);
26
27 if (currentOrder.getTotalLength(distances) > currentLength) {
28 currentOrder.swapIndicies(index1, index2);
29 count++;
30 }
31 }
32 }
33
34 private Order generateRandomOrder() {
35 Order order = new Order(MainWindowController.data.getCities());
36 List<Integer> list = new ArrayList<Integer>();
37
38 for (int i = 0; i < order.getSize(); i++) {
39 list.add(new Integer(i));
40 }
41
42 Random r = new Random();
43 for (int i = 0; i < order.getSize(); i++) {
44 order.setIndex(i, list.get(i));
45 }
46
47 return order;
48 }
49 }
File src/salesman/data/City.java changed (mode: 100644) (index 844880d..5649b3b)
... ... package salesman.data;
2 2
3 3 public class City { public class City {
4 4
5 public static double abstand(City c1,City c2){
6 double a = Math.sqrt( (c2.getX() - c1.getX())*(c2.getX() - c1.getX()) + (c2.getY()- c2.getY())*(c2.getY()- c2.getY()));
7 return a;
5 public static double getDistancce(City c1,City c2){
6 return Math.sqrt( (c2.getX() - c1.getX())*(c2.getX() - c1.getX()) + (c2.getY()- c1.getY())*(c2.getY()- c1.getY()));
8 7 } }
9 8
10 9 private int x,y,iD; private int x,y,iD;
File src/salesman/data/Data.java added (mode: 100644) (index 0000000..77d21cb)
1 package salesman.data;
2
3 import java.util.Random;
4
5 public class Data {
6 City[] cities;
7 double[][] distances;
8 Order bestEver;
9
10 public Data(int number){
11 Random r = new Random();
12 cities=new City[number];
13 distances=new double[number][ number];
14
15
16 for(int i=0;i<number;i++){
17 cities[i] = new City(r.nextInt(600),r.nextInt(780),i);
18 }
19
20 for (int i = 0; i <number; i++) {
21 for (int j = 0; j < number; j++) {
22 distances[i][j]=City.getDistancce(cities[i],cities[j]);
23 }
24 }
25 }//constructor int number
26
27 public Data(City[] cities){
28 this.cities=cities;
29 int number=cities.length;
30
31 distances=new double[number][ number];
32
33 for (int i = 0; i <number; i++) {
34 for (int j = 0; j < number; j++) {
35 int deltaX= cities[j].getX()-cities[i].getX();
36 int deltaY = cities[j].getY()-cities[i].getY();
37 distances[i][j] = Math.sqrt((deltaX*deltaX)+(deltaY*deltaY));
38 }
39 }
40 //constructor City[]
41 }
42
43 public City[] getCities() {
44 return cities;
45 }
46
47 public double[][] getDistances() {
48 return distances;
49 }
50 }
File src/salesman/data/Order.java changed (mode: 100644) (index 6d5a595..46ee577)
... ... package salesman.data;
2 2
3 3 public class Order { public class Order {
4 4 private int[] order; private int[] order;
5 private City[] cities;
5 6
6 7 public Order(City[] cities){ public Order(City[] cities){
7 8 order=new int[cities.length]; order=new int[cities.length];
9 this.cities=cities;
8 10 } }
11
9 12 public int getIndex(int index){ public int getIndex(int index){
10 13 return order[index]; return order[index];
11 14 } }
15
12 16 public void setIndex(int index,int toSet){ public void setIndex(int index,int toSet){
13 17 order[index]=toSet; order[index]=toSet;
14 18 } }
15 public int getTotalLength(){
19
20 public int getTotalLength(double[][] dist){
16 21 int length=0; int length=0;
17 for(int i: order){
18 //TODO implement calculation of length
22
23 for (int i = 0; i < order.length; i++) {
24 City current = cities[order[i]];
25 City next;
26 try {
27 next = cities[order[i + 1]];
28 }catch (ArrayIndexOutOfBoundsException e){
29 next = cities[order[0]];
30 }
31 length+= dist[current.getID()][next.getID()];
19 32 } }
20 33 return length; return length;
21 34 } }
35
36 public int getSize(){
37 return cities.length;
38 }
39
40 public void swapIndicies(int index1 , int index2){
41 int temp = order[index1];
42 order[index1] = order[2];
43 order[index2] = temp;
44 }
22 45 } }
File src/salesman/salesman/data/City.java deleted (index 35d2d6e..0000000)
1 package salesman.salesman.data;
2
3 import java.util.Random;
4
5 public class City {
6 private int x, y;
7
8 public City(int x, int y) {
9 this.x = x;
10 this.y = y;
11 }
12
13 public City() {
14 x = new Random().nextInt(600);
15 y = new Random().nextInt(800);
16 }
17
18 public int getX() {
19 return x;
20 }
21
22 public int getY() {
23 return y;
24 }
25
26
27 }
File src/salesman/ui/BrutForceController.java changed (mode: 100644) (index 46ce64f..7fc0fd9)
... ... import javafx.event.ActionEvent;
4 4 import javafx.event.EventHandler; import javafx.event.EventHandler;
5 5 import javafx.fxml.FXML; import javafx.fxml.FXML;
6 6 import javafx.scene.control.Button; import javafx.scene.control.Button;
7 import salesman.salesman.algorithms.AlgorithmBrutForce;
7 import salesman.algorithms.AlgorithmBrutForce;
8 8
9 9
10 10 public class BrutForceController { public class BrutForceController {
File src/salesman/ui/MainWindowController.java changed (mode: 100644) (index ff9b617..57e82cd)
... ... import javafx.scene.input.MouseEvent;
12 12 import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
13 13 import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
14 14 import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
15 import salesman.data.Data;
15 16
16 17 import java.io.IOException; import java.io.IOException;
17 18
 
... ... public class MainWindowController {
29 30 public static int getNumOfCities(){ public static int getNumOfCities(){
30 31 return Integer.valueOf(txtFieldNumCities.getText()); return Integer.valueOf(txtFieldNumCities.getText());
31 32 } }
33 public static Data data = new Data(10);
32 34
33 35 private GridPane actualMenu; private GridPane actualMenu;
34 36
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/SF2311/travelling-salesman

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/SF2311/travelling-salesman

Clone this repository using git:
git clone git://git.rocketgit.com/user/SF2311/travelling-salesman

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main