Exemplo n.º 1
0
        public void TravelingSalesMan()
        {

            for (int keer = 0; keer < 1; keer++)
            {
                TravelingSalesmanProblem tsp = new TravelingSalesmanProblem(),copy = new TravelingSalesmanProblem();
                /*
                // add city's
                string[] places = new string[] {	
                                                "Aartselaar",
                                                "Antwerpen",                
                                                "Arendonk",                
                                                "Baarle-Hertog",                
                                                "Balen",                
                                                "Beerse",                
                                                "Berlaar",
                                                "Boechout",
                                                "Bonheiden",
                                                "Boom",                 
                                                "Bornem",                
                                                "Borsbeek",                
                                                "Brasschaat",
                                                "Brecht",
                                                "Dessel",
                                                "Duffel",
                                                "Edegem",
                                                "Essen",
                                                "Geel",
                                                "Grobbendonk",
                                                "Heist-op-den-Berg",
                                                "Hemiksem",
                                                "Herentals",
                                                "Herenthout",
                                                "Herselt",
                                                "Hoogstraten",
                                                "Hove",
                                                "Hulshout",
                                                "Kalmthout",
                                                "Kapellen",
                                                "Kasterlee",
                                                "Kontich",
                                                "Laakdal",
                                                "Lier",
                                                "Lille",
                                                "Lint",
                                                "Malle",
                                                "Mechelen",
                                                "Meerhout",
                                                "Merksplas",
                                                "Mol",
                                                "Mortsel",
                                                "Niel",
                                                "Nijlen",
                                                "Olen",
                                                "Oud-Turnhout",
                                                "Putte",
                                                "Puurs",
                                                "Ranst",
                                                "Ravels",
                                                "Retie",
                                                "Rijkevorsel",
                                                "Rumst",
                                                "Schelle",
                                                "Schilde",
                                                "Schoten",
                                                "Sint-Amands",
                                                "Sint-Katelijne-Waver",
                                                "Stabroek",
                                                "Turnhout",
                                                "Vorselaar",
                                                "Vosselaar",
                                                "Westerlo",
                                                "Wijnegem",
                                                "Willebroek",
                                                "Wommelgem",
                                                "Wuustwezel",
                                                "Zandhoven",
                                                "Zoersel",
                                                "Zwijndrecht"
                                                };
              
                Random r = new Random((int)DateTime.Now.Ticks);
                // add vertexes                            
                for (int i = 0; i < places.Length; i++)
                {
                    for (int j = 0; j < places.Length; j++)
                    {
                        if (j != i)
                        {
                            int w = r.Next(1, 150);
                            tsp.AddCityConnection(places[i], places[j], w);
                            copy.AddCityConnection(places[i], places[j], w); 
                        }
                    }
                }
                */


                AddTowns(ref tsp);
                AddTowns(ref copy);

                //tsp.WriteGraph();
                Console.WriteLine();

                SimulatedAnnealing sa = new SimulatedAnnealing(tsp, 0.89, 10);                
                sa.Start();                                
                Console.WriteLine("Cost SA: " + tsp.ObjectifFunction());
                tsp.WritePath();
                
                 
                IterativeLocalSearch ils = new IterativeLocalSearch(copy, 10);
                ils.Start();
                Console.WriteLine("Cost ILS: " + copy.ObjectifFunction());
                copy.WritePath();
                System.Threading.Thread.Sleep(100 * 1000);
                
                //System.Collections.ArrayList path = null ;
                
                /*for (int i = 0; i < places.Length; i++)
                {
                    tsp.NNA(i, out path);
                    Console.WriteLine("Cost: " + tsp.ObjectifFunction());
                    foreach (string s in path)
                    {
                        //Console.Write("\t>" + s);
                    } 
                    Console.WriteLine();
                }
                */
                /*
                
                                
                */
                System.Threading.Thread.Sleep(20);
            }
        }