private static void RunAlgorithmsWithLocalSearch(IGraph graph, ISolver solver, string coordinatesPath, string resultsPath) { var edgeFinder = new EdgeFinder(); var graspEdgeFiner = new GraspEdgeFinder(3); var localSearchSolver = new TspLocalSearchSolver(graph); var localSearchALgorithm = new LocalSearchAlgorithm(Steps, edgeFinder); var generatedPaths = solver.Solve(new NearestNeighborAlgorithm(Steps, edgeFinder)); localSearchSolver.Solve(localSearchALgorithm, generatedPaths); LocalSearchResultPrinter(localSearchSolver, "NN_LS", coordinatesPath, resultsPath).Print("NN with local search opt"); generatedPaths = solver.Solve(new GreedyCycleAlgorithm(Steps, edgeFinder)); localSearchSolver.Solve(localSearchALgorithm, generatedPaths); LocalSearchResultPrinter(localSearchSolver, "GC_LS", coordinatesPath, resultsPath).Print("GC with local search opt"); generatedPaths = solver.Solve(new NearestNeighborAlgorithm(Steps, graspEdgeFiner)); localSearchSolver.Solve(localSearchALgorithm, generatedPaths); LocalSearchResultPrinter(localSearchSolver, "NNG_LS", coordinatesPath, resultsPath).Print("NN Grasp with local search opt"); generatedPaths = solver.Solve(new GreedyCycleAlgorithm(Steps, graspEdgeFiner)); localSearchSolver.Solve(localSearchALgorithm, generatedPaths); LocalSearchResultPrinter(localSearchSolver, "GCG_LS", coordinatesPath, resultsPath).Print("GC GRASP with local search opt"); generatedPaths = solver.Solve(new RandomPathAlgorithm(Steps, edgeFinder)); localSearchSolver.Solve(localSearchALgorithm, generatedPaths); LocalSearchResultPrinter(localSearchSolver, "Random_LS", coordinatesPath, resultsPath).Print("RANDOM with local search opt"); }
private string[] transformSquad(GameState gameState, Zone currentZone) { Log("Squad at #{0} is transformed to a new EdgeFinder", this.ZoneId); var squad = new EdgeFinder(this.Pods, this.ZoneId); gameState.Squads.Remove(this); gameState.Squads.Add(squad); squad.BeforeMove(gameState); var result = squad.Move(gameState).ToArray(); return(result); //TODO: When to call AfterMove()? }