Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/24/12 23:27:06 (12 years ago)
Author:
abeham
Message:

#1614

  • sorted operators
  • added crossover defined by Cordeau et al.
  • fixed a few bugs
File:
1 edited

Legend:

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

    r7480 r7523  
    3838  [Creatable("Problems")]
    3939  [StorableClass]
    40   public sealed class GeneralizedQuadraticAssignmentProblem : SingleObjectiveHeuristicOptimizationProblem<IGQAPEvaluator, IGQAPSolutionCreator>, IStorableContent, IProblemInstanceConsumer<IQAPInstance>, IProblemInstanceConsumer<ICTAPInstance>, IProblemInstanceConsumer<ITSPInstance>, IProblemInstanceConsumer<IATSPInstance> {
     40  public sealed class GeneralizedQuadraticAssignmentProblem : SingleObjectiveHeuristicOptimizationProblem<IGQAPEvaluator, IGQAPSolutionCreator>, IStorableContent,
     41    IProblemInstanceConsumer<IQAPInstance>,
     42    IProblemInstanceConsumer<ICTAPInstance>,
     43    IProblemInstanceConsumer<ITSPInstance>,
     44    IProblemInstanceConsumer<IATSPInstance>,
     45    IProblemInstanceConsumer<IGQAPInstance> {
    4146
    4247    public override Image ItemImage {
     
    208213    }
    209214
     215    #region Problem Instance Consumptions
    210216    public bool LoadFrom(IQAPInstance instance) {
    211217      try {
     
    330336    }
    331337
     338    public bool LoadFrom(IGQAPInstance instance) {
     339      try {
     340        Name = instance.Name;
     341        Description = instance.Description;
     342
     343        Capacities = new DoubleArray(instance.Capacities);
     344        Demands = new DoubleArray(instance.Demands);
     345        InstallationCosts = new DoubleMatrix(instance.InstallationCosts);
     346        Weights = new DoubleMatrix(instance.Weights);
     347        Distances = new DoubleMatrix(instance.Distances);
     348        TransportationCosts.Value = instance.TransportationCosts;
     349
     350        if (instance.BestKnownAssignment != null) {
     351          EvaluateAndLoadAssignment(instance.BestKnownAssignment);
     352        } else if (instance.BestKnownQuality.HasValue) {
     353          BestKnownQuality = new DoubleValue(instance.BestKnownQuality.Value);
     354          BestKnownSolution = null;
     355          BestKnownSolutions = null;
     356        } else {
     357          BestKnownQuality = null;
     358          BestKnownSolution = null;
     359          BestKnownSolutions = null;
     360        }
     361      } catch {
     362        return false;
     363      }
     364      return true;
     365    }
     366    #endregion
     367
    332368    private void EvaluateAndLoadAssignment(int[] vector) {
    333369      EvaluateAndLoadAssignment(new IntegerVector(vector));
    334370    }
    335371    private void EvaluateAndLoadAssignment(IntegerVector assignment) {
    336       if (!IsConfigurationValid()) return;
     372      if (!IsConfigurationValid()) {
     373        BestKnownQuality = null;
     374        BestKnownSolution = null;
     375        BestKnownSolutions = null;
     376      }
    337377      double flowDistanceQuality, installationQuality, overbookedCapacity;
    338378      GQAPEvaluator.Evaluate(assignment, Weights, Distances, InstallationCosts, Demands, Capacities,
Note: See TracChangeset for help on using the changeset viewer.