Beispiel #1
0
        private async void btnStart_Click(object sender, EventArgs e)
        {
            this.btnStart.Text = "Restart!";

            Progress <IDNA> progress = new Progress <IDNA>(world => {
                //this.UpdateBestFitnessLabels();
                this.ipStatus.TransformOrigin.X = -Annealer.StatusGraph.GetWidth();
                this.ipStatus.TransformOrigin.Y = -Annealer.StatusGraph.GetHeight();
            });

            this.btnRestrategize.Enabled = false;
            this.btnStart.Enabled        = false;

            Stopwatch w = Stopwatch.StartNew();
            await Task.Factory.StartNew(() => Annealer.Anneal(GetPopulationGenerator(), progress), TaskCreationOptions.LongRunning);

            w.Stop();
            Debug.WriteLine(w.ElapsedMilliseconds);

            this.btnRestrategize.Enabled = true;
            this.btnStart.Enabled        = true;

            this.UpdateBestFitnessLabels();
            this.ipStrategy.Refresh();
        }
Beispiel #2
0
        public void TestGenericAnnealer()
        {
            Debug.WriteLine("Loading cities data for SBC Traveling Salesman Problem analysis");
            CitiesData citiesData = new CitiesData(10);
            Debug.WriteLine(citiesData.ToString());
            Debug.WriteLine("Number of cities = " + citiesData.cities.Length);
            Debug.WriteLine("Number of possible paths = " +
              citiesData.NumberOfPossiblePaths().ToString("#,###"));
            Debug.WriteLine("Best possible solution (shortest path) length = " +
              citiesData.ShortestPathLength().ToString("F4"));


            var problemDef = new CitiesProblemDef(citiesData);

            Annealer<Char[]>.random = new Random(0);
            CitiesProblemDef._random = Annealer<Char[]>.random;

            var hive = new Annealer<Char[]>(problemDef.GenerateRandomMemoryMatrix,
                                 problemDef.GenerateNeighborMemoryMatrix,
                                 problemDef.MeasureOfQuality,
                                 1000000,0.999);

            Debug.WriteLine("\nInitial annealer");
            
            Char[] bestSolution = hive.Solve();

            Debug.WriteLine("\nFinal Solution");
            Debug.WriteLine(new string(bestSolution));
            Debug.WriteLine(hive);
            Debug.WriteLine("End annealer demo");

            Assert.AreEqual(citiesData.cities, bestSolution);
        }