Esempio n. 1
0
 public double DistanceTo(AlgCity city)
 {
     //int xDistance = Math.Abs(this.x - city.x);
     //int yDistance = Math.Abs(this.y - city.y);
     //return Math.Sqrt(xDistance * xDistance + yDistance * yDistance);
     if (!TourManager.IsRoutesListSet())
     {
         using (LogisticsProject.Models.ApplicationDbContext db = new LogisticsProject.Models.ApplicationDbContext())
         {
             List <LogisticsProject.Models.Route> routes = (from r in db.Routes.Include("cityFrom").Include("cityTo")
                                                            select r).ToList();
             TourManager.SetRoutesList(routes);
             LogisticsProject.Models.Route route = (from r in db.Routes
                                                    where (r.cityFrom.CityId == this.CityId &&
                                                           r.cityTo.CityId == city.CityId)
                                                    select r).First();
             return(route.distance);
         }
     }
     else
     {
         List <LogisticsProject.Models.Route> routes = TourManager.GetRoutesList();
         LogisticsProject.Models.Route        route  = (from r in routes
                                                        where (r.cityFrom.CityId == this.CityId &&
                                                               r.cityTo.CityId == city.CityId)
                                                        select r).First();
         return(route.distance);
     }
 }
Esempio n. 2
0
 public double DistanceTo(City city)
 {
     //int xDistance = Math.Abs(this.x - city.x);
     //int yDistance = Math.Abs(this.y - city.y);
     //return Math.Sqrt(xDistance * xDistance + yDistance * yDistance);
     using (LogisticsProject.Models.ApplicationDbContext db = new LogisticsProject.Models.ApplicationDbContext())
     {
         LogisticsProject.Models.Route route = (from r in db.Routes
                                                where (r.cityFrom.CityId == this.CityId &&
                                                       r.cityTo.CityId == city.CityId)
                                                select r).First();
         return(route.distance);
     }
 }
Esempio n. 3
0
        public static void Main(string[] args)
        {
            List <LogisticsProject.Models.City> citiesDb;

            // Create and add our cities from database
            using (var db = new LogisticsProject.Models.ApplicationDbContext())
            {
                citiesDb = (from c in db.Cities
                            select c).ToList();
            }
            List <City> citiesSalesman = new List <City>(citiesDb.Count());

            //for (int i = 6; i < 12; i++)
            //{
            //    citiesSalesman.Add(new City(citiesDb[i], i*10 + 10));
            //    TourManager.AddCity(citiesSalesman[i-6]);
            //}

            TourManager.AddCity(new City(citiesDb[0], 5));
            TourManager.AddCity(new City(citiesDb[3], 5));
            TourManager.AddCity(new City(citiesDb[7], 5));
            TourManager.AddCity(new City(citiesDb[2], 6));
            TourManager.AddCity(new City(citiesDb[9], 50));
            TourManager.SetMaxFuelConsump(20);
            TourManager.TruckLoad = 80;


            Population population = new Population(50, true);

            Console.WriteLine("Initial distance : " + population.GetFittest().GetDistance());

            population = GeneticAlgorithm.EvolvePopulation(population);
            for (int i = 0; i < 120; i++)
            {
                population = GeneticAlgorithm.EvolvePopulation(population);
            }

            Console.WriteLine("Done");
            Console.WriteLine("Computed distance : " + population.GetFittest().GetDistance());
            Console.Write("Solution : \n" + population.GetFittest());
            Console.Read();
        }