Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/27/12 13:24:36 (12 years ago)
Author:
abeham
Message:

#1614

  • reworked parameterization (one interface for every parameter resp. parameter group)
  • unified parameter descriptions
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/GeneralizedQuadraticAssignmentProblem.cs

    r7418 r7419  
    3737  [StorableClass]
    3838  public sealed class GeneralizedQuadraticAssignmentProblem : SingleObjectiveHeuristicOptimizationProblem<IGQAPEvaluator, IGQAPSolutionCreator>, IStorableContent {
     39
    3940    public override Image ItemImage {
    4041      get { return HeuristicLab.Common.Resources.VSImageLibrary.Type; }
     
    4243
    4344    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
    4459
    4560    #region Parameter Properties
     
    130145    public GeneralizedQuadraticAssignmentProblem()
    131146      : 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));
    142157
    143158      WeightsParameter.ReactOnValueToStringChangedAndValueItemImageChanged = false;
     
    223238
    224239    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>()) {
    237259        op.DemandsParameter.ActualName = DemandsParameter.Name;
    238260      }
    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>()) {
    240268        op.ParentsParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName;
    241269        op.ChildParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName;
    242270      }
    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>()) {
    246296        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>()) {
    255299        op.QualityParameter.ActualName = Evaluator.QualityParameter.ActualName;
    256300        op.FlowDistanceQualityParameter.ActualName = Evaluator.FlowDistanceQualityParameter.ActualName;
    257301        op.InstallationQualityParameter.ActualName = Evaluator.InstallationQualityParameter.ActualName;
    258302        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>()) {
    259313        op.TransportationCostsParameter.ActualName = TransportationCostsParameter.Name;
    260         op.OverbookedCapacityPenaltyParameter.ActualName = OverbookedCapacityPenaltyParameter.Name;
     314      }
     315      foreach (var op in operators.OfType<IWeightsAwareGQAPOperator>()) {
    261316        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>()) {
    283320        op.ParentsParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName;
    284321        op.ChildParameter.ActualName = SolutionCreator.AssignmentParameter.ActualName;
    285322      }
    286       foreach (var op in Operators.OfType<IIntegerVectorManipulator>()) {
     323      foreach (var op in operators.OfType<IIntegerVectorManipulator>()) {
    287324        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;
    329325      }
    330326    }
Note: See TracChangeset for help on using the changeset viewer.