Changeset 7419 for branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/GeneralizedQuadraticAssignmentProblem.cs
- Timestamp:
- 01/27/12 13:24:36 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/GeneralizedQuadraticAssignmentProblem.cs
r7418 r7419 37 37 [StorableClass] 38 38 public sealed class GeneralizedQuadraticAssignmentProblem : SingleObjectiveHeuristicOptimizationProblem<IGQAPEvaluator, IGQAPSolutionCreator>, IStorableContent { 39 39 40 public override Image ItemImage { 40 41 get { return HeuristicLab.Common.Resources.VSImageLibrary.Type; } … … 42 43 43 44 public string Filename { get; set; } 45 46 #region Parameter Descriptions 47 public static readonly string MaximizationDescription = "False if the fitness function should be minimized (default) or otherwise True if it should be maximized."; 48 public static readonly string WeightsDescription = "The weights matrix describes the flows between the equipments."; 49 public static readonly string DistancesDescription = "The distances matrix describes the distances between the locations at which the equipment can be installed."; 50 public static readonly string InstallationCostsDescription = "The installation costs matrix describes the installation costs of installing equipment i at location j"; 51 public static readonly string DemandsDescription = "The demands vector describes the space requirements of the equipments."; 52 public static readonly string CapacitiesDescription = "The capacities vector describes the available space at the locations."; 53 public static readonly string TransportationCostsDescription = "The transportation cost represents the flow-unit per distance-unit cost factor. This value can also be set to 1 if these costs are factored into the weights matrix already."; 54 public static readonly string OverbookedCapacityPenaltyDescription = "The multiplier for the constraint violation when added to the quality."; 55 public static readonly string BestKnownSolutionDescription = "The best known solution (if available)"; 56 public static readonly string EquipmentNamesDescription = "Optional: A list of names that describes the equipments."; 57 public static readonly string LocationNamesDescription = "Optional: A list of names that describes the locations."; 58 #endregion 44 59 45 60 #region Parameter Properties … … 130 145 public GeneralizedQuadraticAssignmentProblem() 131 146 : base(new GQAPEvaluator(), new RandomSolutionCreator()) { 132 Parameters.Add(new ValueParameter<DoubleMatrix>("Weights", "The weights matrix describes the flows between the equipments.", new DoubleMatrix()));133 Parameters.Add(new ValueParameter<DoubleMatrix>("Distances", "The distances matrix describes the distances between the locations at which the equipment can be installed.", new DoubleMatrix()));134 Parameters.Add(new ValueParameter<DoubleMatrix>("InstallationCosts", "The installation costs matrix describes the installation costs of installing equipment i at location j", new DoubleMatrix()));135 Parameters.Add(new FixedValueParameter<DoubleValue>("TransportationCosts", "The transportation cost represents the flow-unit per distance-unit cost factor. This value can also be set to 1 if these costs are factored into the weights matrix already.", new DoubleValue(1)));136 Parameters.Add(new FixedValueParameter<DoubleValue>("OverbookedCapacityPenalty", "The multiplier for the constraint violation when added to the quality.", new DoubleValue(1000)));137 Parameters.Add(new ValueParameter<DoubleArray>("Demands", "The demands vector describes the space requirements of the equipments.", new DoubleArray()));138 Parameters.Add(new ValueParameter<DoubleArray>("Capacities", "The capacities vector describes the available space at the locations.", new DoubleArray()));139 Parameters.Add(new OptionalValueParameter<IItem>("BestKnownSolution", "The best known solution (if available)", null));140 Parameters.Add(new OptionalValueParameter<StringArray>("EquipmentNames", "Optional: A list of names that describes the equipments.", null, false));141 Parameters.Add(new OptionalValueParameter<StringArray>("LocationNames", "Optional: A list of names that describes the locations.", null, false));147 Parameters.Add(new ValueParameter<DoubleMatrix>("Weights", WeightsDescription, new DoubleMatrix())); 148 Parameters.Add(new ValueParameter<DoubleMatrix>("Distances", DistancesDescription, new DoubleMatrix())); 149 Parameters.Add(new ValueParameter<DoubleMatrix>("InstallationCosts", InstallationCostsDescription, new DoubleMatrix())); 150 Parameters.Add(new FixedValueParameter<DoubleValue>("TransportationCosts", TransportationCostsDescription, new DoubleValue(1))); 151 Parameters.Add(new FixedValueParameter<DoubleValue>("OverbookedCapacityPenalty", OverbookedCapacityPenaltyDescription, new DoubleValue(1000))); 152 Parameters.Add(new ValueParameter<DoubleArray>("Demands", DemandsDescription, new DoubleArray())); 153 Parameters.Add(new ValueParameter<DoubleArray>("Capacities", CapacitiesDescription, new DoubleArray())); 154 Parameters.Add(new OptionalValueParameter<IItem>("BestKnownSolution", BestKnownSolutionDescription, null)); 155 Parameters.Add(new OptionalValueParameter<StringArray>("EquipmentNames", EquipmentNamesDescription, null, false)); 156 Parameters.Add(new OptionalValueParameter<StringArray>("LocationNames", LocationNamesDescription, null, false)); 142 157 143 158 WeightsParameter.ReactOnValueToStringChangedAndValueItemImageChanged = false; … … 223 238 224 239 private void Parameterize() { 225 Evaluator.WeightsParameter.ActualName = WeightsParameter.Name; 226 Evaluator.DistancesParameter.ActualName = DistancesParameter.Name; 227 Evaluator.InstallationCostsParameter.ActualName = InstallationCostsParameter.Name; 228 Evaluator.TransportationCostsParameter.ActualName = TransportationCostsParameter.Name; 229 Evaluator.DemandsParameter.ActualName = DemandsParameter.Name; 230 Evaluator.CapacitiesParameter.ActualName = CapacitiesParameter.Name; 231 Evaluator.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 232 233 SolutionCreator.DemandsParameter.ActualName = DemandsParameter.Name; 234 SolutionCreator.CapacitiesParameter.ActualName = CapacitiesParameter.Name; 235 236 foreach (var op in Operators.OfType<IEquipmentAwareGQAPOperator>()) { 240 241 var operators = Operators.Union(new IOperator[] { SolutionCreator, Evaluator }).ToArray(); 242 243 foreach (var op in operators.OfType<IAssignmentAwareGQAPOperator>()) { 244 op.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 245 } 246 foreach (var op in operators.OfType<IAssignmentsAwareGQAPOperator>()) { 247 op.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 248 } 249 foreach (var op in operators.OfType<IBestKnownQualityAwareGQAPOperator>()) { 250 op.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name; 251 } 252 foreach (var op in operators.OfType<IBestKnownSolutionAwareGQAPOperator>()) { 253 op.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name; 254 } 255 foreach (var op in operators.OfType<ICapacitiesAwareGQAPOperator>()) { 256 op.CapacitiesParameter.ActualName = CapacitiesParameter.Name; 257 } 258 foreach (var op in operators.OfType<IDemandsAwareGQAPOperator>()) { 237 259 op.DemandsParameter.ActualName = DemandsParameter.Name; 238 260 } 239 foreach (var op in Operators.OfType<IGQAPCrossover>()) { 261 foreach (var op in operators.OfType<IDistancesAwareGQAPOperator>()) { 262 op.DistancesParameter.ActualName = DistancesParameter.Name; 263 } 264 foreach (var op in operators.OfType<IEquipmentNamesAwareGQAPOperator>()) { 265 op.EquipmentNamesParameter.ActualName = EquipmentNamesParameter.Name; 266 } 267 foreach (var op in operators.OfType<IGQAPCrossover>()) { 240 268 op.ParentsParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 241 269 op.ChildParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 242 270 } 243 foreach (var op in Operators.OfType<IGQAPEvaluationOperator>()) { 244 op.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 245 op.TransportationCostsParameter.ActualName = TransportationCostsParameter.Name; 271 foreach (var op in operators.OfType<IInstallationCostsAwareGQAPOperator>()) { 272 op.InstallationCostsParameter.ActualName = InstallationCostsParameter.Name; 273 } 274 foreach (var op in operators.OfType<ILocationNamesAwareGQAPOperator>()) { 275 op.LocationNamesParameter.ActualName = LocationNamesParameter.Name; 276 } 277 var moveEvaluator = operators.OfType<IGQAPMoveEvaluator>().FirstOrDefault(); 278 foreach (var op in operators.OfType<IGQAPMoveEvaluator>()) { // synchronize all move evaluators 279 if (moveEvaluator != null) { 280 op.MoveQualityParameter.ActualName = moveEvaluator.MoveQualityParameter.ActualName; 281 op.MoveFlowDistanceQualityParameter.ActualName = moveEvaluator.MoveFlowDistanceQualityParameter.ActualName; 282 op.MoveInstallationQualityParameter.ActualName = moveEvaluator.MoveInstallationQualityParameter.ActualName; 283 op.MoveOverbookedCapacityParameter.ActualName = moveEvaluator.MoveOverbookedCapacityParameter.ActualName; 284 } 285 } 286 foreach (var op in operators.OfType<IMoveQualityAwareGQAPOperator>()) { 287 if (moveEvaluator != null) { 288 op.MoveQualityParameter.ActualName = moveEvaluator.MoveQualityParameter.ActualName; 289 op.MoveFlowDistanceQualityParameter.ActualName = moveEvaluator.MoveFlowDistanceQualityParameter.ActualName; 290 op.MoveInstallationQualityParameter.ActualName = moveEvaluator.MoveInstallationQualityParameter.ActualName; 291 op.MoveOverbookedCapacityParameter.ActualName = moveEvaluator.MoveOverbookedCapacityParameter.ActualName; 292 } 293 op.MaximizationParameter.ActualName = MaximizationParameter.Name; 294 } 295 foreach (var op in operators.OfType<IOverbookedCapacityPenaltyAwareGQAPOperator>()) { 246 296 op.OverbookedCapacityPenaltyParameter.ActualName = OverbookedCapacityPenaltyParameter.Name; 247 op.WeightsParameter.ActualName = WeightsParameter.Name; 248 op.DistancesParameter.ActualName = DistancesParameter.Name; 249 op.InstallationCostsParameter.ActualName = InstallationCostsParameter.Name; 250 op.DemandsParameter.ActualName = DemandsParameter.Name; 251 op.CapacitiesParameter.ActualName = CapacitiesParameter.Name; 252 } 253 foreach (var op in Operators.OfType<IGQAPLocalImprovementOperator>()) { 254 op.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 297 } 298 foreach (var op in operators.OfType<IQualitiesAwareGQAPOperator>()) { 255 299 op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 256 300 op.FlowDistanceQualityParameter.ActualName = Evaluator.FlowDistanceQualityParameter.ActualName; 257 301 op.InstallationQualityParameter.ActualName = Evaluator.InstallationQualityParameter.ActualName; 258 302 op.OverbookedCapacityParameter.ActualName = Evaluator.OverbookedCapacityParameter.ActualName; 303 op.MaximizationParameter.ActualName = MaximizationParameter.Name; 304 } 305 foreach (var op in operators.OfType<IQualityAwareGQAPOperator>()) { 306 op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 307 op.FlowDistanceQualityParameter.ActualName = Evaluator.FlowDistanceQualityParameter.ActualName; 308 op.InstallationQualityParameter.ActualName = Evaluator.InstallationQualityParameter.ActualName; 309 op.OverbookedCapacityParameter.ActualName = Evaluator.OverbookedCapacityParameter.ActualName; 310 op.MaximizationParameter.ActualName = MaximizationParameter.Name; 311 } 312 foreach (var op in operators.OfType<ITransportationCostsAwareGQAPOperator>()) { 259 313 op.TransportationCostsParameter.ActualName = TransportationCostsParameter.Name; 260 op.OverbookedCapacityPenaltyParameter.ActualName = OverbookedCapacityPenaltyParameter.Name; 314 } 315 foreach (var op in operators.OfType<IWeightsAwareGQAPOperator>()) { 261 316 op.WeightsParameter.ActualName = WeightsParameter.Name; 262 op.DistancesParameter.ActualName = DistancesParameter.Name; 263 op.InstallationCostsParameter.ActualName = InstallationCostsParameter.Name; 264 op.DemandsParameter.ActualName = DemandsParameter.Name; 265 op.CapacitiesParameter.ActualName = CapacitiesParameter.Name; 266 } 267 foreach (var op in Operators.OfType<IGQAPManipulator>()) { 268 op.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 269 } 270 foreach (var op in Operators.OfType<IGQAPMerger>()) { 271 op.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 272 op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName; 273 op.MaximizationParameter.ActualName = MaximizationParameter.Name; 274 } 275 foreach (var op in Operators.OfType<IGQAPMoveOperator>()) { 276 op.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 277 } 278 foreach (var op in Operators.OfType<ILocationAwareGQAPOperator>()) { 279 op.CapacitiesParameter.ActualName = CapacitiesParameter.Name; 280 } 281 282 foreach (var op in Operators.OfType<IIntegerVectorCrossover>()) { 317 } 318 319 foreach (var op in operators.OfType<IIntegerVectorCrossover>()) { 283 320 op.ParentsParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 284 321 op.ChildParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 285 322 } 286 foreach (var op in Operators.OfType<IIntegerVectorManipulator>()) {323 foreach (var op in operators.OfType<IIntegerVectorManipulator>()) { 287 324 op.IntegerVectorParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName; 288 }289 290 if (BestSolutionAnalyzer != null) {291 BestSolutionAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;292 BestSolutionAnalyzer.DistancesParameter.ActualName = DistancesParameter.Name;293 BestSolutionAnalyzer.WeightsParameter.ActualName = WeightsParameter.Name;294 BestSolutionAnalyzer.InstallationCostsParameter.ActualName = InstallationCostsParameter.Name;295 BestSolutionAnalyzer.DemandsParameter.ActualName = DemandsParameter.Name;296 BestSolutionAnalyzer.CapacitiesParameter.ActualName = CapacitiesParameter.Name;297 BestSolutionAnalyzer.TransportationCostsParameter.ActualName = TransportationCostsParameter.Name;298 BestSolutionAnalyzer.OverbookedCapacityPenaltyParameter.ActualName = OverbookedCapacityPenaltyParameter.Name;299 BestSolutionAnalyzer.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName;300 BestSolutionAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;301 BestSolutionAnalyzer.FlowDistanceQualityParameter.ActualName = Evaluator.FlowDistanceQualityParameter.ActualName;302 BestSolutionAnalyzer.InstallationQualityParameter.ActualName = Evaluator.InstallationQualityParameter.ActualName;303 BestSolutionAnalyzer.OverbookedCapacityParameter.ActualName = Evaluator.OverbookedCapacityParameter.ActualName;304 BestSolutionAnalyzer.ResultsParameter.ActualName = "Results";305 BestSolutionAnalyzer.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;306 BestSolutionAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;307 BestSolutionAnalyzer.EquipmentNamesParameter.ActualName = EquipmentNamesParameter.Name;308 BestSolutionAnalyzer.LocationNamesParameter.ActualName = LocationNamesParameter.Name;309 }310 if (SolutionArchiveAnalyzer != null) {311 SolutionArchiveAnalyzer.MaximizationParameter.ActualName = MaximizationParameter.Name;312 SolutionArchiveAnalyzer.DistancesParameter.ActualName = DistancesParameter.Name;313 SolutionArchiveAnalyzer.WeightsParameter.ActualName = WeightsParameter.Name;314 SolutionArchiveAnalyzer.InstallationCostsParameter.ActualName = InstallationCostsParameter.Name;315 SolutionArchiveAnalyzer.DemandsParameter.ActualName = DemandsParameter.Name;316 SolutionArchiveAnalyzer.CapacitiesParameter.ActualName = CapacitiesParameter.Name;317 SolutionArchiveAnalyzer.TransportationCostsParameter.ActualName = TransportationCostsParameter.Name;318 SolutionArchiveAnalyzer.OverbookedCapacityPenaltyParameter.ActualName = OverbookedCapacityPenaltyParameter.Name;319 SolutionArchiveAnalyzer.AssignmentParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName;320 SolutionArchiveAnalyzer.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;321 SolutionArchiveAnalyzer.FlowDistanceQualityParameter.ActualName = Evaluator.FlowDistanceQualityParameter.ActualName;322 SolutionArchiveAnalyzer.InstallationQualityParameter.ActualName = Evaluator.InstallationQualityParameter.ActualName;323 SolutionArchiveAnalyzer.OverbookedCapacityParameter.ActualName = Evaluator.OverbookedCapacityParameter.ActualName;324 SolutionArchiveAnalyzer.ResultsParameter.ActualName = "Results";325 SolutionArchiveAnalyzer.BestKnownQualityParameter.ActualName = BestKnownQualityParameter.Name;326 SolutionArchiveAnalyzer.BestKnownSolutionParameter.ActualName = BestKnownSolutionParameter.Name;327 SolutionArchiveAnalyzer.EquipmentNamesParameter.ActualName = EquipmentNamesParameter.Name;328 SolutionArchiveAnalyzer.LocationNamesParameter.ActualName = LocationNamesParameter.Name;329 325 } 330 326 }
Note: See TracChangeset
for help on using the changeset viewer.