Beispiel #1
0
 public static void Run()
 {
     MaxPaths = GetMaxPaths();
     if (MaxPaths == 0 || !Bfs(Map.StartRoom, Map.EndRoom))
     {
         throw new Exceptions.NoPathException();
     }
     Solutions.SaveSolution(1, true);
     if (Map.AntsNumber == 1)
     {
         return;
     }
     Suurballe();
 }
Beispiel #2
0
 private static void Suurballe()
 {
     Map.StartRoom.StepsLabel = 0;
     ChangeMinPath();
     for (var curPathsCount = 2; curPathsCount <= MaxPaths; curPathsCount++)
     {
         _currentSearchCounter++;
         if (!BellmanFord())
         {
             break;
         }
         ChangeMinPath();
         Solutions.SaveSolution(curPathsCount);
         if (Solutions.IsEnough())
         {
             break;
         }
         _disabledLinks.ToList().ForEach(link => link.Enable());
         _disabledLinks = new HashSet <Link>();
     }
 }
Beispiel #3
0
 private static void Main(string[] args)
 {
     try
     {
         MapFile.ReadMap(args);
         Map.ParseMap();
         Algorithm.Run();
     }
     catch (Exceptions.ArgumentsException ex)
     {
         Console.WriteLine(ex.Message);
         Console.WriteLine("Usage: \"Lem-in.exe MapFile\"");
         Environment.Exit(0);
     }
     catch (Exception ex) when(ex is Exceptions.MapException || ex is Exceptions.NoPathException)
     {
         Console.WriteLine("Error: " + ex.Message);
         Environment.Exit(0);
     }
     MapFile.Output(toDelete: true);
     Console.Write(Environment.NewLine);
     Solutions.ViewSolution(Solutions.CurrentSolution);
     Ants.Go();
 }