Коммивояжер для java
основываясь на этом псевдо-коде, я пытаюсь реализовать функцию Java fittness для Проблемы коммивояжера, но я не уверен, что делаю это правильно, может кто-нибудь, пожалуйста, помогите мне.
N The number of cities to visit
T A tour (list of integers of size N)
D An N by N matrix containing each d(i,j)
Let s = 0
For i = 1 to (N-1)
Let a = ti
Let b = ti+1
Let s = s + d(a,b)
End For
Let end_city = tn
Let start_city = t1
Let s = s + d(end_city,start_city)
The tour length s
моя попытка написать это на java
public static ArrayList<Integer> Fitness(){
int n = 10; // Number of cities to visit
ArrayList<Integer> t = new ArrayList<Integer>();
int[][] d = null;
int s = 0, a, b;
for (int i = 1; i<n; i++){
for (int j = 1; j<n; j++){
d = new int[i][j];
}
for( i = 1; i<n; i++){
a = t.get(i);
b = t.get(i+1);
s = s + d[a][b];
}
int end_city = t.get(n);
int start_city = t.get(1);
s = s + d[end_city][start_city];
}
return t;
может кто-то пожалуйста, помогите мне. Спасибо.
1 ответов
вы должны начать решать что у вас есть и что вы хотите.
что у вас есть
для фитнес-функции для Проблемы коммивояжера, согласно вашему псевдо-коду, у вас будет следующий ввод.
- количество городов
- тур, пригодность которого должна быть рассчитана
- карта с расстояниями (в этом случае матрица смежности).
Это должно быть the формальных параметров вашей функции пригодности.
что вы хотите
цель фитнес-функции состоит в том, чтобы иметь способ измерения качества с точки зрения одного параметра.
в этом случае длина служит этой цели.
Это должно быть возвращаемое значение вашей функции пригодности.
это делает прототип код функции будет как следует
public double fitness(List<Integer> tour,
int numberOfCities,
double[][] distanceBetween);
теперь псевдо-код для тела, легко расшифровать, если вы отступ это правильно и посмотрите еще раз.
Let s = 0
For i = 1 to (N-1)
Let a = ti
Let b = ti+1
Let s = s + d(a,b)
End For
Let end_city = tn
Let start_city = t1
Let s = s + d(end_city,start_city)
The tour length s
это должно быть довольно легко разработать остальные. Это довольно просто перевести его на Java.
удачи.