Ejemplo n.º 1
0
        private void btnRunOneIteration_Click(object sender, EventArgs e)
        {
            if (rbtACOSolver.Checked)
            {
                theSolver.RunOneIteration();
            }
            else
            {
                thePermutationGA.executeOneIteration();
            }

            if (cbxChecked.Checked)
            {
                showResults();
                ACO.Refresh();
            }
            else
            {
                rtbPheromone.Clear();
                rtbSolution.Clear();
                rtbBestSol.Clear();
                rtbLen.Clear();
            }
            if (cbxAnimation.Checked)
            {
                showSeries();
                theChart.Update();
            }
        }
Ejemplo n.º 2
0
        private void rbtACOSolver_CheckedChanged(object sender, EventArgs e)
        {
            thePermutationGA = null;
            theSolver        = null;
            rtbPheromone.Clear();
            rtbSolution.Clear();
            rtbBestSol.Clear();
            rtbLen.Clear();
            ACO.Refresh();

            ppg.SelectedObject = null;

            theChart.Series[0].Points.Clear();
            theChart.Series[1].Points.Clear();
            theChart.Series[2].Points.Clear();
        }
Ejemplo n.º 3
0
        private void tsbOpen_Click(object sender, EventArgs e)
        {
            theSolver        = null;
            thePermutationGA = null;
            //open
            int status = TSPBenchmarkProblem.ImportATSPFile(true, true);

            if (status == -1)
            {
                return;
            }
            ACO.Refresh();

            title.Text     = $"Title: { TSPBenchmarkProblem.Name }";
            numCities.Text = $"Number Of Cities: { TSPBenchmarkProblem.NumberOfCities }";

            ShortestLen.Text        = $"Global Shortest Length: { TSPBenchmarkProblem.OptimumObjective:0.00}";
            txtGreedy.Text          = $"Greedy Route Length: {TSPBenchmarkProblem.ComputeRouteLength(TSPBenchmarkProblem.GetGreedyShortestRoute())}";
            rtbDataDescription.Text = TSPBenchmarkProblem.Comment;

            int[] cities = new int[TSPBenchmarkProblem.NumberOfCities];


            cities = TSPBenchmarkProblem.OptimalTour;
            if (cities != null)
            {
                rtbShort.AppendText("Global Shortest Route: \n");
                for (int c = 0; c < TSPBenchmarkProblem.NumberOfCities; c++)
                {
                    rtbShort.AppendText($"{cities[c]} ");
                }
            }
            cities = TSPBenchmarkProblem.GetGreedyShortestRoute();
            if (cities != null)
            {
                rtbGreedy.AppendText("Greedy Shortest Route: \n");
                for (int c = 0; c < TSPBenchmarkProblem.NumberOfCities; c++)
                {
                    rtbGreedy.AppendText($"{cities[c]} ");
                }
            }
            rbtCreateGA.Enabled  = true;
            rbtACOSolver.Enabled = true;
            btnReset.Enabled     = true;
        }
Ejemplo n.º 4
0
 private void createSolver()
 {
     if (rbtACOSolver.Checked)
     {
         theSolver = new AntColonySystemForTSP(TSPBenchmarkProblem.NumberOfCities,
                                               TSPBenchmarkProblem.ComputeRouteLength, TSPBenchmarkProblem.FromToDistanceMatrix);
         ppg.SelectedObject = theSolver;
     }
     else
     {
         thePermutationGA = new PermutationGA(TSPBenchmarkProblem.NumberOfCities,
                                              OptimizationType.Min, TSPBenchmarkProblem.ComputeObjectiveValue);
         ppg.SelectedObject = thePermutationGA;
     }
     ACO.Refresh();
     btnReset.Enabled   = true;
     cbxChecked.Enabled = true;
 }
Ejemplo n.º 5
0
        static void RunACO(TravellingSalesmanMap TSP)
        {
            //cria novo ACO
            ACO aco = new ACO(TSP, TSP.CityCount);

            //roda o ACO
            TSPSolution s = aco.Run();

            //imprime a solução
            Console.WriteLine("Optimal Solution: " + TSP.OptimalTravelDistance);
            Console.WriteLine("Solution Found: " + s.Fitness);
            Console.Write("\nSteps: ");
            foreach (int visitedCity in s.TravelPlan)
            {
                Console.Write(TSP.GetCityAlias(visitedCity) + " => ");
            }
            Console.Write(TSP.GetCityAlias(s.TravelPlan.First()));
            Console.ReadKey();
        }
Ejemplo n.º 6
0
        private void btnRunEnd_Click(object sender, EventArgs e)
        {
            //theSolver.RunToEnd();

            cbxChecked.Checked = false;

            if (rbtACOSolver.Checked)
            {
                for (int i = 0; i < theSolver.IterationLimit; i++)
                {
                    btnRunOneIteration.PerformClick();
                }
            }
            else
            {
                for (int i = 0; i < thePermutationGA.IterationLimit; i++)
                {
                    btnRunOneIteration.PerformClick();
                }
            }
            cbxChecked.Checked = true;
            ACO.Refresh();
            showResults();
        }
Ejemplo n.º 7
0
 public HormigaAco(Vector3 nido, ACO colonia)
 {
     posicion          = nido;
     aco               = colonia;
     tasaDeEvaporacion = .5;
 }