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(); }
public GeneticKang2015(SchoolBusRoutingProblem sbrp, OutputInterface output) { this._sbrp = sbrp; this._output = output; this._rand = new Random(); }