public static void benchmark(int max_n, int avg_iterations, String basepath, int brute_max_n) { using (var avgtw = new StreamWriter(basepath + "average__results.csv", false)) { avgtw.WriteLine("N;satur;BruteMs;BruteChromatic;SLMs;SLChromatic;BFSMs;BFSChromatic;DSaturMs;DSaturChromatic;"); for (int n = 1; n < max_n; n++) { Results res = RunTests(basepath + n + "_sparse.csv", avg_iterations, n, 0.1, brute_max_n); avgtw.WriteLine(String.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};", n, 0.1 , res.AvgBruteMs(), res.AvgBruteChromaticNum() , res.AvgSLMs(), res.AvgSLChromaticNum() , res.AvgBFSMs(), res.AvgBFSChromaticNum() , res.AvgDSMs(), res.AvgDSChromaticNum())); res = RunTests(basepath + n + "_medium.csv", avg_iterations, n, 0.5, brute_max_n); avgtw.WriteLine(String.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};", n, 0.5 , res.AvgBruteMs(), res.AvgBruteChromaticNum() , res.AvgSLMs(), res.AvgSLChromaticNum() , res.AvgBFSMs(), res.AvgBFSChromaticNum() , res.AvgDSMs(), res.AvgDSChromaticNum())); res = RunTests(basepath + n + "_dense.csv", avg_iterations, n, 0.9, brute_max_n); avgtw.WriteLine(String.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};", n, 0.9 , res.AvgBruteMs(), res.AvgBruteChromaticNum() , res.AvgSLMs(), res.AvgSLChromaticNum() , res.AvgBFSMs(), res.AvgBFSChromaticNum() , res.AvgDSMs(), res.AvgDSChromaticNum())); } } Console.WriteLine("Benchmark done. Press key to exit..."); Console.ReadKey(); }
public static void benchmarkGraph(Graph graph, int avg_iterations, bool usebrute) { Results results = new Results(); Console.WriteLine("Benchmarking graph with {0} vertices and {1} edges.", graph.VerticesCount, graph.EdgesCount); for (int i = 0; i < avg_iterations; i++) { Result res = new Result(); res.vertices = graph.VerticesCount; res.edges = graph.EdgesCount; int[] result; long elapsedMs; Stopwatch watch; Console.WriteLine("Starting iteration " + i); if (usebrute) { watch = System.Diagnostics.Stopwatch.StartNew(); result = BruteForce.Solve(ref graph); watch.Stop(); elapsedMs = watch.ElapsedMilliseconds; bool tmp = graph.IsColoringValid(); res.bruteChromaticNum = graph.ChromaticNumber(); res.bruteTimeMs = elapsedMs; res.bruteValid = graph.IsColoringValid(); } watch = System.Diagnostics.Stopwatch.StartNew(); result = SmallestLast.Solve(ref graph); watch.Stop(); elapsedMs = watch.ElapsedMilliseconds; res.smallestlastChromaticNum = graph.ChromaticNumber(); res.smallestlastTimeMs = elapsedMs; res.smallestlastValid = graph.IsColoringValid(); watch = System.Diagnostics.Stopwatch.StartNew(); result = DSatur.Solve(ref graph); watch.Stop(); elapsedMs = watch.ElapsedMilliseconds; res.dsaturChromaticNum = graph.ChromaticNumber(); res.dsaturTimeMs = elapsedMs; res.dsaturValid = graph.IsColoringValid(); watch = System.Diagnostics.Stopwatch.StartNew(); result = BFSColoring.Solve(ref graph); watch.Stop(); elapsedMs = watch.ElapsedMilliseconds; res.bfsChromaticNum = graph.ChromaticNumber(); res.bfsTimeMs = elapsedMs; res.bfsValid = graph.IsColoringValid(); results.Add(res); //Console.WriteLine(String.Format("{0};{1};{2};{3};{4};{5};{6};{7};", // res.bruteTimeMs, res.bruteChromaticNum, // res.smallestlastTimeMs, res.smallestlastChromaticNum, // res.bfsTimeMs, res.bfsChromaticNum, // res.dsaturTimeMs, res.dsaturChromaticNum)); } Console.WriteLine("Brute ms;XBrute;BFS ms;Xbfs;DS ms;Xds;SL ms;Xsl"); Console.WriteLine(String.Format("{0};{1};{2};{3};{4};{5};{6};{7};" , results.AvgBruteMs(), results.AvgBruteChromaticNum() , results.AvgBFSMs(), results.AvgBFSChromaticNum() , results.AvgDSMs(), results.AvgDSChromaticNum() , results.AvgSLMs(), results.AvgSLChromaticNum())); Console.WriteLine("Benchmark done. Press key to exit..."); Console.ReadKey(); }