diff options
Diffstat (limited to 'src/Program/Program.cs')
-rw-r--r-- | src/Program/Program.cs | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/src/Program/Program.cs b/src/Program/Program.cs index c27369a..05a91dc 100644 --- a/src/Program/Program.cs +++ b/src/Program/Program.cs @@ -13,9 +13,8 @@ namespace Program { List<Analysis> Analysii = new(); DirectoryInfo graphDir = new DirectoryInfo((args.Length > 0) ? args[0] : "graphs"); - - FileInfo outfile = new("../../output.csv"); - File.WriteAllText(outfile.FullName, $"Filename,ResultType,Iterations,MinCut,Runtime\n"); + DirectoryInfo outDir = new("../../output"); + outDir.Create(); if (!graphDir.Exists) { @@ -23,14 +22,48 @@ namespace Program System.Environment.Exit(1); } + string cuts_header = $"Graph,Exact Cuts,Contract1 Cuts,Contract2 Cuts,Contract3 Cuts,Contract4 Cuts,Contract5 Cuts"; + string times_header = $"Graph,Exact (ms),Contract1 (ms),Contract2 (ms),Contract3 (ms),Contract4 (ms),Contract5 (ms)"; + List<string> constant_cuts = new() { cuts_header }; + List<string> constant_times = new() { times_header }; + List<string> linear_cuts = new() { cuts_header }; + List<string> linear_times = new() { times_header }; + List<string> polynomial_cuts = new() { cuts_header }; + List<string> polynomial_times = new() { times_header }; + foreach (var file in graphDir.EnumerateFiles()) { Graph graph = ReadFile(file); - Analysis analysis = new(graph, file.Name); - analysis.Analize(); - Analysii.Add(analysis); - File.AppendAllLines(outfile.FullName, analysis.ToCSV()); + Analysis analysis = new(graph, 5); + List<Result> results; + int iter; + Console.WriteLine(file.Name); + + iter = 10; + Console.WriteLine($"\nconstant ({iter}):"); + results = analysis.Analize(iter); + constant_cuts.Add($"{file.Name},{String.Join(",", results.Select(r => r.MinCut))}"); + constant_times.Add($"{file.Name},{String.Join(",", results.Select(r => r.Runtime.TotalMilliseconds))}"); + + iter = graph.Nodes.Count; + Console.WriteLine($"\nlinier ({iter}):"); + results = analysis.Analize(iter); + linear_cuts.Add($"{file.Name},{String.Join(",", results.Select(r => r.MinCut))}"); + linear_times.Add($"{file.Name},{String.Join(",", results.Select(r => r.Runtime.TotalMilliseconds))}"); + + iter = (int)(Math.Pow(graph.Nodes.Count, 2) * Math.Log(graph.Nodes.Count, Math.E)); + Console.WriteLine($"\npolynomial ({iter}):"); + results = analysis.Analize(iter); + polynomial_cuts.Add($"{file.Name},{String.Join(",", results.Select(r => r.MinCut))}"); + polynomial_times.Add($"{file.Name},{String.Join(",", results.Select(r => r.Runtime.TotalMilliseconds))}"); } + + File.WriteAllLines($"{outDir.FullName}/constant_cuts.csv", constant_cuts); + File.WriteAllLines($"{outDir.FullName}/constant_times.csv", constant_times); + File.WriteAllLines($"{outDir.FullName}/linear_cuts.csv", linear_cuts); + File.WriteAllLines($"{outDir.FullName}/linear_times.csv", linear_times); + File.WriteAllLines($"{outDir.FullName}/polynomial_cuts.csv", polynomial_cuts); + File.WriteAllLines($"{outDir.FullName}/polynomial_times.csv", polynomial_times); } public static Graph ReadFile(FileInfo file) |