Changeset 4851 for trunk/sources/HeuristicLab.Problems.VehicleRouting
- Timestamp:
- 11/19/10 13:54:50 (14 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/Analyzers/BestVRPSolutionAnalyzer.cs
r4722 r4851 81 81 get { return (ValueLookupParameter<ResultCollection>)Parameters["Results"]; } 82 82 } 83 public LookupParameter<DoubleValue> BestKnownQualityParameter { 84 get { return (LookupParameter<DoubleValue>)Parameters["BestKnownQuality"]; } 85 } 86 public LookupParameter<VRPSolution> BestKnownSolutionParameter { 87 get { return (LookupParameter<VRPSolution>)Parameters["BestKnownSolution"]; } 88 } 83 89 84 90 [StorableConstructor] … … 97 103 Parameters.Add(new LookupParameter<DoubleArray>("ServiceTime", "The service time of each customer.")); 98 104 105 Parameters.Add(new LookupParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this VRP instance.")); 106 Parameters.Add(new LookupParameter<VRPSolution>("BestKnownSolution", "The best known solution of this VRP instance.")); 107 99 108 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Quality", "The qualities of the VRP solutions which should be analyzed.")); 100 109 Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("Distance", "The distances of the VRP solutions which should be analyzed.")); … … 111 120 } 112 121 122 [StorableHook(HookType.AfterDeserialization)] 123 private void AfterDeserializationHook() { 124 #region Backwards Compatibility 125 if (!Parameters.ContainsKey("BestKnownQuality")) { 126 Parameters.Add(new LookupParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this VRP instance.")); 127 } 128 if (!Parameters.ContainsKey("BestKnownSolution")) { 129 Parameters.Add(new LookupParameter<VRPSolution>("BestKnownSolution", "The best known solution of this VRP instance.")); 130 } 131 #endregion 132 } 133 113 134 public override IOperation Apply() { 114 135 DoubleMatrix coordinates = CoordinatesParameter.ActualValue; … … 121 142 ItemArray<DoubleValue> travelTimes = TravelTimeParameter.ActualValue; 122 143 ItemArray<DoubleValue> vehiclesUtilizations = VehiclesUtilizedParameter.ActualValue; 144 145 DoubleValue bestKnownQuality = BestKnownQualityParameter.ActualValue; 123 146 124 147 int i = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index; … … 159 182 } 160 183 184 if (bestKnownQuality == null || 185 qualities[i].Value < bestKnownQuality.Value) { 186 BestKnownQualityParameter.ActualValue = new DoubleValue(qualities[i].Value); 187 BestKnownSolutionParameter.ActualValue = (VRPSolution)solution.Clone(); 188 } 189 161 190 return base.Apply(); 162 191 } -
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.3/VehicleRoutingProblem.cs
r4847 r4851 114 114 get { return BestKnownQualityParameter; } 115 115 } 116 public OptionalValueParameter< IVRPEncoding> BestKnownSolutionParameter {117 get { return (OptionalValueParameter< IVRPEncoding>)Parameters["BestKnownSolution"]; }116 public OptionalValueParameter<VRPSolution> BestKnownSolutionParameter { 117 get { return (OptionalValueParameter<VRPSolution>)Parameters["BestKnownSolution"]; } 118 118 } 119 119 #endregion … … 160 160 set { BestKnownQualityParameter.Value = value; } 161 161 } 162 public IVRPEncodingBestKnownSolution {162 public VRPSolution BestKnownSolution { 163 163 get { return BestKnownSolutionParameter.Value; } 164 164 set { BestKnownSolutionParameter.Value = value; } … … 219 219 Parameters.Add(new ValueParameter<DoubleArray>("ServiceTime", "The service time of each customer.", new DoubleArray())); 220 220 Parameters.Add(new OptionalValueParameter<DoubleValue>("BestKnownQuality", "The quality of the best known solution of this VRP instance.")); 221 Parameters.Add(new OptionalValueParameter< IVRPEncoding>("BestKnownSolution", "The best known solution of this TSP instance."));221 Parameters.Add(new OptionalValueParameter<VRPSolution>("BestKnownSolution", "The best known solution of this VRP instance.")); 222 222 Parameters.Add(new ValueParameter<DoubleValue>("EvalFleetUsageFactor", "The fleet usage factor considered in the evaluation.", new DoubleValue(100))); 223 223 Parameters.Add(new ValueParameter<DoubleValue>("EvalTimeFactor", "The time factor considered in the evaluation.", new DoubleValue(0))); … … 440 440 #region Backwards Compatibility 441 441 if (!Parameters.ContainsKey("BestKnownSolution")) { 442 Parameters.Add(new OptionalValueParameter< IVRPEncoding>("BestKnownSolution", "The best known solution of this TSP instance."));442 Parameters.Add(new OptionalValueParameter<VRPSolution>("BestKnownSolution", "The best known solution of this TSP instance.")); 443 443 } 444 444 #endregion … … 673 673 if (BestKnownSolution != null) { 674 674 //call evaluator 675 IValue Parameter<DoubleMatrix> distMatrix = new ValueParameter<DoubleMatrix>("DistMatrix",675 IValueLookupParameter<DoubleMatrix> distMatrix = new ValueLookupParameter<DoubleMatrix>("DistMatrix", 676 676 DistanceMatrix); 677 677 678 678 TourEvaluation eval = VRPEvaluator.Evaluate( 679 BestKnownSolution ,679 BestKnownSolution.Solution, 680 680 Vehicles, 681 681 DueTime, … … 695 695 DistanceMatrix = distMatrix.Value; 696 696 697 BestKnownSolution.DistanceMatrix = DistanceMatrix; 698 BestKnownSolution.Distance = new DoubleValue(eval.Distance); 699 BestKnownSolution.Overload = new DoubleValue(eval.Overload); 700 BestKnownSolution.Quality = new DoubleValue(eval.Quality); 701 BestKnownSolution.Tardiness = new DoubleValue(eval.Tardiness); 702 BestKnownSolution.TravelTime = new DoubleValue(eval.TravelTime); 703 BestKnownSolution.VehicleUtilization = new DoubleValue(eval.VehcilesUtilized); 704 697 705 BestKnownQuality = new DoubleValue(eval.Quality); 698 706 } else { … … 717 725 718 726 if (cities != Coordinates.Rows - 1) 719 ErrorHandling.ShowErrorDialog(new Exception("Invalid solution")); 720 else 721 BestKnownSolutionParameter.Value = encoding; 727 ErrorHandling.ShowErrorDialog(new Exception("The optimal solution does not seem to correspond with the problem data.")); 728 else { 729 VRPSolution solution = new VRPSolution(); 730 solution.Solution = encoding; 731 solution.Coordinates = Coordinates; 732 solution.DistanceMatrix = DistanceMatrix; 733 solution.ReadyTime = ReadyTime; 734 solution.DueTime = DueTime; 735 solution.ServiceTime = ServiceTime; 736 solution.UseDistanceMatrix = UseDistanceMatrix; 737 738 BestKnownSolutionParameter.Value = solution; 739 } 722 740 } 723 741
Note: See TracChangeset
for help on using the changeset viewer.