Changeset 4352 for trunk/sources/HeuristicLab.Problems.VehicleRouting
- Timestamp:
- 09/01/10 11:13:46 (14 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.VehicleRouting
- Files:
-
- 35 deleted
- 26 edited
- 80 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/Analyzers/BestVRPSolutionAnalyzer.cs
r4185 r4352 128 128 results.Add(new Result("Best VRP Solution", solution)); 129 129 130 results.Add(new Result("Best TravelTime", new DoubleValue(travelTimes[i].Value))); 131 results.Add(new Result("Best Distance", new DoubleValue(distances[i].Value))); 132 results.Add(new Result("Best VehicleUtilization", new DoubleValue(vehiclesUtilizations[i].Value))); 133 results.Add(new Result("Best Overload", new DoubleValue(overloads[i].Value))); 134 results.Add(new Result("Best Tardiness", new DoubleValue(tardinesses[i].Value))); 130 results.Add(new Result("Best VRP Solution TravelTime", new DoubleValue(travelTimes[i].Value))); 131 results.Add(new Result("Best VRP Solution Distance", new DoubleValue(distances[i].Value))); 132 results.Add(new Result("Best VRP Solution VehicleUtilization", new DoubleValue(vehiclesUtilizations[i].Value))); 133 results.Add(new Result("Best VRP Solution Overload", new DoubleValue(overloads[i].Value))); 134 results.Add(new Result("Best VRP Solution Tardiness", new DoubleValue(tardinesses[i].Value))); 135 135 136 } else { 136 if ( solution.Quality.Value > qualities[i].Value) {137 if (qualities[i].Value <= solution.Quality.Value) { 137 138 solution.Coordinates = coordinates; 138 139 solution.Solution = best.Clone() as IVRPEncoding; 139 140 solution.Quality.Value = qualities[i].Value; 140 solution.Distance.Value = (results["Best Distance"].Value as DoubleValue).Value = distances[i].Value;141 solution.Overload.Value = (results["Best Overload"].Value as DoubleValue).Value = overloads[i].Value;142 solution.Tardiness.Value = (results["Best Tardiness"].Value as DoubleValue).Value = tardinesses[i].Value;143 solution.TravelTime.Value = (results["Best TravelTime"].Value as DoubleValue).Value = travelTimes[i].Value;144 solution.VehicleUtilization.Value = (results["Best V ehicleUtilization"].Value as DoubleValue).Value = vehiclesUtilizations[i].Value;141 solution.Distance.Value = (results["Best VRP Solution Distance"].Value as DoubleValue).Value = distances[i].Value; 142 solution.Overload.Value = (results["Best VRP Solution Overload"].Value as DoubleValue).Value = overloads[i].Value; 143 solution.Tardiness.Value = (results["Best VRP Solution Tardiness"].Value as DoubleValue).Value = tardinesses[i].Value; 144 solution.TravelTime.Value = (results["Best VRP Solution TravelTime"].Value as DoubleValue).Value = travelTimes[i].Value; 145 solution.VehicleUtilization.Value = (results["Best VRP Solution VehicleUtilization"].Value as DoubleValue).Value = vehiclesUtilizations[i].Value; 145 146 solution.DistanceMatrix = DistanceMatrixParameter.ActualValue; 146 147 solution.UseDistanceMatrix = UseDistanceMatrixParameter.ActualValue; -
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) { } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Evaluators/VRPEvaluator.cs
r4179 r4352 101 101 IVRPEncoding vrpSolution = VRPToursParameter.ActualValue; 102 102 103 return vrpSolution. Tours.Count;103 return vrpSolution.GetTours(DistanceMatrixParameter, VehiclesParameter.ActualValue.Value).Count; 104 104 } 105 105 … … 178 178 } 179 179 180 public static TourEvaluation Evaluate(IVRPEncoding solution, DoubleArray dueTimeArray,180 public static TourEvaluation Evaluate(IVRPEncoding solution, IntValue vehicles, DoubleArray dueTimeArray, 181 181 DoubleArray serviceTimeArray, DoubleArray readyTimeArray, DoubleArray demandArray, DoubleValue capacity, 182 182 DoubleValue fleetUsageFactor, DoubleValue timeFactor, DoubleValue distanceFactor, DoubleValue overloadPenalty, DoubleValue tardinessPenalty, … … 190 190 sumEval.Tardiness = 0; 191 191 192 foreach (Tour tour in solution. Tours) {192 foreach (Tour tour in solution.GetTours(distanceMatrix)) { 193 193 TourEvaluation eval = EvaluateTour(tour, dueTimeArray, serviceTimeArray, readyTimeArray, demandArray, capacity, 194 194 fleetUsageFactor, timeFactor, distanceFactor, overloadPenalty, tardinessPenalty, … … 208 208 IVRPEncoding solution = VRPToursParameter.ActualValue; 209 209 210 TourEvaluation sumEval = Evaluate(solution, DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue,210 TourEvaluation sumEval = Evaluate(solution, VehiclesParameter.ActualValue, DueTimeParameter.ActualValue, ServiceTimeParameter.ActualValue, ReadyTimeParameter.ActualValue, 211 211 DemandParameter.ActualValue, CapacityParameter.ActualValue, 212 212 FleetUsageFactor.ActualValue, TimeFactor.ActualValue, DistanceFactor.ActualValue, OverloadPenalty.ActualValue, TardinessPenalty.ActualValue, -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/HeuristicLab.Problems.VehicleRouting-3.3.csproj
r4210 r4352 106 106 </ItemGroup> 107 107 <ItemGroup> 108 <Compile Include="Analyzers\BestAverageWorstVRPToursAnalyzer.cs" /> 109 <Compile Include="Analyzers\BestAverageWorstVRPToursCalculator.cs" /> 110 <Compile Include="Analyzers\BestVRPToursMemorizer.cs" /> 108 111 <Compile Include="Analyzers\BestVRPSolutionAnalyzer.cs" /> 109 <Compile Include="Encodings\Alba\Crossovers\ PermutationCrossover.cs" />110 <Compile Include="Encodings\Alba\Manipulators\ IntraRouteInversionManipulator.cs" />111 <Compile Include="Encodings\Alba\Manipulators\ LambdaInterchangeManipulator.cs" />112 <Compile Include="Encodings\Alba\Crossovers\AlbaPermutationCrossover.cs" /> 113 <Compile Include="Encodings\Alba\Manipulators\AlbaIntraRouteInversionManipulator.cs" /> 114 <Compile Include="Encodings\Alba\Manipulators\AlbaLambdaInterchangeManipulator.cs" /> 112 115 <Compile Include="Encodings\Alba\Moves\Interfaces\IAlbaLambdaInterchangeMoveOperator.cs" /> 113 116 <Compile Include="Encodings\Alba\Moves\Interfaces\IAlbaIntraRouteInversionMoveOperator.cs" /> 114 <Compile Include="Encodings\Alba\Manipulators\CustomerInversionManipulator.cs" /> 115 <Compile Include="Encodings\Alba\Manipulators\CustomerSwapManipulator.cs" /> 116 <Compile Include="Encodings\Alba\Manipulators\CustomerInsertionManipulator.cs" /> 117 <Compile Include="Encodings\Alba\Manipulators\PermutationManipulator.cs" /> 118 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\ExhaustiveLambdaInterchangeMoveGenerator.cs" /> 119 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\LambdaInterchangeMove.cs" /> 120 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\LambdaInterchangeMoveGenerator.cs" /> 121 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\LambdaInterchangeMoveEvaluator.cs" /> 122 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\LambdaInterchangeMoveMaker.cs" /> 123 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\StochasticLambdaInterchangeSingleMoveGenerator.cs" /> 124 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\StochasticLambdaInterchangeMutliMoveGenerator.cs" /> 125 <Compile Include="Encodings\Alba\Moves\PermutationMoveOperator.cs" /> 126 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\StochasticIntraRouteInversionMutliMoveGenerator.cs" /> 127 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\StochasticIntraRouteInversionSingleMoveGenerator.cs" /> 128 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\IntraRouteInversionMoveGenerator.cs" /> 129 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\IntraRouteInversionEvaluator.cs" /> 130 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\ExhaustiveIntraRouteInversionMoveGenerator.cs" /> 131 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\IntraRouteInversionMoveMaker.cs" /> 132 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\IntraRouteInversionMove.cs" /> 133 <Compile Include="Encodings\General\Crossovers\MultiVRPManipulator.cs" /> 134 <Compile Include="Encodings\General\Crossovers\MultiVRPCrossover.cs" /> 117 <Compile Include="Encodings\Alba\Manipulators\AlbaCustomerInversionManipulator.cs" /> 118 <Compile Include="Encodings\Alba\Manipulators\AlbaCustomerSwapManipulator.cs" /> 119 <Compile Include="Encodings\Alba\Manipulators\AlbaCustomerInsertionManipulator.cs" /> 120 <Compile Include="Encodings\Alba\Manipulators\AlbaPermutationManipulator.cs" /> 121 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\AlbaExhaustiveLambdaInterchangeMoveGenerator.cs" /> 122 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\AlbaLambdaInterchangeMove.cs" /> 123 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\AlbaLambdaInterchangeMoveGenerator.cs" /> 124 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\AlbaLambdaInterchangeMoveEvaluator.cs" /> 125 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\AlbaLambdaInterchangeMoveMaker.cs" /> 126 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\AlbaStochasticLambdaInterchangeSingleMoveGenerator.cs" /> 127 <Compile Include="Encodings\Alba\Moves\LambdaInterchange\AlbaStochasticLambdaInterchangeMutliMoveGenerator.cs" /> 128 <Compile Include="Encodings\Alba\Moves\AlbaPermutationMoveOperator.cs" /> 129 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\AlbaStochasticIntraRouteInversionMutliMoveGenerator.cs" /> 130 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\AlbaStochasticIntraRouteInversionSingleMoveGenerator.cs" /> 131 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\AlbaIntraRouteInversionMoveGenerator.cs" /> 132 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\AlbaIntraRouteInversionEvaluator.cs" /> 133 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\AlbaExhaustiveIntraRouteInversionMoveGenerator.cs" /> 134 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\AlbaIntraRouteInversionMoveMaker.cs" /> 135 <Compile Include="Encodings\Alba\Moves\IntraRouteInversion\AlbaIntraRouteInversionMove.cs" /> 136 <Compile Include="Encodings\General\Crossovers\RandomParentCloneCrossover.cs" /> 137 <Compile Include="Encodings\General\PermutationEncoding.cs" /> 138 <Compile Include="Encodings\General\Creators\MultiVRPSolutionCreator.cs" /> 139 <Compile Include="Encodings\General\Manipulators\MultiVRPSolutionManipulator.cs" /> 140 <Compile Include="Encodings\General\Crossovers\MultiVRPSolutionCrossover.cs" /> 135 141 <Compile Include="Encodings\General\Creators\RandomCreator.cs" /> 136 142 <Compile Include="Encodings\General\Moves\Interfaces\IMultiVRPMoveGenerator.cs" /> … … 140 146 <Compile Include="Encodings\General\Moves\MultiVRPMoveOperator\MultiVRPMoveMaker.cs" /> 141 147 <Compile Include="Encodings\General\Moves\MultiVRPMoveOperator\MultiVRPMoveGenerator.cs" /> 142 <Compile Include="Encodings\Potvin\Crossovers\RouteBasedCrossover.cs" /> 143 <Compile Include="Encodings\Potvin\Crossovers\SequenceBasedCrossover.cs" /> 148 <Compile Include="Encodings\General\TourEncoding.cs" /> 149 <Compile Include="Encodings\GVR\Crossovers\GVRCrossover.cs" /> 150 <Compile Include="Encodings\GVR\GVREncoding.cs" /> 151 <Compile Include="Encodings\GVR\Manipulators\GVRDisplacementManipulator.cs" /> 152 <Compile Include="Encodings\GVR\Manipulators\GVRInsertionManipulator.cs" /> 153 <Compile Include="Encodings\GVR\Manipulators\GVRInversionManipulator.cs" /> 154 <Compile Include="Encodings\GVR\Manipulators\GVRSwapManipulator.cs" /> 155 <Compile Include="Encodings\GVR\Manipulators\GVRManipulator.cs" /> 156 <Compile Include="Encodings\Potvin\Crossovers\PotvinRouteBasedCrossover.cs" /> 157 <Compile Include="Encodings\Potvin\Crossovers\PotvinSequenceBasedCrossover.cs" /> 144 158 <Compile Include="Encodings\Potvin\Crossovers\PotvinCrossover.cs" /> 145 <Compile Include="Encodings\Potvin\Manipulators\ LocalSearchManipulator.cs" />146 <Compile Include="Encodings\Potvin\Manipulators\ TwoLevelExchangeManipulator.cs" />147 <Compile Include="Encodings\Potvin\Manipulators\ OneLevelExchangeManipulator.cs" />159 <Compile Include="Encodings\Potvin\Manipulators\PotvinLocalSearchManipulator.cs" /> 160 <Compile Include="Encodings\Potvin\Manipulators\PotvinTwoLevelExchangeManipulator.cs" /> 161 <Compile Include="Encodings\Potvin\Manipulators\PotvinOneLevelExchangeManipulator.cs" /> 148 162 <Compile Include="Encodings\Potvin\Manipulators\PotvinManipulator.cs" /> 163 <Compile Include="Encodings\Prins\Crossovers\PrinsCrossover.cs" /> 164 <Compile Include="Encodings\Prins\Crossovers\PrinsPermutationCrossover.cs" /> 165 <Compile Include="Encodings\Prins\Interfaces\IPrinsOperator.cs" /> 166 <Compile Include="Encodings\Prins\Manipulators\PrinsStochasticLSManipulator.cs" /> 167 <Compile Include="Encodings\Prins\Manipulators\PrinsExhaustiveLSManipulator.cs" /> 168 <Compile Include="Encodings\Prins\Manipulators\PrinsLSManipulator.cs" /> 169 <Compile Include="Encodings\Prins\Manipulators\PrinsManipulator.cs" /> 170 <Compile Include="Encodings\Prins\Manipulators\PrinsPermutationManipulator.cs" /> 171 <Compile Include="Encodings\Prins\PrinsEncoding.cs" /> 172 <Compile Include="Encodings\Zhu\Crossovers\ZhuMergeCrossover2.cs" /> 173 <Compile Include="Encodings\Zhu\Crossovers\ZhuMergeCrossover1.cs" /> 174 <Compile Include="Encodings\Zhu\Crossovers\ZhuHeuristicCrossover2.cs" /> 175 <Compile Include="Encodings\Zhu\Crossovers\ZhuHeuristicCrossover1.cs" /> 176 <Compile Include="Encodings\Zhu\Crossovers\ZhuCrossover.cs" /> 177 <Compile Include="Encodings\Zhu\Crossovers\ZhuPermutationCrossover.cs" /> 178 <Compile Include="Encodings\Zhu\Manipulators\ZhuPermutationManipulator.cs" /> 179 <Compile Include="Encodings\Zhu\Manipulators\ZhuManipulator.cs" /> 180 <Compile Include="Encodings\Zhu\ZhuEncoding.cs" /> 149 181 <Compile Include="Interfaces\IVRPMoveMaker.cs" /> 182 <Compile Include="ORLIBParser.cs" /> 183 <Compile Include="TSPLIBParser.cs" /> 150 184 <Compile Include="VRPUtilities.cs" /> 151 185 <Compile Include="VRPOperator.cs" /> … … 157 191 <Compile Include="Encodings\Alba\Moves\AlbaMoveOperator.cs" /> 158 192 <Compile Include="Encodings\Alba\Moves\AlbaMoveMaker.cs" /> 159 <Compile Include="Encodings\Alba\Moves\ThreeOpt\ PermutationTranslocationMoveGenerator.cs" />160 <Compile Include="Encodings\Alba\Moves\ThreeOpt\ PermutationTranslocationMoveMaker.cs" />161 <Compile Include="Encodings\Alba\Moves\ThreeOpt\ PermutationTranslocationMoveTabuMaker.cs" />162 <Compile Include="Encodings\Alba\Moves\ThreeOpt\ PermutationTranslocationMoveSoftTabuCriterion.cs" />163 <Compile Include="Encodings\Alba\Moves\ThreeOpt\ PermutationTranslocationMoveHardTabuCriterion.cs" />193 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveGenerator.cs" /> 194 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveMaker.cs" /> 195 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveTabuMaker.cs" /> 196 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveSoftTabuCriterion.cs" /> 197 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveHardTabuCriterion.cs" /> 164 198 <Compile Include="Encodings\Potvin\PotvinEncoding.cs" /> 165 199 <Compile Include="Encodings\VRPMoveOperator.cs" /> … … 179 213 <Compile Include="Interfaces\IVRPCreator.cs" /> 180 214 <Compile Include="Interfaces\IVRPOperator.cs" /> 181 <Compile Include="Encodings\Alba\Moves\ThreeOpt\ PermutationTranslocationMoveEvaluator.cs" />215 <Compile Include="Encodings\Alba\Moves\ThreeOpt\AlbaTranslocationMoveEvaluator.cs" /> 182 216 <Compile Include="MoveEvaluators\VRPMoveEvaluator.cs" /> 183 217 <Compile Include="VRPSolution.cs" /> … … 187 221 </ItemGroup> 188 222 <ItemGroup> 223 <ProjectReference Include="..\..\HeuristicLab.Analysis\3.3\HeuristicLab.Analysis-3.3.csproj"> 224 <Project>{887425B4-4348-49ED-A457-B7D2C26DDBF9}</Project> 225 <Name>HeuristicLab.Analysis-3.3</Name> 226 </ProjectReference> 189 227 <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj"> 190 228 <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project> -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/HeuristicLabProblemsVehicleRoutingPlugin.cs.frame
r3938 r4352 28 28 [Plugin("HeuristicLab.Problems.VehicleRouting", "3.3.0.$WCREV$")] 29 29 [PluginFile("HeuristicLab.Problems.VehicleRouting-3.3.dll", PluginFileType.Assembly)] 30 [PluginDependency("HeuristicLab.Analysis", "3.3")] 30 31 [PluginDependency("HeuristicLab.Collections", "3.3")] 31 32 [PluginDependency("HeuristicLab.Common", "3.3")] -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPCreator.cs
r4179 r4352 26 26 namespace HeuristicLab.Problems.VehicleRouting { 27 27 public interface IVRPCreator : IVRPOperator, ISolutionCreator { 28 IValueLookupParameter<IntValue> CitiesParameter { get; }29 28 ILookupParameter<IVRPEncoding> VRPToursParameter { get; } 30 29 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Interfaces/IVRPEncoding.cs
r4154 r4352 22 22 using HeuristicLab.Core; 23 23 using HeuristicLab.Problems.VehicleRouting.Encodings; 24 using System.Collections.Generic; 25 using HeuristicLab.Data; 24 26 25 27 namespace HeuristicLab.Problems.VehicleRouting { 26 28 public interface IVRPEncoding : IItem { 27 ItemList<Tour> Tours { 28 get; 29 } 29 List<Tour> GetTours(ILookupParameter<DoubleMatrix> distanceMatrix, int maxVehicles = int.MaxValue); 30 30 } 31 31 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPOperator.cs
r4186 r4352 113 113 public VRPOperator() 114 114 : base() { 115 Parameters.Add(new ValueLookupParameter<IntValue>("Cities", "The city count."));116 115 Parameters.Add(new LookupParameter<DoubleMatrix>("Coordinates", "The coordinates of the cities.")); 117 116 Parameters.Add(new LookupParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities.")); … … 140 139 bool feasible = true; 141 140 142 foreach (Tour tour in solution. Tours) {141 foreach (Tour tour in solution.GetTours(DistanceMatrixParameter)) { 143 142 if (!Feasible(tour)) { 144 143 feasible = false; -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VRPUtilities.cs
r4154 r4352 60 60 61 61 if (useDistanceMatrix.Value) { 62 if (distanceMatrix.ActualValue == null) { 63 distanceMatrix.ActualValue = CreateDistanceMatrix(coordinates); 64 } 62 if (distanceMatrix is IValueLookupParameter<DoubleMatrix> && 63 (distanceMatrix as IValueLookupParameter<DoubleMatrix>).Value != null) { 64 distance = (distanceMatrix as IValueLookupParameter<DoubleMatrix>).Value[start, end]; 65 } else { 66 if (distanceMatrix.ActualValue == null) { 67 distanceMatrix.ActualValue = CreateDistanceMatrix(coordinates); 68 } 65 69 66 distance = distanceMatrix.ActualValue[start, end]; 70 distance = distanceMatrix.ActualValue[start, end]; 71 } 67 72 } else { 68 73 distance = CalculateDistance(start, end, coordinates); -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
r4179 r4352 34 34 using HeuristicLab.Problems.VehicleRouting.Encodings.Alba; 35 35 using HeuristicLab.Problems.VehicleRouting.Encodings.General; 36 using HeuristicLab.Problems.VehicleRouting.Encodings.Prins; 36 37 37 38 namespace HeuristicLab.Problems.VehicleRouting { … … 176 177 private BestVRPSolutionAnalyzer BestVRPSolutionAnalyzer { 177 178 get { return operators.OfType<BestVRPSolutionAnalyzer>().FirstOrDefault(); } 179 } 180 private BestAverageWorstVRPToursAnalyzer BestAverageWorstVRPToursAnalyzer { 181 get { return operators.OfType<BestAverageWorstVRPToursAnalyzer>().FirstOrDefault(); } 178 182 } 179 183 #endregion … … 314 318 operators = new List<IOperator>(); 315 319 operators.Add(new BestVRPSolutionAnalyzer()); 320 operators.Add(new BestAverageWorstVRPToursAnalyzer()); 316 321 ParameterizeAnalyzer(); 317 operators.AddRange(ApplicationManager.Manager.GetInstances<IVRPOperator>().Cast<IOperator>() );322 operators.AddRange(ApplicationManager.Manager.GetInstances<IVRPOperator>().Cast<IOperator>().OrderBy(op => op.Name)); 318 323 ParameterizeOperators(); 319 324 UpdateMoveEvaluators(); … … 333 338 } 334 339 private void ParameterizeSolutionCreator() { 335 SolutionCreator.CitiesParameter.Value = new IntValue(Coordinates.Rows - 1);336 340 SolutionCreator.VehiclesParameter.ActualName = VehiclesParameter.Name; 337 341 SolutionCreator.CoordinatesParameter.ActualName = CoordinatesParameter.Name; … … 367 371 BestVRPSolutionAnalyzer.OverloadParameter.ActualName = Evaluator.OverloadParameter.ActualName; 368 372 BestVRPSolutionAnalyzer.TardinessParameter.ActualName = Evaluator.TardinessParameter.ActualName; 373 BestVRPSolutionAnalyzer.TravelTimeParameter.ActualName = Evaluator.TravelTimeParameter.ActualName; 374 BestVRPSolutionAnalyzer.VehiclesUtilizedParameter.ActualName = Evaluator.VehcilesUtilizedParameter.ActualName; 369 375 BestVRPSolutionAnalyzer.VRPToursParameter.ActualName = SolutionCreator.VRPToursParameter.ActualName; 370 376 BestVRPSolutionAnalyzer.ResultsParameter.ActualName = "Results"; 377 378 BestAverageWorstVRPToursAnalyzer.DistanceParameter.ActualName = Evaluator.DistanceParameter.ActualName; 379 BestAverageWorstVRPToursAnalyzer.OverloadParameter.ActualName = Evaluator.OverloadParameter.ActualName; 380 BestAverageWorstVRPToursAnalyzer.TardinessParameter.ActualName = Evaluator.TardinessParameter.ActualName; 381 BestAverageWorstVRPToursAnalyzer.TravelTimeParameter.ActualName = Evaluator.TravelTimeParameter.ActualName; 382 BestAverageWorstVRPToursAnalyzer.VehiclesUtilizedParameter.ActualName = Evaluator.VehcilesUtilizedParameter.ActualName; 383 BestAverageWorstVRPToursAnalyzer.ResultsParameter.ActualName = "Results"; 371 384 } 372 385 private void ParameterizeOperators() { … … 387 400 } 388 401 402 foreach (IPrinsOperator op in Operators.OfType<IPrinsOperator>()) { 403 op.FleetUsageFactor.ActualName = FleetUsageFactor.Name; 404 op.TimeFactor.ActualName = TimeFactor.Name; 405 op.DistanceFactor.ActualName = DistanceFactor.Name; 406 op.OverloadPenalty.ActualName = OverloadPenalty.Name; 407 op.TardinessPenalty.ActualName = TardinessPenalty.Name; 408 } 409 389 410 foreach (IVRPMoveEvaluator op in Operators.OfType<IVRPMoveEvaluator>()) { 390 411 op.FleetUsageFactor.ActualName = FleetUsageFactor.Name; … … 427 448 DueTime = new DoubleArray(parser.Duetimes); 428 449 ServiceTime = new DoubleArray(parser.Servicetimes); 450 451 OnReset(); 452 } 453 454 public void ImportFromTSPLib(string tspFileName) { 455 TSPLIBParser parser = new TSPLIBParser(tspFileName); 456 parser.Parse(); 457 458 this.Name = parser.Name; 459 460 int problemSize = parser.Demands.Length; 461 462 Coordinates = new DoubleMatrix(parser.Vertices); 463 if (parser.Vehicles != -1) 464 Vehicles.Value = parser.Vehicles; 465 else 466 Vehicles.Value = problemSize - 1; 467 Capacity.Value = parser.Capacity; 468 Demand = new DoubleArray(parser.Demands); 469 ReadyTime = new DoubleArray(problemSize); 470 DueTime = new DoubleArray(problemSize); 471 ServiceTime = new DoubleArray(problemSize); 472 473 for (int i = 0; i < problemSize; i++) { 474 ReadyTime[i] = 0; 475 DueTime[i] = int.MaxValue; 476 ServiceTime[i] = 0; 477 } 478 479 if (parser.Distance != -1) { 480 DueTime[0] = parser.Distance; 481 } 482 483 if (parser.Depot != 1) 484 throw new Exception("Invalid depot specification"); 485 486 if (parser.WeightType != TSPLIBParser.TSPLIBEdgeWeightType.EUC_2D) 487 throw new Exception("Invalid weight type"); 488 489 OnReset(); 490 } 491 492 public void ImportFromORLib(string orFileName) { 493 ORLIBParser parser = new ORLIBParser(orFileName); 494 parser.Parse(); 495 496 this.Name = parser.Name; 497 int problemSize = parser.Demands.Length; 498 499 Coordinates = new DoubleMatrix(parser.Vertices); 500 Vehicles.Value = problemSize - 1; 501 Capacity.Value = parser.Capacity; 502 Demand = new DoubleArray(parser.Demands); 503 ReadyTime = new DoubleArray(problemSize); 504 DueTime = new DoubleArray(problemSize); 505 ServiceTime = new DoubleArray(problemSize); 506 507 ReadyTime[0] = 0; 508 DueTime[0] = parser.MaxRouteTime; 509 ServiceTime[0] = 0; 510 511 for (int i = 1; i < problemSize; i++) { 512 ReadyTime[i] = 0; 513 DueTime[i] = int.MaxValue; 514 ServiceTime[i] = parser.ServiceTime; 515 } 429 516 430 517 OnReset();
Note: See TracChangeset
for help on using the changeset viewer.