public ClientLocationsPartition(DVRP dvrp) { this.dvrp = dvrp; this.zbior = new int[dvrp.Clients.Length]; for (int i = 0; i < zbior.Length; i++) { zbior[i] = dvrp.Clients[i].locationID; } }
public TaskSolverDVRP(byte[] problemData) : base(problemData) { if (problemData.Length > 0 && problemData != null) { this._problemData = problemData; this.Dvrp = DVRPHelper.Parse(ConvertDataToString(problemData, problemData.Length)); this.comb = DVRPHelper.GetAllCombination(Dvrp.ClientID.Length + 1); } }
public bool Equals(DVRP p) { // If parameter is null return false: if ((object)p == null) { return(false); } // Return true if the fields match: return(DVRPComparer.AreObjectsEqual(this, p, new string[0] { })); }
private int depth; // głębokość rekurencji public DVRPPathFinder(int[] partialData, DVRP dvrp) { this.clientsId = partialData; this.act_cycle = new List <Location>(); this.best_cycle = null; this.arrivalTimes = new List <double>(); this.bestArrivalsTimes = null; this.used = new bool[partialData.Length]; this.bestPathLen = Double.MaxValue; this.dvrp = dvrp; this.cutOff = 0.5; this.depth = partialData.Length; }
public static DVRPSolution Parse(string input, DVRP dvrp) { if (String.IsNullOrWhiteSpace(input)) { throw new ArgumentException(input); } DVRPSolution instance = new DVRPSolution(); //var lines = input.Split(new[] { '\n' }); //int ind = 0; //for (int i = 0; i < lines.Length - 1; i++) //{ // string[] split = DVRPHelper.SplitText(lines[i]); // switch (split[0]) // { // case:"SOL": // instance = new List<Location>[int.Parse(split[1])]; // instance.pathsArrivalsTimes = new List<double>(); // instance.pathLen = double.Parse(split[2]); // break; // case "SOLUTION": // break; // case "PATH": // instance.paths[ind] = new List<Location>(); // for (int n = 1; n < split.Length; n++) // { // instance.paths[ind].Add(dvrp.Locations.First(x => x.locationID == int.Parse(split[n]))); // } // break; // case "TIMES": // instance.pathsArrivalsTimes[ind] = new List<double>(); // for (int n = 1; n < split.Length; n++) // { // instance.pathsArrivalsTimes[ind].Add(double.Parse(split[n])); // } // ind++; // break; // } //} return(instance); }
public override bool Equals(System.Object obj) { // If parameter is null return false. if (obj == null) { return(false); } // If parameter cannot be cast to Point return false. DVRP p = obj as DVRP; if ((System.Object)p == null) { return(false); } // Return true if the fields match: return(DVRPComparer.AreObjectsEqual(this, p, new string[0] { })); }
public static int[][][] ParseData(byte[] data) { int[][][] result = new int[0][][]; string text = Communication_Library.CommunicationModule.ConvertDataToString(data, data.Length); string[] lines = text.Split(new[] { '\n' }); int set = 0; int path = 0; for (int i = 0; i < lines.Length - 1; i++) { string[] split = DVRP.SplitText(lines[i]); switch (split[0]) { case "NUMSETS": result = new int[int.Parse(split[1])][][]; break; case "SET": result[set] = new int[int.Parse(split[1])][]; set++; path = 0; break; case "PATH": result[set - 1][path] = new int[int.Parse(split[1])]; path++; break; default: for (int j = 0; j < split.Length; j++) { result[set - 1][path - 1][j] = int.Parse(split[j]); } break; } } return(result); }
public static DVRP Parse(string input) { if (String.IsNullOrWhiteSpace(input)) { throw new ArgumentException(input); } var instance = new DVRP(); var lines = input.Split(new[] { '\n' }); for (int i = 0; i < lines.Length; i++) { string[] split = DVRPHelper.SplitText(lines[i]); switch (split[0]) { case "VRPTEST": instance.FormatVersionNumber = split[1]; break; case "COMMENT": instance.Comment += lines[i].Substring(9, lines[i].Length - 9).Trim(new Char[] { ' ', '\r' }); // split[j] + " "; break; case "NAME": instance.Name = split[1]; break; case "NUM_DEPOTS": instance.NumDepots = int.Parse(split[1]); instance.Depots = new Depot[instance.NumDepots]; break; case "NUM_CAPACITIES": instance.NumCapacities = int.Parse(split[1]); break; case "NUM_VISITS": instance.NumVistis = int.Parse(split[1]); instance.Clients = new Client[instance.NumVistis]; instance.ClientID = new int[instance.NumVistis]; break; case "NUM_LOCATIONS": instance.NumLocations = int.Parse(split[1]); instance.Locations = new Location[instance.NumLocations]; break; case "NUM_VEHICLES": instance.NumVehicles = int.Parse(split[1]); break; case "CAPACITIES": instance.Capacities = int.Parse(split[1]); break; //case "DATA_SECTION": case "DEPOTS": for (int j = 0; j < instance.NumDepots; j++) { instance.Depots[j] = new Depot(); instance.Depots[j].depotID = int.Parse(lines[++i]); } break; case "DEMAND_SECTION": for (int j = 0; j < instance.NumVistis; j++) { instance.Clients[j] = new Client(); string[] clientsSplit = DVRPHelper.SplitText(lines[++i]); instance.Clients[j].visitID = int.Parse(clientsSplit[0]); instance.Clients[j].size = int.Parse(clientsSplit[1]); instance.ClientID[j] = j;//int.Parse(clientsSplit[0]); } break; case "LOCATION_COORD_SECTION": for (int j = 0; j < instance.NumLocations; j++) { instance.Locations[j] = new Location(); string[] locationsSplit = DVRPHelper.SplitText(lines[++i]); instance.Locations[j].locationID = int.Parse(locationsSplit[0]); instance.Locations[j].x = int.Parse(locationsSplit[1]); instance.Locations[j].y = int.Parse(locationsSplit[2]); } break; case "DEPOT_LOCATION_SECTION": for (int j = 0; j < instance.NumDepots; j++) { string[] depotLocationsSplit = DVRPHelper.SplitText(lines[++i]); int depotId = int.Parse(depotLocationsSplit[0]); instance.Depots.First(x => x.depotID == depotId).locationID = int.Parse(depotLocationsSplit[1]); } break; case "VISIT_LOCATION_SECTION": for (int j = 0; j < instance.NumVistis; j++) { string[] clientsSplit = DVRPHelper.SplitText(lines[++i]); int visitId = int.Parse(clientsSplit[0]); instance.Clients.First(x => x.visitID == visitId).locationID = int.Parse(clientsSplit[1]); } break; case "DURATION_SECTION": for (int j = 0; j < instance.NumVistis; j++) { string[] clientsSplit = DVRPHelper.SplitText(lines[++i]); int visitId = int.Parse(clientsSplit[0]); instance.Clients.First(x => x.visitID == visitId).unld = double.Parse(clientsSplit[1]); } break; case "DEPOT_TIME_WINDOW_SECTION": for (int j = 0; j < instance.NumDepots; j++) { string[] depotLocationsSplit = DVRPHelper.SplitText(lines[++i]); int depotId = int.Parse(depotLocationsSplit[0]); Depot d = instance.Depots.First(x => x.depotID == depotId); d.start = double.Parse(depotLocationsSplit[1]); d.end = double.Parse(depotLocationsSplit[2]); } break; //COMMENT: TIMESTEP: 7 case "TIME_AVAIL_SECTION": for (int j = 0; j < instance.NumVistis; j++) { string[] clientsSplit = DVRPHelper.SplitText(lines[++i]); int visitId = int.Parse(clientsSplit[0]); instance.Clients.First(x => x.visitID == visitId).time = double.Parse(clientsSplit[1]); } break; case "EOF": break; } } instance.distances = new double[instance.Locations.Length, instance.Locations.Length]; for (int j = 0; j < instance.Locations.Length; j++) { for (int k = 0; k < instance.Locations.Length; k++) { instance.distances[j, k] = DVRPHelper.Distance(instance.Locations[j], instance.Locations[k]); } } return(instance); }
public static DVRPPartialSolution Parse(string input, DVRP dvrp) { if (String.IsNullOrWhiteSpace(input)) { throw new ArgumentException(input); } DVRPPartialSolution instance = new DVRPPartialSolution(); //instance.ElemCount = new List<int>(); var lines = input.Split(new[] { '\n' }); int ind = 0; for (int i = 0; i < lines.Length - 1; i++) { string[] split = DVRPHelper.SplitText(lines[i]); switch (split[0]) { case "SOL": instance.ElemCount = int.Parse(split[1]); instance.PartialPaths = new List <Location> [int.Parse(split[1])]; instance.PartialPathsArrivalsTimes = new List <double> [int.Parse(split[1])]; instance.PartialPathLen = new List <double>(); instance.PartialClientID = new List <int> [int.Parse(split[1])]; instance.NodeNumber = int.Parse(split[2]); break; case "SET": i++; split = DVRPHelper.SplitText(lines[i]); instance.PartialClientID[ind] = new List <int>(); for (int n = 0; n < split.Length; n++) { instance.PartialClientID[ind].Add(int.Parse(split[n])); } ind++; break; case "SOLUTION": instance.PartialPathLen.Add(Double.Parse(split[2])); break; case "PATH": instance.PartialPaths[ind] = new List <Location>(); for (int n = 1; n < split.Length; n++) { if (int.Parse(split[n]) != -1) { instance.PartialPaths[ind].Add(dvrp.Locations.First(x => x.locationID == int.Parse(split[n]))); } else { instance.PartialPaths[ind].Add(new Location() { locationID = -1 }); } } break; case "TIMES": instance.PartialPathsArrivalsTimes[ind] = new List <double>(); for (int n = 1; n < split.Length; n++) { instance.PartialPathsArrivalsTimes[ind].Add(double.Parse(split[n])); } break; } } return(instance); }