User talk:AW/kD-Tree
Jump to navigation
Jump to search
Happy Easter! I have written my recursionless tree, but I am getting unexpected results (My tree is faster than rednaxela's by an unbelievable margin, and the results are different in robocode) I haven't been able figure this out and I am wondering if I am using rednaxela's tree incorrectly? Here is my tester class:
package tree;
import ags.utils.KdTree.SqrEuclid;
public class KDTreeTester {
static KDTree gunTree = new KDTree(8);
static SqrEuclid<double[]> AgsTree = new SqrEuclid<double[]>(8, 400000);
public static void main(String[] args) {
int numOfPoints = 40000;
long startTime = System.nanoTime();
for(int i = 1; i < numOfPoints; i++) {
DataPoint addPoint = new DataPoint(8, i);
addPoint.setCoordinates(0, Math.random());
addPoint.setCoordinates(1, Math.random());
addPoint.setCoordinates(2, Math.random());
addPoint.setCoordinates(3, Math.random());
addPoint.setCoordinates(4, Math.random());
addPoint.setCoordinates(5, Math.random());
addPoint.setCoordinates(6, Math.random());
addPoint.setCoordinates(7, Math.random());
gunTree.addPoint(addPoint);
}
DataPoint SearchPoint = new DataPoint(8, 50);
SearchPoint.setCoordinates(0, 0.2);
SearchPoint.setCoordinates(1, 0.1);
SearchPoint.setCoordinates(2, 0.6);
SearchPoint.setCoordinates(3, 0.9);
SearchPoint.setCoordinates(4, 0.2);
SearchPoint.setCoordinates(5, 0.7);
SearchPoint.setCoordinates(6, 0.3);
SearchPoint.setCoordinates(7, 0.5);
System.out.println("time elapsed building = " + ((System.nanoTime() -
startTime) * (1E-6)) + " milliseconds");
startTime = System.nanoTime();
// out.println(gunTree.getNearestNeighbor(SearchPoint).angle);
// out.println(gunTree.getNearestNeighbor(SearchPoint).getDistance(SearchPoint));
gunTree.getNearestNeighbor(SearchPoint);
System.out.println("time elapsed searching= " + ((System.nanoTime() -
startTime) * (1E-6)));
//
//
//
startTime = System.nanoTime();
for(int i = 1; i < numOfPoints; i++) {
double[] addPoint = new double[8];
addPoint[0] = Math.random();
addPoint[1] = Math.random();
addPoint[2] = Math.random();
addPoint[3] = Math.random();
addPoint[4] = Math.random();
addPoint[5] = Math.random();
addPoint[6] = Math.random();
addPoint[7] = Math.random();
double[] trash = new double[1];
trash[0] = 0.589;
AgsTree.addPoint(addPoint, trash);
}
double[] AgsSearchPoint = new double[8];
AgsSearchPoint[0] = 0.4;
AgsSearchPoint[1] = 0.5;
AgsSearchPoint[2] = 0.8;
AgsSearchPoint[3] = 0.2;
AgsSearchPoint[4] = 0.4;
AgsSearchPoint[5] = 0.2;
AgsSearchPoint[6] = 0.1;
AgsSearchPoint[7] = 0.9;
System.out.println("time elapsed building = " + ((System.nanoTime() -
startTime) * (1E-6)) + " milliseconds");
startTime = System.nanoTime();
// out.println(gunTree.getNearestNeighbor(SearchPoint).angle);
//
// out.println(gunTree.getNearestNeighbor(SearchPoint).getDistance(SearchPoint));
AgsTree.nearestNeighbor(AgsSearchPoint, 1, false);
System.out.println("time elapsed searching= " + ((System.nanoTime() -
startTime) * (1E-6)));
}
}
Thanks and God bless you, --AW 21:22, 24 April 2011 (UTC)