だから私は、経度と緯度をとって、私が持っている各ルートの距離を計算しようとしています. これを arrayList に追加してから、次のルートに進みます。最初の 3 つのルートを計算しているようですが、その後は 3 番目の要素を追加し続けているようです。
誰かが私が間違ったことを見ることができますか? かなり大きな機能です
ArrayList<Integer> xCoords = new ArrayList<Integer>();
ArrayList<Integer> yCoords = new ArrayList<Integer>();
int fitness2 = 0;
for (List<Integer> eachChromeNew : populationShuffle){
for (int n =0; n < eachChromeNew.size();n++){
xCoords.add(geoPoints.get(n).getLongitudeE6());
yCoords.add(geoPoints.get(n).getLatitudeE6());
}
for (int c = 0; c < xCoords.size();c++){
if(c != xCoords.size()-1)
{
int x1 = xCoords.get(c);
int y1 = xCoords.get(c + 1);
int x2 = yCoords.get(c);
int y2 = yCoords.get(c + 1);
fitness2 += Math.sqrt((Math.pow(x2 - x1,2) + Math.pow(y2 - y1, 2)));
}
fitnessArrayTest.add(fitness2);
}
System.out.println("Fitness Test is: = " +fitness2);
}
これが出力です
10-08 21:43:10.715: I/System.out(26785): Fitness Test is: = 669448211
10-08 21:43:10.715: I/System.out(26785): Fitness Test is: = 2092025460
10-08 21:43:10.720: I/System.out(26785): Fitness Test is: = 2147483647
10-08 21:43:10.720: I/System.out(26785): Fitness Test is: = 2147483647
10-08 21:43:10.720: I/System.out(26785): Fitness Test is: = 2147483647
10-08 21:43:10.720: I/System.out(26785): Fitness Test is: = 2147483647
編集
したがって、提案されたようなダブルに変更した後、わずかに機能するように見えますが、数回後に着実に増加するようです. ここに私が意味するものがあります:
1
0-08 21:56:07.275: I/System.out(28729): Fitness Test is: = 6.694724656380861E8
10-08 21:56:07.275: I/System.out(28729): Fitness Test is: = 2.0921019557100217E9
10-08 21:56:07.275: I/System.out(28729): Fitness Test is: = 4.267888470215804E9
10-08 21:56:07.275: I/System.out(28729): Fitness Test is: = 7.196832009155435E9
10-08 21:56:07.280: I/System.out(28729): Fitness Test is: = 1.0878932572528923E10
10-08 21:56:07.280: I/System.out(28729): Fitness Test is: = 1.5314190160336267E10
10-08 21:56:07.280: I/System.out(28729): Fitness Test is: = 2.050260477257744E10
10-08 21:56:07.285: I/System.out(28729): Fitness Test is: = 2.644417640925244E10
10-08 21:56:07.285: I/System.out(28729): Fitness Test is: = 3.313890507036129E10
10-08 21:56:07.285: I/System.out(28729): Fitness Test is: = 4.0586790755903984E10
10-08 21:56:07.285: I/System.out(28729): Fitness Test is: = 4.878783346588052E10
10-08 21:56:07.285: I/System.out(28729): Fitness Test is: = 5.774203320029091E10
10-08 21:56:07.285: I/System.out(28729): Fitness Test is: = 6.744938995913514E10
10-08 21:56:07.285: I/System.out(28729): Fitness Test is: = 7.790990374241312E10
10-08 21:56:07.290: I/System.out(28729): Fitness Test is: = 8.912357455012492E10
数字の末尾にある E8、E9、E10 は何ですか?
編集
マーティンがそれを1000000で割ることを提案した後、私はより良い範囲の答えを得ましたが、別の問題、できれば最後の問題に出くわしたことはわかっています。これは、フィットネスが毎回増加するということであり、私が期待しているのはランダムな順序です。ここに新しい出力があります
10-08 22:18:49.990: I/System.out(2576): Fitness Test is: = 669.4690141960474
10-08 22:18:49.995: I/System.out(2576): Fitness Test is: = 2092.0939129186613
10-08 22:18:49.995: I/System.out(2576): Fitness Test is: = 4267.874696167842
10-08 22:18:49.995: I/System.out(2576): Fitness Test is: = 7196.8113639435915
10-08 22:18:49.995: I/System.out(2576): Fitness Test is: = 10878.903916245905
10-08 22:18:50.000: I/System.out(2576): Fitness Test is: = 15314.152353074784
10-08 22:18:50.005: I/System.out(2576): Fitness Test is: = 20502.556674430216
10-08 22:18:50.005: I/System.out(2576): Fitness Test is: = 26444.116880312213
10-08 22:18:50.005: I/System.out(2576): Fitness Test is: = 33138.83297072078
10-08 22:18:50.005: I/System.out(2576): Fitness Test is: = 40586.70494565593
10-08 22:18:50.010: I/System.out(2576): Fitness Test is: = 48787.73280511766
10-08 22:18:50.010: I/System.out(2576): Fitness Test is: = 57741.916549105954
10-08 22:18:50.010: I/System.out(2576): Fitness Test is: = 67449.25617762083
10-08 22:18:50.010: I/System.out(2576): Fitness Test is: = 77909.75169066226
10-08 22:18:50.010: I/System.out(2576): Fitness Test is: = 89123.40308823026
10-08 22:18:50.010: I/System.out(2576): Fitness Test is: = 101090.21037032483
10-08 22:18:50.010: I/System.out(2576): Fitness Test is: = 113810.17353694596
10-08 22:18:50.015: I/System.out(2576): Fitness Test is: = 127283.29258809367
10-08 22:18:50.015: I/System.out(2576): Fitness Test is: = 141509.56752376774
誰かが何か間違ったことを見ることができますか?