public ExperimentResults<int> AreaPercentage_HC_RangeQuery( string dataFile, int order, double pcMin, double pcMax, double inc, int trials) { HCQueryEvaluator qe = new HCQueryEvaluator(dataFile, order, CurveType.UpLeft); ExperimentResults<int> result = new ExperimentResults<int>( "range_hc_ap_" + order + '_' + pcMin + '_' + pcMax); //Percentage for (double p = pcMin; p <= pcMax; p += inc) { //Calculate the range for this percenage. double area = TotalArea * 0.01 * p; double kmRange = Math.Sqrt(area / Math.PI); double degRange = kmRange / kmPerDeg; result.AddCategory(p + " percent"); //For each experiment, run trial number of times for (int i = 0; i < trials; i++) { result.AddResult(qe.RangeQuery( qp.GetRandomQueryPoint(), (float)degRange)); } } return result; }
static void Main(string[] args) { HCQueryEvaluator qe = new HCQueryEvaluator("CA.txt", 12, CurveType.UpLeft); //Console.WriteLine(qe.KnnQuery(new Point(3f, 5f), 1)); //From 1 to 5 percent for (int k = 1; k <= 10; k++) { Console.WriteLine(k + " Nearest Neighbor"); //For each experiment, run 100 times for (int i = 0; i < 500; i++) { double x = RandX(); Console.WriteLine(qe.KnnQuery( new Point((float)x, (float)y(x)), k)); } } }
public ExperimentResults<int> HCKnnQuery( string dataFile, int order, int min, int max, int inc, int trials) { HCQueryEvaluator qe = new HCQueryEvaluator(dataFile, order, CurveType.UpLeft); ExperimentResults<int> result = new ExperimentResults<int>( "knn_hc_" + order + '_' + min + '_' + max); //Area for (int k = 1; k <= 10; k+=inc) { result.AddCategory(k + " NN"); //For each experiment, run trial number of times for (int i = 0; i < trials; i++) { result.AddResult(qe.KnnQuery( qp.GetRandomQueryPoint(), k)); } } return result; }
public ExperimentResults<int> AreaSqMile_HC_RangeQuery( string dataFile, int order, double min, double max, double inc, int trials) { HCQueryEvaluator qe = new HCQueryEvaluator(dataFile, order, CurveType.UpLeft); ExperimentResults<int> result = new ExperimentResults<int>( "range_hc_sqmi_" + order + '_' + min + '_' + max); //Area for (double a = min; a <= max; a += inc) { //Calculate the range for this percenage. double miRange = Math.Sqrt(a / Math.PI); double degRange = miRange / 69; result.AddCategory(a + " Sq Mi"); //For each experiment, run trial number of times for (int i = 0; i < trials; i++) { result.AddResult(qe.RangeQuery( qp.GetRandomQueryPoint(), (float)degRange)); } } return result; }