Example #1
0
        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();
            }
        }
Example #2
0
        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));
            }
        }