/// <summary> /// internal function to setting solver /// </summary> /// <param name="tspsolver"></param> private void SetSolver(TSPSolver tspsolver) { this.solver = tspsolver; this.solverResult = this.solver.SolveTSP(this.ShowProgressOnProgressBar); if (this.solverResult != null && this.solverResult.CityQueue != null && this.solverResult.CityQueue.Count > 0) { this.labelTourLen.Text = this.solverResult.TotalDistance.ToString("0.##"); this.labelTime.Text = this.solverResult.TimeToSolve.TotalMilliseconds.ToString("0.##") + @" ms"; this.FlushCanvas(); this.DrawCityOnCanvas(); foreach (CityResult cityResult in this.solverResult.CityQueue) { Coordinates coor1 = cityResult.StartCity.CityCoordinates; Coordinates coor2 = cityResult.EndCity.CityCoordinates; this.DrawLineOnCanvas(coor1, coor2, this.lineColor); } } }
private void solveCase() { startTime = Time.time; setLineRenderers(false); renderSolution = lineRenderersState = false; solution = TSPSolver.solveCase(currentCase); Debug.Log("Computation Time: " + (Time.time - startTime)); }
private static void P4TSPBranchAndBound() { for (int i = 0; i < 4; i++) { Console.WriteLine("-------------------------------"); Console.WriteLine("Neuer Graph"); var hFileName = GraphFileRessources.P3GraphFiles[i]; var hGraph = AdjacentListGraphImporter.ImportAdjacentList(hFileName, EdgeKind.UndirectedWeighted); var hTSPBruteForceAlgorithm = new TSPSolver(hGraph, true); hTSPBruteForceAlgorithm.Execute(); } }
void Start() { budget = 0.0d; days = new Day[daysPerLevel]; days[0] = new Day(TSPSolver.generateCase(LevelSettings.Instance.NodeCount, LevelSettings.Instance.CityDimensions)); budget += TSPSolver.calculateCost(days[0].Solution, days[0].TspCase); for (int i = 1; i < daysPerLevel; i++) { days[i] = new Day(TSPSolver.generateCase(LevelSettings.Instance.NodeCount, days[0].TspCase.Nodes[0], LevelSettings.Instance.CityDimensions)); budget += TSPSolver.calculateCost(days[i].Solution, days[i].TspCase); } budget += budget * LevelSettings.Instance.ErrorMargin; timePerDay = LevelSettings.Instance.Time; currentDay = 0; loadDay(); Player.Instance.truck = builder.truck; Player.Instance.CurrentDay = CurrentDay; }
public static void Main(string[] args) { using (var reader = new StreamReader("Input/Cities.txt", Encoding.UTF8, false)) { if (reader.EndOfStream) { TSPSolver.BranchAndBound(); } else { var matrix = new List <List <int> >(); while (!reader.EndOfStream) { var row = reader.ReadLine()?.Split(' ').Select(int.Parse).ToList(); matrix.Add(row ?? throw new InvalidOperationException()); } var transportMatrix = matrix.Select(row => row.ToArray()).ToArray(); TSPSolver.BranchAndBound(transportMatrix); } } }
private void createNewTSPCase() { solution = null; currentCase = TSPSolver.generateCase(nodeCount, dimensions); realocateNodes(); }
public Day(TSPCase tspCase) { this.tspCase = tspCase; solution = TSPSolver.solveCase(tspCase); }