private static void StartYenAlgorithm() { Console.WriteLine("csv format: < string;node1;node2;weight >"); string file = ""; while (string.IsNullOrWhiteSpace(file) || !File.Exists(file)) { Console.WriteLine("CSV Input filepath:"); file = Console.ReadLine().Trim('"').Trim(); } FileInfo fi = new FileInfo(file); Console.WriteLine($"Found file {fi.Name}."); double min; double max; string ml1 = ""; while (!double.TryParse(ml1, out min)) { Console.WriteLine("Minimum line length:"); ml1 = Console.ReadLine(); } string mxl = ""; while (!double.TryParse(mxl, out max)) { Console.WriteLine("Maximum line length: "); mxl = Console.ReadLine(); } if (min > max) { Console.WriteLine("Minimum > Maximum. Quitting.."); } else { Console.WriteLine("Hit key to start line generation."); Console.ReadKey(); CsvFileReader r = new CsvFileReader(); LineGeneration lg = new LineGeneration(); try { Graph graph = r.ReadGraphFromFile(file); var paths = lg.GenerateLines(min, max, graph); foreach (var p in paths) { Console.WriteLine(PathPrinter.PrintTaggedPath(p)); } LineOutputWriter.WriteCsv(Path.Combine(fi.DirectoryName, fi.Name.Replace(fi.Extension, "_solution" + fi.Extension)), paths); Console.WriteLine("wrote solution to folder " + fi.DirectoryName); } catch (Exception ex) { Console.WriteLine($"Execution Error: {ex.Message}"); } Console.WriteLine("Hit key to exit."); Console.ReadKey(); } }
public IActionResult LineGen(YenInputViewmodel model) { if (ModelState.IsValid) { try { GraphConvert r = new GraphConvert(); LineGeneration lg = new LineGeneration(); var graph = r.ReadGraphFromString(model.CsvString, model.MirrorArcs); var paths = lg.GenerateLines(model.MinimumLength, model.MaximumLength, graph); string result = r.WriteText(paths); YenInputViewmodel vmResult = new YenInputViewmodel() { MinimumLength = model.MinimumLength, MaximumLength = model.MaximumLength, CsvString = result }; var stream = new MemoryStream(); StreamWriter w = new StreamWriter(stream); w.Write(vmResult.CsvString); w.Flush(); stream.Position = 0; return(File(stream, "text/comma-separated-values", "Lineplanning.csv")); } catch (Exception ex) { ViewBag.ExceptionMessage = ex.Message; return(View("Failed")); } } else { return(View(model)); } }