コード例 #1
0
        /// <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);
                }
            }
        }
コード例 #2
0
 private void solveCase()
 {
     startTime = Time.time;
     setLineRenderers(false);
     renderSolution = lineRenderersState = false;
     solution       = TSPSolver.solveCase(currentCase);
     Debug.Log("Computation Time: " + (Time.time - startTime));
 }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
    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;
    }
コード例 #5
0
ファイル: Application.cs プロジェクト: Buzzefall/OptiSolver
        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);
                }
            }
        }
コード例 #6
0
 private void createNewTSPCase()
 {
     solution    = null;
     currentCase = TSPSolver.generateCase(nodeCount, dimensions);
     realocateNodes();
 }
コード例 #7
0
ファイル: Day.cs プロジェクト: kmilo2093/truckDriver
 public Day(TSPCase tspCase)
 {
     this.tspCase = tspCase;
     solution     = TSPSolver.solveCase(tspCase);
 }