Changeset 6449 for trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinSequenceBasedCrossover.cs
- Timestamp:
- 06/20/11 13:36:49 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinSequenceBasedCrossover.cs
r5445 r6449 23 23 using HeuristicLab.Core; 24 24 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 25 using HeuristicLab.Data; 25 26 26 27 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin { … … 41 42 42 43 protected override PotvinEncoding Crossover(IRandom random, PotvinEncoding parent1, PotvinEncoding parent2) { 44 BoolValue useDistanceMatrix = UseDistanceMatrixParameter.ActualValue; 45 DoubleMatrix coordinates = CoordinatesParameter.ActualValue; 46 DistanceMatrix distMatrix = VRPUtilities.GetDistanceMatrix(coordinates, DistanceMatrixParameter, useDistanceMatrix); 47 DoubleArray dueTime = DueTimeParameter.ActualValue; 48 DoubleArray readyTime = ReadyTimeParameter.ActualValue; 49 DoubleArray serviceTime = ServiceTimeParameter.ActualValue; 50 DoubleArray demand = DemandParameter.ActualValue; 51 DoubleValue capacity = CapacityParameter.ActualValue; 52 43 53 PotvinEncoding child = parent1.Clone() as PotvinEncoding; 44 54 Tour newTour = new Tour(); … … 69 79 child.Unrouted.Add(city); 70 80 71 if (Feasible(newTour) && 72 Repair(random, child, newTour)) { 81 if (Repair(random, child, newTour, distMatrix, dueTime, readyTime, serviceTime, demand, capacity)) { 73 82 return child; 74 83 } else { 75 if (random.NextDouble() < 0.5)84 if (random.NextDouble() < 0.5) 76 85 return parent1.Clone() as PotvinEncoding; 77 86 else 78 return parent2.Clone() as PotvinEncoding; 87 return parent2.Clone() as PotvinEncoding; 79 88 } 80 89 }
Note: See TracChangeset
for help on using the changeset viewer.