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(); }
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>(); } }
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(); }