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 |
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 |