java 的旅行推销员
Traveling Salesman for java
基于这个伪代码,我正在尝试为旅行推销员问题实现一个 java 适应度函数,但我不确定我是否做对了,有人可以帮助我吗。
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;
谁能帮帮我。谢谢
你应该开始决定你有什么和你想要什么。
你有什么
对于旅行商问题的适应度函数,根据您的伪代码,您将有以下输入。
- 城市数量
- 要计算适合度的游览
- 带距离的地图(在本例中为邻接矩阵)。
这应该是你的适应度函数的形式参数。
你想要什么
适应度函数的目的是根据单个参数来衡量质量。
在这种情况下,长度就是为了这个目的。
这应该是您的适应度函数的返回值。
这使得 的原型成为您的 适应度函数 如下
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.
非常简单
祝你好运。
基于这个伪代码,我正在尝试为旅行推销员问题实现一个 java 适应度函数,但我不确定我是否做对了,有人可以帮助我吗。
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;
谁能帮帮我。谢谢
你应该开始决定你有什么和你想要什么。
你有什么
对于旅行商问题的适应度函数,根据您的伪代码,您将有以下输入。
- 城市数量
- 要计算适合度的游览
- 带距离的地图(在本例中为邻接矩阵)。
这应该是你的适应度函数的形式参数。
你想要什么
适应度函数的目的是根据单个参数来衡量质量。
在这种情况下,长度就是为了这个目的。
这应该是您的适应度函数的返回值。
这使得 的原型成为您的 适应度函数 如下
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.
非常简单祝你好运。