Changeset 7470 for branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Analyzers
- Timestamp:
- 02/15/12 17:28:37 (13 years ago)
- Location:
- branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Analyzers
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Analyzers/BestGQAPSolutionAnalyzer.cs
r7444 r7470 41 41 IDemandsAwareGQAPOperator, ICapacitiesAwareGQAPOperator, ITransportationCostsAwareGQAPOperator, 42 42 IOverbookedCapacityPenaltyAwareGQAPOperator, IEquipmentNamesAwareGQAPOperator, ILocationNamesAwareGQAPOperator, 43 IBestKnownQualityAwareGQAPOperator, IBestKnownSolutionAwareGQAPOperator, IBestKnownSolutionsAwareGQAPOperator, 44 IAnalyzer { 43 IBestKnownQualityAwareGQAPOperator, IBestKnownSolutionAwareGQAPOperator, IAnalyzer { 45 44 46 45 public bool EnabledByDefault { … … 97 96 get { return (ILookupParameter<DoubleValue>)Parameters["BestKnownQuality"]; } 98 97 } 99 public ILookupParameter<GQAPSolution> BestKnownSolutionParameter { 100 get { return (ILookupParameter<GQAPSolution>)Parameters["BestKnownSolution"]; } 101 } 102 public ILookupParameter<GQAPAssignmentArchive> BestKnownSolutionsParameter { 103 get { return (ILookupParameter<GQAPAssignmentArchive>)Parameters["BestKnownSolutions"]; } 98 public ILookupParameter<GQAPAssignment> BestKnownSolutionParameter { 99 get { return (ILookupParameter<GQAPAssignment>)Parameters["BestKnownSolution"]; } 104 100 } 105 101 public ILookupParameter<GQAPAssignment> BestSolutionParameter { … … 135 131 Parameters.Add(new LookupParameter<StringArray>("LocationNames", GeneralizedQuadraticAssignmentProblem.LocationNamesDescription)); 136 132 Parameters.Add(new LookupParameter<DoubleValue>("BestKnownQuality", GeneralizedQuadraticAssignmentProblem.BestKnownQualityDescription)); 137 Parameters.Add(new LookupParameter<GQAPSolution>("BestKnownSolution", GeneralizedQuadraticAssignmentProblem.BestKnownSolutionDescription)); 138 Parameters.Add(new LookupParameter<GQAPAssignmentArchive>("BestKnownSolutions", GeneralizedQuadraticAssignmentProblem.BestKnownSolutionsDescription)); 133 Parameters.Add(new LookupParameter<GQAPAssignment>("BestKnownSolution", GeneralizedQuadraticAssignmentProblem.BestKnownSolutionDescription)); 139 134 Parameters.Add(new LookupParameter<GQAPAssignment>("BestSolution", "The best GQAP solution found so far.")); 140 135 Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best GQAP solution should be stored.")); … … 159 154 var maximization = MaximizationParameter.ActualValue.Value; 160 155 var bestKnownQuality = BestKnownQualityParameter.ActualValue; 161 var bestKnownSolutions = BestKnownSolutionsParameter.ActualValue;162 156 163 157 int bestIndex; … … 168 162 if (bestKnownQuality == null || HasSolutionImproved(bestKnownQuality.Value, qualities[bestIndex].Value, maximization)) { 169 163 BestKnownQualityParameter.ActualValue = new DoubleValue(qualities[bestIndex].Value); 170 BestKnownSolutionParameter.ActualValue = new GQAP Solution((IntegerVector)assignments[bestIndex].Clone(), qualities[bestIndex], flowDistanceQualities[bestIndex], installationQualities[bestIndex], overbookedCapacities[bestIndex]);164 BestKnownSolutionParameter.ActualValue = new GQAPAssignment((IntegerVector)assignments[bestIndex].Clone(), (DoubleValue)qualities[bestIndex].Clone(), flowDistanceQualities[bestIndex], installationQualities[bestIndex], overbookedCapacities[bestIndex], equipmentNames, locationNames, distances, weights, installationCosts, demands, capacities, transportationCosts, overbookedCapacityPenalty); 171 165 } 172 166 173 GQAPAssignmentassignment = BestSolutionParameter.ActualValue;167 var assignment = BestSolutionParameter.ActualValue; 174 168 if (assignment == null) { 175 169 assignment = new GQAPAssignment((IntegerVector)assignments[bestIndex].Clone(), (DoubleValue)qualities[bestIndex].Clone(), flowDistanceQualities[bestIndex], installationQualities[bestIndex], overbookedCapacities[bestIndex], equipmentNames, locationNames, distances, weights, installationCosts, demands, capacities, transportationCosts, overbookedCapacityPenalty); 176 170 assignment.Distances = distances; 177 171 BestSolutionParameter.ActualValue = assignment; 178 results.Add(new Result("Best GQAP Solution", assignment));179 172 } else { 180 if (HasSolutionImproved(assignment.Solution.Quality.Value, qualities[bestIndex].Value, maximization)) { 181 assignment.Solution = new GQAPSolution((IntegerVector)assignments[bestIndex].Clone(), 182 (DoubleValue)qualities[bestIndex].Clone(), (DoubleValue)flowDistanceQualities[bestIndex].Clone(), 183 (DoubleValue)installationQualities[bestIndex].Clone(), (DoubleValue)overbookedCapacities[bestIndex].Clone()); 173 if (HasSolutionImproved(assignment.Quality.Value, qualities[bestIndex].Value, maximization)) { 174 assignment.Assignment = (IntegerVector)assignments[bestIndex].Clone(); 175 assignment.Quality = (DoubleValue)qualities[bestIndex].Clone(); 176 assignment.FlowDistanceQuality = (DoubleValue)flowDistanceQualities[bestIndex].Clone(); 177 assignment.InstallationQuality = (DoubleValue)installationQualities[bestIndex].Clone(); 178 assignment.OverbookedCapacity = (DoubleValue)overbookedCapacities[bestIndex].Clone(); 184 179 assignment.EquipmentNames = equipmentNames; 185 180 assignment.LocationNames = locationNames; … … 193 188 } 194 189 } 195 196 GQAPAssignmentArchive archive = BestKnownSolutionsParameter.ActualValue; 197 if (archive == null) { 198 archive = new GQAPAssignmentArchive(equipmentNames, locationNames, distances, weights, installationCosts, demands, capacities, transportationCosts, overbookedCapacityPenalty); 199 BestKnownSolutionsParameter.ActualValue = archive; 200 } else { 201 var solutions = Enumerable.Range(0, assignments.Length) 202 .Select(i => new GQAPSolution(assignments[i], qualities[i], flowDistanceQualities[i], installationQualities[i], overbookedCapacities[i])) 203 .Concat(archive.Solutions); 204 archive.Solutions = GQAPSolutionArchiveUpdater.GetFeasibleParetoFront(solutions); 205 } 190 if (!results.ContainsKey("Best GQAP Assignment")) 191 results.Add(new Result("Best GQAP Assignment", assignment)); 206 192 207 193 return base.Apply(); -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Analyzers/GQAPSolutionArchiveAnalyzer.cs
r7444 r7470 40 40 IDemandsAwareGQAPOperator, ICapacitiesAwareGQAPOperator, ITransportationCostsAwareGQAPOperator, 41 41 IOverbookedCapacityPenaltyAwareGQAPOperator, IEquipmentNamesAwareGQAPOperator, ILocationNamesAwareGQAPOperator, 42 I Analyzer {42 IBestKnownSolutionsAwareGQAPOperator, IAnalyzer { 43 43 44 44 public bool EnabledByDefault { 45 get { return false; }45 get { return true; } 46 46 } 47 47 … … 94 94 get { return (IValueLookupParameter<ResultCollection>)Parameters["Results"]; } 95 95 } 96 public ILookupParameter<GQAPAssignmentArchive> BestKnownSolutionsParameter { 97 get { return (ILookupParameter<GQAPAssignmentArchive>)Parameters["BestKnownSolutions"]; } 98 } 96 99 97 100 [StorableConstructor] … … 119 122 Parameters.Add(new LookupParameter<StringArray>("LocationNames", GeneralizedQuadraticAssignmentProblem.LocationNamesDescription)); 120 123 Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best GQAP solution should be stored.")); 124 Parameters.Add(new LookupParameter<GQAPAssignmentArchive>("BestKnownSolutions", GeneralizedQuadraticAssignmentProblem.BestKnownSolutionsDescription)); 121 125 } 122 126 … … 160 164 archive.Solutions = GQAPSolutionArchiveUpdater.GetFeasibleParetoFront(solutions); 161 165 166 GQAPAssignmentArchive bestKnownArchive = BestKnownSolutionsParameter.ActualValue; 167 if (bestKnownArchive == null) { 168 bestKnownArchive = new GQAPAssignmentArchive(); 169 BestKnownSolutionsParameter.ActualValue = bestKnownArchive; 170 } else { 171 var archiveSolutions = Enumerable.Range(0, assignments.Length) 172 .Select(i => new GQAPSolution(assignments[i], qualities[i], flowDistanceQualities[i], installationQualities[i], overbookedCapacities[i])) 173 .Concat(archive.Solutions); 174 bestKnownArchive.Solutions = GQAPSolutionArchiveUpdater.GetFeasibleParetoFront(archiveSolutions); 175 } 176 162 177 return base.Apply(); 163 178 }
Note: See TracChangeset
for help on using the changeset viewer.