public void run() { string outputFileName = InstanceName + ".csv"; var qapDataReader = new QapDataFileReader(); QapSolutionBenchmark benchmark = new QapSolutionBenchmark(); var data = qapDataReader.ReadData(@"../AlgBattle/Data/BaseData/" + InstanceName + ".dat"); var optimalSolution = qapDataReader.ReadSolution(@"../AlgBattle/Data/BaseData/" + InstanceName + ".sln"); Console.WriteLine("Start processing"); QapSimpleGreedySolver hSolver = new QapSimpleGreedySolver(data); RunSolver(hSolver, data, benchmark, optimalSolution, "efficiency_heuristic_" + outputFileName); Console.WriteLine("Heuristic done"); QapRandomSolver rSolver = new QapRandomSolver(data); RunSolver(rSolver, data, benchmark, optimalSolution, "efficiency_random_" + outputFileName); Console.WriteLine("Random done"); QapSteepestLocalSolver sSolver = new QapSteepestLocalSolver(data); RunSolver(sSolver, data, benchmark, optimalSolution, "efficiency_steepest_" + outputFileName); Console.WriteLine("Steepest done"); QapGreedyLocalSolver gSolver = new QapGreedyLocalSolver(data); RunSolver(gSolver, data, benchmark, optimalSolution, "efficiency_greedy_" + outputFileName); Console.WriteLine("greedy done"); QapAnnealingSolver aSolver = new QapAnnealingSolver(data); RunSolver(aSolver, data, benchmark, optimalSolution, "efficiency_annealing_" + outputFileName); Console.WriteLine("annealing done"); QapTabuSolver tSolver = new QapTabuSolver(data); RunSolver(tSolver, data, benchmark, optimalSolution, "efficiency_tabu_" + outputFileName); Console.WriteLine("tabu done"); }
public void run() { string outputFileName = InstanceName + ".csv"; var qapDataReader = new QapDataFileReader(); QapSolutionBenchmark benchmark = new QapSolutionBenchmark(); var data = qapDataReader.ReadData(@"../AlgBattle/Data/BaseData/" + InstanceName + ".dat"); var optimalSolution = qapDataReader.ReadSolution(@"../AlgBattle/Data/BaseData/" + InstanceName + ".sln"); //QapSteepestLocalSolver sSolver = new QapSteepestLocalSolver(data); //runSolver(sSolver, data, benchmark, optimalSolution, "firstVsLastsResult_steepest_" + outputFileName); //QapGreedyLocalSolver gSolver = new QapGreedyLocalSolver(data); //runSolver(gSolver, data, benchmark, optimalSolution, "firstVsLastsResult_greedy_" + outputFileName); //QapAnnealingSolver aSolver = new QapAnnealingSolver(data); //runSolver(aSolver, data, benchmark, optimalSolution, "firstVsLastsResult_annealing_" + outputFileName); QapTabuSolver tSolver = new QapTabuSolver(data); runSolver(tSolver, data, benchmark, optimalSolution, "firstVsLastsResult_tabu_" + outputFileName); }
public void RunTest(int reps = 5, string outputName = "output", IList <string> fileNames = null) { fileNames = fileNames ?? FileNames; var outputNameTime = outputName + "_time.csv"; var outputNameScore = outputName + "_score.csv"; var outputNameMin = outputName + "_score_min.csv"; var outputNameMax = outputName + "_score_max.csv"; var outputNameMedian = outputName + "_score_median.csv"; var outputNameStd = outputName + "_score_std.csv"; var outputNameSimilarity = outputName + "_score_similarity.csv"; var outputNameSteps = outputName + "_steps_gs.csv"; var outputNameCheckedElems = outputName + "_checked_elems_gs.csv"; var bench = new QapSolutionBenchmark(); var outputScore = new ulong [fileNames.Count, 6]; var outputTime = new double [fileNames.Count, 6]; var outputMin = new ulong[fileNames.Count, 6]; var outputMax = new ulong[fileNames.Count, 6]; var outputMedian = new ulong[fileNames.Count, 6]; var outputStd = new int[fileNames.Count, 6]; var outputSimilarity = new double[fileNames.Count, 6]; var outputSteps = new int[fileNames.Count, 4]; var outputCheckedElems = new int[fileNames.Count, 4]; for (int i = 0; i < fileNames.Count; ++i) { for (int j = 0; j < 6; j++) { outputMin[i, j] = UInt64.MaxValue; outputMax[i, j] = 0; } } for (int i = 0; i < fileNames.Count; ++i) { string s = fileNames[i]; var qapDataReader = new QapDataFileReader(); var data = qapDataReader.ReadData(@"../AlgBattle/Data/BaseData/" + s + ".dat"); var solution = qapDataReader.ReadSolution(@"../AlgBattle/Data/BaseData/" + s + ".sln"); Stopwatch sw = new Stopwatch(); ulong mediumRate = 0; double mediumSim = 0; for (int a = 0; a < 6; ++a) { var algorithm = GetAlgorithm(a, data); Console.WriteLine("File: " + s + "Alg num: " + a); var tempList = new List <ulong>(); for (int j = 0; j < reps; j++) { sw.Start(); var sol = algorithm.GetSolution(); sw.Stop(); ulong rate = bench.RateSolution(sol, data); var sim = bench.RateSimilarity(sol, solution.Solution.ToArray()); mediumRate += Convert.ToUInt64(rate); mediumSim += sim; if (rate > outputMax[i, a]) { outputMax[i, a] = rate; } if (rate < outputMin[i, a]) { outputMin[i, a] = rate; } tempList.Add(rate); if (a >= 2) //GS { outputCheckedElems[i, a - 2] += algorithm.CheckedElems; outputSteps[i, a - 2] += algorithm.Steps; } } if (a >= 2) { outputCheckedElems[i, a - 2] = (int)(outputCheckedElems[i, a - 2] / reps); outputSteps[i, a - 2] = (int)(outputSteps[i, a - 2] / reps); } outputMedian[i, a] = this.GetMedian(tempList); outputStd[i, a] = Convert.ToInt32(tempList.Select(x => Convert.ToInt32(x)).ToList().StandardDeviation()); mediumRate /= Convert.ToUInt64(reps); mediumSim /= reps; var mediumTime = sw.Elapsed.TotalMilliseconds / reps; sw.Reset(); //save outputScore[i, a] = mediumRate; outputTime[i, a] = mediumTime; outputSimilarity[i, a] = mediumSim; } } using (StreamWriter file = File.AppendText(outputNameTime)) { for (int i = 0; i < 6; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputTime[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameScore)) { for (int i = 0; i < 6; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputScore[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameMin)) { for (int i = 0; i < 6; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputMin[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameMax)) { for (int i = 0; i < 6; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputMax[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameMedian)) { for (int i = 0; i < 6; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputMedian[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameStd)) { for (int i = 0; i < 6; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputStd[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameSimilarity)) { for (int i = 0; i < 6; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputSimilarity[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameCheckedElems)) { for (int i = 0; i < 4; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputCheckedElems[j, i] + ";"); } file.Write("\n"); } } using (StreamWriter file = File.AppendText(outputNameSteps)) { for (int i = 0; i < 4; ++i) { for (int j = 0; j < fileNames.Count; ++j) { file.Write(outputSteps[j, i] + ";"); } file.Write("\n"); } } }