예제 #1
0
        static void Main(string[] args)
        {
            string filePath = "D:\\konfig.txt"; // ścieżka do pliku z modelem.
            int    n        = 35;               // liczba przystanków
            int    t        = 1;                // liczba interwalów czasowych.
            int    p        = 10;               // liczba petli.
            int    l        = 2;                // liczba linii.
            Random r        = new Random();
            Model  m        = new Model(r);

            m.Generuj(n, t, p);

            string command = "";

            while (command != "exit")
            {
                command = Console.ReadLine();
                int[]  param;
                string txtCommand;

                if (GetCommand(command, out txtCommand, out param))
                {
                    switch (txtCommand)
                    {
                    case "load":
                        if (param == null || param.Count() == 0)
                        {
                            m = new Model(r);
                            if (m.Wczytaj(filePath))
                            {
                                Console.WriteLine("Wczytano model z pliku.");
                            }
                            else
                            {
                                Console.WriteLine("Błędna składnia pliku. Nie udało się wczytać.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "inc":
                        if (param != null && param.Count() == 1)
                        {
                            WriteIncydentneKrawedzie(m, param[0]);
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "neig":
                        if (param != null && param.Count() == 1)
                        {
                            WriteSasiedzi(m, param[0]);
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "term":
                        if (param == null || param.Count() == 0)
                        {
                            WritePetle(m);
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "traf":
                        if (param != null && param.Count() == 1)
                        {
                            WriteRuch(m, param[0]);
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "newline":
                        if (param == null || param.Count() == 0)
                        {
                            Linia T = LosujLinie(m, r);
                            WriteLinia(T);
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "cntk":
                        if (param != null && param.Count() == 1)
                        {
                            Console.WriteLine("Liczba stacji o krawędziach " + param[0] + " = " + m.CountStacje(param[0]).ToString() + "\n");
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "cntp":
                        if (param != null && param.Count() == 1)
                        {
                            Console.WriteLine("Liczba pętli o krawędziach " + param[0] + " = " + m.CountPetle(param[0]).ToString() + "\n");
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "newweb":
                        if (param == null || param.Count() == 0)
                        {
                            Siec s = new Siec(1, m, r, l);
                            Console.WriteLine(s);
                            // Wyk kraw.
                            Dictionary <Krawedz, List <int> > wyk = s.GetWykorzystaneKrawedzie();
                            Console.WriteLine();
                            Console.WriteLine(string.Join("\n", wyk.Select(x => x.Key.ToString() + "=" +
                                                                           "{" + string.Join(",", x.Value) + "}").ToArray()));
                            List <Polaczenie> pol = s.GetWyznaczonePolaczenia();
                            Console.WriteLine();
                            Console.WriteLine(string.Join("\n", pol.Select(x => "[" + x.Id[0] + "," + x.Id[1] + "] = " +
                                                                           "{" + string.Join(",", x.Krawedzie.Select(y => y.Krawedz.StringFormatDlaPolaczen)) + "}").ToArray()));
                            Console.WriteLine();
                            Console.WriteLine(s.PrintKoszt());
                            Console.WriteLine();
                            Console.WriteLine("Wykorzystane przystanki: " + s.WykorzystanePrzystanki + "/" + m.GetStacje().Count() + "\n");
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "run":
                        if (param == null || param.Count() == 0)
                        {
                            AlgorytmEwolucyjny alg = new AlgorytmEwolucyjny(m, r, l, 10);
                            alg.Run();
                        }
                        else
                        {
                            Console.WriteLine("Błąd skladni");
                        }
                        break;

                    case "exit":
                        Console.WriteLine("Wychodzę");
                        break;

                    default:
                        Console.WriteLine("Nieznana komenda");
                        break;
                    }
                }
                else
                {
                    Console.WriteLine("Błąd skladni");
                }
            }
        }