Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/03/12 18:22:41 (12 years ago)
Author:
abeham
Message:

#1614

  • Added Transpose() extension method for double[,] matrices
  • Added IProblemInstanceConsumer<T> interface
  • Implemented general ProblemView which auto-detects all instances a problem can consume
  • Added ability of IProblemInstanceProvider to directly feed a consumer
  • Implemented general view for problem instance providers
  • Fixed a few bugs
File:
1 edited

Legend:

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

    r7445 r7448  
    3131using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3232using HeuristicLab.PluginInfrastructure;
     33using HeuristicLab.Problems.GeneralizedQuadraticAssignment.Common;
    3334using HeuristicLab.Problems.Instances;
    3435
     
    3738  [Creatable("Problems")]
    3839  [StorableClass]
    39   public sealed class GeneralizedQuadraticAssignmentProblem : SingleObjectiveHeuristicOptimizationProblem<IGQAPEvaluator, IGQAPSolutionCreator>, IStorableContent {
     40  public sealed class GeneralizedQuadraticAssignmentProblem : SingleObjectiveHeuristicOptimizationProblem<IGQAPEvaluator, IGQAPSolutionCreator>, IStorableContent, IProblemInstanceConsumer<IQAPInstance>, IProblemInstanceConsumer<ICTAPInstance> {
    4041
    4142    public override Image ItemImage {
     
    138139      set { BestKnownSolutionParameter.Value = value; }
    139140    }
     141    public GQAPAssignmentArchive BestKnownSolutions {
     142      get { return BestKnownSolutionsParameter.Value; }
     143      set { BestKnownSolutionsParameter.Value = value; }
     144    }
    140145    #endregion
    141146
     
    202207
    203208    public void LoadFrom(IQAPInstance instance) {
     209      Name = instance.Name;
     210      Description = instance.Description;
     211
    204212      Weights = new DoubleMatrix(instance.Weights);
    205213      Distances = new DoubleMatrix(instance.Distances);
     
    212220      if (instance.BestKnownAssignment != null) {
    213221        EvaluateAndLoadAssignment(instance.BestKnownAssignment);
     222      } else {
     223        BestKnownQuality = null;
     224        BestKnownSolution = null;
     225        BestKnownSolutions = null;
    214226      }
    215227    }
    216228
    217229    public void LoadFrom(ICTAPInstance instance) {
     230      Name = instance.Name;
     231      Description = instance.Description;
     232
    218233      Capacities = new DoubleArray(instance.MemoryCapacities);
    219234      Demands = new DoubleArray(instance.MemoryRequirements);
    220235      Weights = new DoubleMatrix(instance.CommunicationCosts);
    221       InstallationCosts = new DoubleMatrix(instance.ExecutionCosts);
     236      InstallationCosts = new DoubleMatrix(instance.ExecutionCosts.Transpose());
    222237      Distances = new DoubleMatrix(Capacities.Length, Capacities.Length); // all one, except diagonal
    223238      for (int i = 0; i < Capacities.Length - 1; i++)
     
    231246      if (instance.BestKnownAssignment != null) {
    232247        EvaluateAndLoadAssignment(instance.BestKnownAssignment);
     248      } else {
     249        BestKnownQuality = null;
     250        BestKnownSolution = null;
     251        BestKnownSolutions = null;
    233252      }
    234253    }
     
    242261      BestKnownSolution = new GQAPSolution(assignment, new DoubleValue(quality), new DoubleValue(flowDistanceQuality), new DoubleValue(installationQuality), new DoubleValue(overbookedCapacity));
    243262      BestKnownQuality = new DoubleValue(quality);
     263      BestKnownSolutions = new GQAPAssignmentArchive(EquipmentNames, LocationNames, Distances, Weights, InstallationCosts, Demands, Capacities, TransportationCosts, OverbookedCapacityPenalty);
     264      BestKnownSolutions.Solutions.Add((GQAPSolution)BestKnownSolution.Clone());
    244265    }
    245266
Note: See TracChangeset for help on using the changeset viewer.