Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/21/16 15:08:21 (8 years ago)
Author:
gkronber
Message:

#1966: refactoring

Location:
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/BinPacking2D.cs

    r14151 r14154  
    3232  public class BinPacking2D : BinPacking.BinPacking<PackingPosition, PackingShape, PackingItem> {
    3333
    34     public BinPacking2D(PackingShape binMeasures)
    35       : base(binMeasures) {
     34    public BinPacking2D(PackingShape binShape)
     35      : base(binShape) {
    3636      ExtremePoints = new SortedSet<PackingPosition>(new EPComparer2D());
    37       ExtremePoints.Add(binMeasures.Origin);
    38     }
     37      ExtremePoints.Add(binShape.Origin);
     38      InitializeOccupationLayers();
     39    }
     40
    3941    [StorableConstructor]
    4042    protected BinPacking2D(bool deserializing) : base(deserializing) { }
    4143    protected BinPacking2D(BinPacking2D original, Cloner cloner)
    4244      : base(original, cloner) {
    43       this.ExtremePoints = new SortedSet<PackingPosition>(original.ExtremePoints, new EPComparer2D());
     45      this.ExtremePoints = new SortedSet<PackingPosition>(original.ExtremePoints.Select(p => cloner.Clone(p)), new EPComparer2D());
    4446    }
    4547    public override IDeepCloneable Clone(Cloner cloner) {
     
    5456      //Find ExtremePoints beginning from sourcepointX
    5557      var sourcePointX = new PackingPosition(0, position.X + newWidth, position.Y);
    56       if (sourcePointX.X < BinMeasures.Width && sourcePointX.Y < BinMeasures.Height) {
     58      if (sourcePointX.X < BinShape.Width && sourcePointX.Y < BinShape.Height) {
    5759        //Traversing down the y-axis       
    5860        var newPoint = new PackingPosition(0, sourcePointX.X, sourcePointX.Y - 1);
     
    6668      //Find ExtremePoints beginning from sourcepointY
    6769      var sourcePointY = new PackingPosition(0, position.X, position.Y + newHeight);
    68       if (sourcePointY.X < BinMeasures.Width && sourcePointY.Y < BinMeasures.Height) {
     70      if (sourcePointY.X < BinShape.Width && sourcePointY.Y < BinShape.Height) {
    6971        //Traversing down the x-axis 
    7072        var newPoint = new PackingPosition(0, sourcePointY.X - 1, sourcePointY.Y);
     
    9698    public override PackingPosition FindPositionBySliding(PackingItem item, bool rotated) {
    9799      PackingPosition currentPosition = new PackingPosition(0,
    98         BinMeasures.Width - (rotated ? item.Height : item.Width),
    99         BinMeasures.Height - (rotated ? item.Width : item.Height), rotated);
     100        BinShape.Width - (rotated ? item.Height : item.Width),
     101        BinShape.Height - (rotated ? item.Width : item.Height), rotated);
    100102      //Slide the item as far as possible to the left
    101103      while (IsPositionFeasible(item, PackingPosition.MoveLeft(currentPosition))
     
    159161    public override int ShortestPossibleSideFromPoint(PackingPosition position) {
    160162      int shortestSide = int.MaxValue;
    161       int width = BinMeasures.Width;
    162       int height = BinMeasures.Height;
     163      int width = BinShape.Width;
     164      int height = BinShape.Height;
    163165
    164166      if (position.X >= width || position.Y >= height)
     
    182184    }
    183185
    184 
    185186    protected override void InitializeOccupationLayers() {
    186       for (int i = 0; i * 10 <= BinMeasures.Width; i += 1) {
     187      for (int i = 0; i * 10 <= BinShape.Width; i += 1) {
    187188        OccupationLayers[i] = new List<int>();
    188189      }
    189190    }
    190     protected override void AddNewItemToOccupationLayers(int itemID, PackingItem measures, PackingPosition position) {
     191
     192    protected override void AddNewItemToOccupationLayers(int itemID, PackingItem item, PackingPosition position) {
    191193      int x1 = position.X / 10;
    192       int x2 = (position.X + (position.Rotated ? measures.Height : measures.Width)) / 10;
     194      int x2 = (position.X + (position.Rotated ? item.Height : item.Width)) / 10;
    193195
    194196      for (int i = x1; i <= x2; i++)
     
    198200      return OccupationLayers[position.X / 10];
    199201    }
    200     protected override List<int> GetLayerItemIDs(PackingItem measures, PackingPosition position) {
     202    protected override List<int> GetLayerItemIDs(PackingItem item, PackingPosition position) {
    201203      List<int> result = new List<int>();
    202204      int x1 = position.X / 10;
    203       int x2 = (position.X + (position.Rotated ? measures.Height : measures.Width)) / 10;
     205      int x2 = (position.X + (position.Rotated ? item.Height : item.Width)) / 10;
    204206
    205207      for (int i = x1; i <= x2; i++)
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Evaluators/BinUtilizationEvaluator.cs

    r14148 r14154  
    5353
    5454      for (int i = 0; i < nrOfBins; i++) {
    55         totalUsableSpace += solution.BinPackings[i].BinMeasures.Volume;
    56         totalUsedSpace += solution.BinPackings[i].ItemMeasures.Sum(kvp => kvp.Value.Volume);
     55        totalUsableSpace += solution.BinPackings[i].BinShape.Volume;
     56        totalUsedSpace += solution.BinPackings[i].Items.Sum(kvp => kvp.Value.Volume);
    5757      }
    5858
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Evaluators/PackingRatioEvaluator.cs

    r14151 r14154  
    6060      const double k = 2;
    6161      for (int i = 0; i < nrOfBins; i++) {
    62         double f = solution.BinPackings[i].ItemMeasures.Sum(kvp => kvp.Value.Volume);
    63         double c = solution.BinPackings[i].BinMeasures.Volume;
     62        double f = solution.BinPackings[i].Items.Sum(kvp => kvp.Value.Volume);
     63        double c = solution.BinPackings[i].BinShape.Volume;
    6464        result += Math.Pow(f / c, k);
    6565      }
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/HeuristicLab.Problems.BinPacking2D-3.3.csproj

    r14151 r14154  
    172172    <Compile Include="IntegerVectorEncoding\ExtremePointIntegerVectorDecoder.cs" />
    173173    <Compile Include="IntegerVectorEncoding\IntegerVectorProblem.cs" />
     174    <Compile Include="Interfaces\IOperator.cs" />
    174175    <Compile Include="Interfaces\IDecoder.cs" />
    175176    <Compile Include="Interfaces\IEvaluator.cs" />
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluatorBase.cs

    r14153 r14154  
    3131  [StorableClass]
    3232  public abstract class MoveEvaluatorBase<TSol, TMove> : SingleSuccessorOperator,
    33     ISingleObjectiveMoveEvaluator, ISingleObjectiveMoveOperator
     33    ISingleObjectiveMoveEvaluator, ISingleObjectiveMoveOperator, IOperator<TSol>
    3434    where TSol : class, IItem
    3535    where TMove : class, IItem {
     
    4343      get { return (ILookupParameter<DoubleValue>)Parameters["MoveQuality"]; }
    4444    }
    45     public ILookupParameter<ReadOnlyItemList<PackingItem>> PackingItemMeasuresParameter {
     45    public ILookupParameter<ReadOnlyItemList<PackingItem>> ItemsParameter {
    4646      get { return (LookupParameter<ReadOnlyItemList<PackingItem>>)Parameters["Items"]; }
    4747    }
    48     public ILookupParameter<PackingShape> PackingBinMeasuresParameter {
     48    public ILookupParameter<PackingShape> BinShapeParameter {
    4949      get { return (LookupParameter<PackingShape>)Parameters["BinShape"]; }
    5050    }
    51     public ILookupParameter<IDecoder<TSol>> PackingSolutionDecoderParameter {
     51    public ILookupParameter<IDecoder<TSol>> DecoderParameter {
    5252      get { return (ILookupParameter<IDecoder<TSol>>)Parameters["Decoder"]; }
    5353    }
    54     public ILookupParameter<IEvaluator> PackingPlanEvaluatorParameter {
     54    public ILookupParameter<IEvaluator> SolutionEvaluatorParameter {
    5555      get { return (ILookupParameter<IEvaluator>)Parameters["SolutionEvaluator"]; }
    5656    }
     
    7878      var move = MoveParameter.ActualValue;
    7979      var encSolCandidate = EncodedSolutionParameter.ActualValue;
    80       var binShape = PackingBinMeasuresParameter.ActualValue;
    81       var items = PackingItemMeasuresParameter.ActualValue;
     80      var binShape = BinShapeParameter.ActualValue;
     81      var items = ItemsParameter.ActualValue;
    8282
    8383
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PermutationEncoding/PermutationProblem.cs

    r14153 r14154  
    2323
    2424using System.Linq;
     25using System.Windows.Forms;
    2526using HeuristicLab.Common;
    2627using HeuristicLab.Core;
     
    7273      Encoding.ConfigureOperators(Operators.OfType<IOperator>());
    7374
    74       // TODO: configure the move evaluators (add interface for my move evaluators)
     75      foreach (var op in Operators.OfType<IOperator<Permutation>>()) {
     76        op.BinShapeParameter.ActualName = BinShapeParameter.Name;
     77        op.ItemsParameter.ActualName = ItemsParameter.Name;
     78        op.SolutionEvaluatorParameter.ActualName = SolutionEvaluatorParameter.Name;
     79        op.DecoderParameter.ActualName = DecoderParameter.Name;
     80      }
    7581    }
    7682
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PermutationEncoding/Swap2MoveEvaluator.cs

    r14149 r14154  
    5050      // uses full evaluation
    5151      Swap2Manipulator.Apply(permutation, move.Index1, move.Index2);
    52       var solution = PackingSolutionDecoderParameter.ActualValue.Decode(permutation, binShape, items);
     52      var solution = DecoderParameter.ActualValue.Decode(permutation, binShape, items);
    5353
    54       return PackingPlanEvaluatorParameter.ActualValue.Evaluate(solution);
     54      return SolutionEvaluatorParameter.ActualValue.Evaluate(solution);
    5555    }
    5656  }
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PermutationEncoding/TranslocationMoveEvaluator.cs

    r14149 r14154  
    5151      // uses full evaluation
    5252      TranslocationManipulator.Apply(permutation, move.Index1, move.Index2, move.Index3);
    53       var solution = PackingSolutionDecoderParameter.ActualValue.Decode(permutation, binShape, items);
     53      var solution = DecoderParameter.ActualValue.Decode(permutation, binShape, items);
    5454
    55       return PackingPlanEvaluatorParameter.ActualValue.Evaluate(solution);
     55      return SolutionEvaluatorParameter.ActualValue.Evaluate(solution);
    5656    }
    5757  }
Note: See TracChangeset for help on using the changeset viewer.