- Timestamp:
- 09/01/10 11:13:46 (14 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.VehicleRouting
- Files:
-
- 35 deleted
- 17 edited
- 75 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.VehicleRouting
-
Property
svn:mergeinfo
set to
/branches/VRP/HeuristicLab.Problems.VehicleRouting merged eligible
-
Property
svn:mergeinfo
set to
-
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/AlbaEncoding.cs
r4204 r4352 26 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 27 27 using System.Collections.Generic; 28 using HeuristicLab.Problems.VehicleRouting.Encodings.General; 28 29 29 30 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba { 30 31 [Item("AlbaEncoding", "Represents an Alba encoding of VRP solutions. It is implemented as described in Alba, E. and Dorronsoro, B. (2004). Solving the Vehicle Routing Problem by Using Cellular Genetic Algorithms.")] 31 32 [StorableClass] 32 public class AlbaEncoding : Permutation , IVRPEncoding {33 public class AlbaEncoding : PermutationEncoding { 33 34 [Storable] 34 35 private int cities; 35 36 36 37 #region IVRPEncoding Members 37 public ItemList<Tour> Tours { 38 get { 39 ItemList<Tour> result = new ItemList<Tour>(); 40 41 Tour tour = new Tour(); 42 for (int i = 0; i < this.array.Length; i++) { 43 if (this.array[i] >= cities) { 44 if (tour.Cities.Count > 0) { 45 result.Add(tour); 38 public override List<Tour> GetTours(ILookupParameter<DoubleMatrix> distanceMatrix = null, int maxVehicles = int.MaxValue) { 39 List<Tour> result = new List<Tour>(); 46 40 47 tour = new Tour(); 48 } 49 } else { 50 tour.Cities.Add(this.array[i] + 1); 41 Tour tour = new Tour(); 42 for (int i = 0; i < this.array.Length; i++) { 43 if (this.array[i] >= cities) { 44 if (tour.Cities.Count > 0) { 45 result.Add(tour); 46 47 tour = new Tour(); 51 48 } 49 } else { 50 tour.Cities.Add(this.array[i] + 1); 52 51 } 52 } 53 53 54 55 56 54 if (tour.Cities.Count > 0) { 55 result.Add(tour); 56 } 57 57 58 return result; 59 } 58 return result; 60 59 } 61 60 … … 65 64 66 65 public int MaxVehicles { 67 get { return Length - Cities ; }66 get { return Length - Cities + 1; } 68 67 } 69 68 … … 79 78 80 79 public AlbaEncoding(Permutation permutation, int cities) 81 : base(PermutationTypes.RelativeUndirected) { 82 this.array = new int[permutation.Length]; 83 for (int i = 0; i < array.Length; i++) 84 this.array[i] = permutation[i]; 85 80 : base(permutation) { 86 81 this.cities = cities; 87 82 } … … 89 84 [StorableConstructor] 90 85 private AlbaEncoding(bool serializing) 91 : base( ) {86 : base(serializing) { 92 87 } 93 88 94 public static AlbaEncoding ConvertFrom(IVRPEncoding encoding, int vehicles ) {95 ItemList<Tour> tours = encoding.Tours;89 public static AlbaEncoding ConvertFrom(IVRPEncoding encoding, int vehicles, ILookupParameter<DoubleMatrix> distanceMatrix) { 90 List<Tour> tours = encoding.GetTours(distanceMatrix, vehicles); 96 91 97 92 int cities = 0; … … 132 127 public static AlbaEncoding ConvertFrom(List<int> routeParam) { 133 128 List<int> route = new List<int>(routeParam); 129 route.RemoveAt(routeParam.Count - 1); 134 130 135 131 int cities = 0; … … 156 152 157 153 internal static void RemoveUnusedParameters(ParameterCollection parameters) { 158 parameters.Remove("DistanceMatrix");159 154 parameters.Remove("UseDistanceMatrix"); 160 155 parameters.Remove("Capacity"); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Crossovers/AlbaCrossover.cs
r4206 r4352 53 53 54 54 if (!(solution is AlbaEncoding)) { 55 parents[i] = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value); 55 parents[i] = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value, 56 DistanceMatrixParameter); 56 57 } else { 57 58 parents[i] = solution; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Manipulators/AlbaManipulator.cs
r4206 r4352 62 62 IVRPEncoding solution = VRPToursParameter.ActualValue; 63 63 if (!(solution is AlbaEncoding)) { 64 VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value );64 VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value, DistanceMatrixParameter); 65 65 } 66 66 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveMaker.cs
r4208 r4352 26 26 27 27 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba { 28 [Item(" PermutationTranslocationMoveMaker", "An operator which makes translocation moves for the Alba representation.")]28 [Item("AlbaTranslocationMoveMaker", "An operator which makes translocation moves for the Alba representation.")] 29 29 [StorableClass] 30 30 public abstract class AlbaMoveMaker : AlbaMoveOperator { -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/AlbaMoveOperator.cs
r4204 r4352 41 41 IVRPEncoding solution = VRPToursParameter.ActualValue; 42 42 if (!(solution is AlbaEncoding)) { 43 VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value); 43 VRPToursParameter.ActualValue = AlbaEncoding.ConvertFrom(solution, VehiclesParameter.ActualValue.Value, 44 DistanceMatrixParameter); 44 45 } 45 46 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/Interfaces/IAlbaIntraRouteInversionMoveOperator.cs
r4206 r4352 26 26 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba { 27 27 public interface IAlbaIntraRouteInversionMoveOperator : IVRPMoveOperator { 28 ILookupParameter< IntraRouteInversionMove> IntraRouteInversionMoveParameter { get; }28 ILookupParameter<AlbaIntraRouteInversionMove> IntraRouteInversionMoveParameter { get; } 29 29 } 30 30 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Alba/Moves/Interfaces/IAlbaLambdaInterchangeMoveOperator.cs
r4204 r4352 26 26 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Alba { 27 27 public interface IAlbaLambdaInterchangeMoveOperator : IVRPMoveOperator { 28 ILookupParameter< LambdaInterchangeMove> LambdaInterchangeMoveParameter { get; }28 ILookupParameter<AlbaLambdaInterchangeMove> LambdaInterchangeMoveParameter { get; } 29 29 } 30 30 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Creators/PushForwardInsertionCreator.cs
r4183 r4352 225 225 int customer = -1; 226 226 int subTourCount = 1; 227 List<int> route = new List<int>(Cities Parameter.ActualValue.Value+ VehiclesParameter.ActualValue.Value - 1);227 List<int> route = new List<int>(Cities + VehiclesParameter.ActualValue.Value - 1); 228 228 minimumCost = double.MaxValue; 229 229 indexOfMinimumCost = -1; … … 271 271 customer = -1; 272 272 } while (unroutedList.Count > 0); 273 while (route.Count < Cities Parameter.ActualValue.Value+ VehiclesParameter.ActualValue.Value - 1)273 while (route.Count < Cities + VehiclesParameter.ActualValue.Value - 1) 274 274 route.Add(0); 275 275 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/Interfaces/IVRPMove.cs
r4205 r4352 27 27 namespace HeuristicLab.Problems.VehicleRouting.Encodings.General { 28 28 public interface IVRPMove : IItem { 29 TourEvaluation GetMoveQuality(I VRPEncoding individual,29 TourEvaluation GetMoveQuality(IntValue vehicles, 30 30 DoubleArray dueTimeArray, DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, 31 31 DoubleValue capacity,DoubleMatrix coordinates, … … 34 34 ILookupParameter<DoubleMatrix> distanceMatrix, BoolValue useDistanceMatrix); 35 35 36 void MakeMove(IRandom random, IVRPEncoding individual);36 IVRPEncoding MakeMove(); 37 37 } 38 38 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveEvaluator.cs
r4205 r4352 46 46 47 47 return move.GetMoveQuality( 48 V RPToursParameter.ActualValue,48 VehiclesParameter.ActualValue, 49 49 DueTimeParameter.ActualValue, 50 50 ServiceTimeParameter.ActualValue, -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveGenerator.cs
r4205 r4352 118 118 Parameters.Add(new LookupParameter<IVRPMove>("VRPMove", "The generated moves.")); 119 119 120 foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IMultiVRPMoveGenerator)) ) {120 foreach (Type type in ApplicationManager.Manager.GetTypes(typeof(IMultiVRPMoveGenerator)).OrderBy(op => op.Name)) { 121 121 if (!typeof(MultiOperator<IMultiVRPMoveGenerator>).IsAssignableFrom(type)) 122 122 Operators.Add((IMultiVRPMoveGenerator)Activator.CreateInstance(type), true); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/General/Moves/MultiVRPMoveOperator/MultiVRPMoveMaker.cs
r4205 r4352 114 114 115 115 //perform move 116 move.MakeMove(RandomParameter.ActualValue, VRPToursParameter.ActualValue);116 VRPToursParameter.ActualValue = move.MakeMove(); 117 117 118 118 quality.Value = moveQuality.Value; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Crossovers/PotvinCrossover.cs
r4206 r4352 129 129 130 130 if (!(solution is PotvinEncoding)) { 131 parents[i] = PotvinEncoding.ConvertFrom(solution );131 parents[i] = PotvinEncoding.ConvertFrom(solution, DistanceMatrixParameter); 132 132 } else { 133 133 parents[i] = solution; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/Manipulators/PotvinManipulator.cs
r4206 r4352 82 82 IVRPEncoding solution = VRPToursParameter.ActualValue; 83 83 if (!(solution is PotvinEncoding)) { 84 VRPToursParameter.ActualValue = PotvinEncoding.ConvertFrom(solution );84 VRPToursParameter.ActualValue = PotvinEncoding.ConvertFrom(solution, DistanceMatrixParameter); 85 85 } 86 86 -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/Potvin/PotvinEncoding.cs
r4177 r4352 27 27 using System.Drawing; 28 28 using System.Collections.Generic; 29 using HeuristicLab.Problems.VehicleRouting.Encodings.General; 29 30 30 31 namespace HeuristicLab.Problems.VehicleRouting.Encodings.Potvin { 31 32 [Item("PotvinEncoding", "Represents a potvin encoding of VRP solutions. It is implemented as described in Potvin, J.-Y. and Bengio, S. (1996). The Vehicle Routing Problem with Time Windows - Part II: Genetic Search. INFORMS Journal of Computing, 8:165–172.")] 32 33 [StorableClass] 33 public class PotvinEncoding : Item, IVRPEncoding { 34 public override Image ItemImage { 35 get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Class; } 36 } 37 38 #region IVRPEncoding Members 39 [Storable] 40 public ItemList<Tour> Tours { get; set; } 41 42 public int Cities { 43 get 44 { 45 int cities = 0; 46 47 foreach (Tour tour in Tours) { 48 cities += tour.Cities.Count; 49 } 50 51 return cities; 52 } 53 } 54 #endregion 55 34 public class PotvinEncoding : TourEncoding { 56 35 [Storable] 57 36 public List<int> Unrouted { get; set; } … … 65 44 } 66 45 67 public PotvinEncoding() { 68 Tours = new ItemList<Tour>(); 46 public PotvinEncoding(): base() { 69 47 Unrouted = new List<int>(); 70 48 } 49 50 [StorableConstructor] 51 private PotvinEncoding(bool serializing) 52 : base() { 53 } 71 54 72 public static PotvinEncoding ConvertFrom(IVRPEncoding encoding ) {55 public static PotvinEncoding ConvertFrom(IVRPEncoding encoding, ILookupParameter<DoubleMatrix> distanceMatrix) { 73 56 PotvinEncoding solution = new PotvinEncoding(); 74 57 75 solution.Tours.AddRange( 76 encoding.Tours); 58 TourEncoding.ConvertFrom(encoding, solution, distanceMatrix); 77 59 78 60 return solution; … … 82 64 PotvinEncoding solution = new PotvinEncoding(); 83 65 84 Tour tour = new Tour(); 85 for (int i = 0; i < route.Count; i++) { 86 if (route[i] == 0) { 87 if (tour.Cities.Count > 0) { 88 solution.Tours.Add(tour); 89 tour = new Tour(); 90 } 91 } else { 92 tour.Cities.Add(route[i]); 93 } 94 } 66 TourEncoding.ConvertFrom(route, solution); 95 67 96 68 return solution; … … 115 87 if (Tours[tour].Feasible(dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, 116 88 capacity, coordinates, distanceMatrix, useDistanceMatrix)) { 117 double newLength = Tours[tour].GetLength(coordinates, distanceMatrix, useDistanceMatrix);89 double newLength = Tours[tour].GetLength(coordinates, distanceMatrix, useDistanceMatrix); 118 90 119 91 double detour = newLength - length; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Encodings/VRPCreator.cs
r4179 r4352 39 39 } 40 40 41 public IValueLookupParameter<IntValue> CitiesParameter {42 get { return (IValueLookupParameter<IntValue>)Parameters["Cities"]; }43 }44 45 41 [StorableConstructor] 46 42 protected VRPCreator(bool deserializing) : base(deserializing) { }
Note: See TracChangeset
for help on using the changeset viewer.