Ejemplo n.º 1
0
        public void saveSolution(SchoolBusRoutingProblem sbrp, List <int>[] routes)
        {
            int    i          = 0;
            string outputFile = "routes.txt";

            using (var sw = new System.IO.StreamWriter(outputFile))
            {
                var csv = new CsvWriter(sw);
                csv.Configuration.Delimiter = "\t";
                csv.Configuration.Encoding  = Encoding.UTF8;
                csv.WriteField("RouteId");
                csv.WriteField("Lat");
                csv.WriteField("Lng");
                csv.WriteField("Nb");
                csv.NextRecord();
                foreach (List <int> route in routes)
                {
                    i++;
                    foreach (int busStop in route)
                    {
                        csv.WriteField(i);
                        csv.WriteField(sbrp.BusStops[busStop].X);
                        csv.WriteField(sbrp.BusStops[busStop].Y);
                        csv.WriteField(sbrp.BusStops[busStop].NumStudent);
                        csv.NextRecord();
                    }
                    // add the school, the 0th "bus stop"
                    csv.WriteField(i);
                    csv.WriteField(sbrp.BusStops[0].X);
                    csv.WriteField(sbrp.BusStops[0].Y);
                    csv.WriteField("");
                    csv.NextRecord();

                    // add the divider line
                    csv.WriteField("*");
                    csv.WriteField("");
                    csv.WriteField("");
                    csv.WriteField("");
                    csv.NextRecord();
                }
            }
        }
        public void run()
        {
            InputInterface          input = new OriginalFileInput(this._options.BusStops, this._options.DistanceMatrix);
            SchoolBusRoutingProblem sbrp  = new SchoolBusRoutingProblem(input.getBusStops(), input.getDistanceMatrix())
            {
                NumBuses        = this._options.NumBuses,
                VehicleCapacity = this._options.BusCapacity,
                MaxRiddingTime  = this._options.MaxRidingTime
            };

            OriginalOutput output = new OriginalOutput();

            GeneticKang2015 ga = new GeneticKang2015(sbrp, output)
            {
                CrossoverRate       = this._options.CrossoverRate,
                MutationRate        = this._options.MutationRate,
                ElitismNumber       = this._options.ElitismNumber,
                PopulationSize      = this._options.PopulationSize,
                NumberOfGenerations = this._options.NumGenerations,
                SelectionRatio      = 0.25
            };

            ga.run();
        }
Ejemplo n.º 3
0
 public GeneticKang2015(SchoolBusRoutingProblem sbrp, OutputInterface output)
 {
     this._sbrp   = sbrp;
     this._output = output;
     this._rand   = new Random();
 }