Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/15/12 17:28:37 (13 years ago)
Author:
abeham
Message:

#1614

  • Removed incompatible problem linhp318.tsp (contains fixed edges)
  • Fixed AssemblyInfo for TSPLIB
  • Added unit tests
  • Worked on assignment / solution view
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  
    4141    IDemandsAwareGQAPOperator, ICapacitiesAwareGQAPOperator, ITransportationCostsAwareGQAPOperator,
    4242    IOverbookedCapacityPenaltyAwareGQAPOperator, IEquipmentNamesAwareGQAPOperator, ILocationNamesAwareGQAPOperator,
    43     IBestKnownQualityAwareGQAPOperator, IBestKnownSolutionAwareGQAPOperator, IBestKnownSolutionsAwareGQAPOperator,
    44     IAnalyzer {
     43    IBestKnownQualityAwareGQAPOperator, IBestKnownSolutionAwareGQAPOperator, IAnalyzer {
    4544
    4645    public bool EnabledByDefault {
     
    9796      get { return (ILookupParameter<DoubleValue>)Parameters["BestKnownQuality"]; }
    9897    }
    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"]; }
    104100    }
    105101    public ILookupParameter<GQAPAssignment> BestSolutionParameter {
     
    135131      Parameters.Add(new LookupParameter<StringArray>("LocationNames", GeneralizedQuadraticAssignmentProblem.LocationNamesDescription));
    136132      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));
    139134      Parameters.Add(new LookupParameter<GQAPAssignment>("BestSolution", "The best GQAP solution found so far."));
    140135      Parameters.Add(new ValueLookupParameter<ResultCollection>("Results", "The result collection where the best GQAP solution should be stored."));
     
    159154      var maximization = MaximizationParameter.ActualValue.Value;
    160155      var bestKnownQuality = BestKnownQualityParameter.ActualValue;
    161       var bestKnownSolutions = BestKnownSolutionsParameter.ActualValue;
    162156
    163157      int bestIndex;
     
    168162      if (bestKnownQuality == null || HasSolutionImproved(bestKnownQuality.Value, qualities[bestIndex].Value, maximization)) {
    169163        BestKnownQualityParameter.ActualValue = new DoubleValue(qualities[bestIndex].Value);
    170         BestKnownSolutionParameter.ActualValue = new GQAPSolution((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);
    171165      }
    172166
    173       GQAPAssignment assignment = BestSolutionParameter.ActualValue;
     167      var assignment = BestSolutionParameter.ActualValue;
    174168      if (assignment == null) {
    175169        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);
    176170        assignment.Distances = distances;
    177171        BestSolutionParameter.ActualValue = assignment;
    178         results.Add(new Result("Best GQAP Solution", assignment));
    179172      } 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();
    184179          assignment.EquipmentNames = equipmentNames;
    185180          assignment.LocationNames = locationNames;
     
    193188        }
    194189      }
    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));
    206192
    207193      return base.Apply();
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Analyzers/GQAPSolutionArchiveAnalyzer.cs

    r7444 r7470  
    4040    IDemandsAwareGQAPOperator, ICapacitiesAwareGQAPOperator, ITransportationCostsAwareGQAPOperator,
    4141    IOverbookedCapacityPenaltyAwareGQAPOperator, IEquipmentNamesAwareGQAPOperator, ILocationNamesAwareGQAPOperator,
    42     IAnalyzer {
     42    IBestKnownSolutionsAwareGQAPOperator, IAnalyzer {
    4343
    4444    public bool EnabledByDefault {
    45       get { return false; }
     45      get { return true; }
    4646    }
    4747
     
    9494      get { return (IValueLookupParameter<ResultCollection>)Parameters["Results"]; }
    9595    }
     96    public ILookupParameter<GQAPAssignmentArchive> BestKnownSolutionsParameter {
     97      get { return (ILookupParameter<GQAPAssignmentArchive>)Parameters["BestKnownSolutions"]; }
     98    }
    9699
    97100    [StorableConstructor]
     
    119122      Parameters.Add(new LookupParameter<StringArray>("LocationNames", GeneralizedQuadraticAssignmentProblem.LocationNamesDescription));
    120123      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));
    121125    }
    122126
     
    160164      archive.Solutions = GQAPSolutionArchiveUpdater.GetFeasibleParetoFront(solutions);
    161165
     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
    162177      return base.Apply();
    163178    }
Note: See TracChangeset for help on using the changeset viewer.