Free cookie consent management tool by TermsFeed Policy Generator

Changeset 9440


Ignore:
Timestamp:
05/04/13 17:51:14 (11 years ago)
Author:
jhelm
Message:

#1966: Implemented new encoding (MultiComponentVector/MCV); Implemented move-operators for MCV and GV encodings; Implemented new decoding-methods for PS, GV and MCV encodings (ExtremePoint-based packing);

Location:
branches/HeuristicLab.BinPacking
Files:
72 added
6 deleted
36 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlans/PackingPlan2DView.cs

    r9348 r9440  
    33using HeuristicLab.Core.Views;
    44using HeuristicLab.MainForm;
    5 using HeuristicLab.Problems.BinPacking.PackingPlans;
     5using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    66using HeuristicLab.Problems.BinPacking.Interfaces;
    77using HeuristicLab.Problems.BinPacking.PackingItem;
     
    1313namespace HeuristicLab.Problems.BinPacking.Views {
    1414  [View("2-dimensional packing plan View")]
    15   [Content(typeof(RegularSimpleRotationPackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>), true)]
     15  [Content(typeof(PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>), true)]
    1616  public partial class PackingPlan2DView : NamedItemView {
    1717
     
    2121
    2222
    23     public new RegularSimpleRotationPackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> Content {
    24       get { return (RegularSimpleRotationPackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>)base.Content; }
     23    public new PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> Content {
     24      get { return (PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem>)base.Content; }
    2525      set { base.Content = value; }
    2626    }
     
    4444    }
    4545
    46     private void Redraw(RegularSimpleRotationPackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> plan) {     
     46    private void Redraw(PackingPlan<TwoDimensionalPacking, RectangularPackingBin, RectangularPackingItem> plan) {     
    4747      int currentBin = (binSelection != null && binSelection.SelectedItem != null) ? (int)(binSelection.SelectedItem) : 0;
    4848      var bin = plan.PackingBinMeasures;
     
    5252        var position = plan.PackingItemPositions[i++];
    5353        if (position.AssignedBin == currentBin)
    54           packingPlan2D.AddItemToContainer(item.Width, item.Height, position.X, position.Y, i.ToString());
     54          packingPlan2D.AddItemToContainer(
     55            position.Rotated ? item.Height : item.Width,
     56            position.Rotated ? item.Width : item.Height,
     57            position.X, position.Y, i.ToString());
    5558      }
    5659    }
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/PackingPlans/PackingPlan3DView.cs

    r9348 r9440  
    33using HeuristicLab.Core.Views;
    44using HeuristicLab.MainForm;
    5 using HeuristicLab.Problems.BinPacking.PackingPlans;
     5using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    66using HeuristicLab.Problems.BinPacking.Interfaces;
    77using HeuristicLab.Problems.BinPacking.PackingItem;
     
    1313namespace HeuristicLab.Problems.BinPacking.Views {
    1414  [View("3-dimensional packing plan View")]
    15   [Content(typeof(RegularSimpleRotationPackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>), true)]
     15  [Content(typeof(PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>), true)]
    1616  public partial class PackingPlan3DView : NamedItemView {
    1717
     
    2222
    2323
    24     public new RegularSimpleRotationPackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> Content {
    25       get { return (RegularSimpleRotationPackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>)base.Content; }
     24    public new PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem> Content {
     25      get { return (PackingPlan<ThreeDimensionalPacking, CuboidPackingBin, CuboidPackingItem>)base.Content; }
    2626      set { base.Content = value; }
    2727    }
     
    5151        var position = Content.PackingItemPositions[i];
    5252        if (position.AssignedBin == currentBin)
    53           packingPlan3D.AddItemToContainer(item.Width, item.Height, item.Depth, position.X, position.Y, position.Z, i);
     53          packingPlan3D.AddItemToContainer(
     54            position.Rotated ? item.Depth : item.Width,
     55            item.Height,
     56            position.Rotated ? item.Width : item.Depth,
     57            position.X, position.Y, position.Z, i);
    5458        i++;
    5559      }
     
    7680          itemSelection.Items.Add(i);
    7781      }
    78       itemSelection.Items.Add("enum");
     82      //itemSelection.Items.Add("enum");
    7983
    8084      packingPlan3D.Invalidate();
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Plugin.cs

    r9348 r9440  
    2626  /// Plugin class for HeuristicLab.Problems.BinPacking.Views plugin.
    2727  /// </summary>
    28   [Plugin("HeuristicLab.Problems.BinPacking.Views", "3.3.7.0")]
     28  [Plugin("HeuristicLab.Problems.BinPacking.Views", "3.3.7.9348")]
    2929  [PluginFile("HeuristicLab.Problems.BinPacking.Views-3.3.dll", PluginFileType.Assembly)]
    3030  [PluginDependency("HeuristicLab.Common", "3.3")]
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Properties/AssemblyInfo.cs

    r9348 r9440  
    5454// by using the '*' as shown below:
    5555[assembly: AssemblyVersion("3.3.0.0")]
    56 [assembly: AssemblyFileVersion("3.3.7.0")]
     56[assembly: AssemblyFileVersion("3.3.7.9348")]
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Shapes/CuboidPackingItemView.cs

    r9348 r9440  
    33using HeuristicLab.Core.Views;
    44using HeuristicLab.MainForm;
    5 using HeuristicLab.Problems.BinPacking.PackingPlans;
     5using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    66using HeuristicLab.Problems.BinPacking.Interfaces;
    77using HeuristicLab.Problems.BinPacking.Shapes;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Shapes/CuboidPackingShapeView.cs

    r9348 r9440  
    33using HeuristicLab.Core.Views;
    44using HeuristicLab.MainForm;
    5 using HeuristicLab.Problems.BinPacking.PackingPlans;
     5using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    66using HeuristicLab.Problems.BinPacking.Interfaces;
    77using HeuristicLab.Problems.BinPacking.Shapes;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Shapes/RectangularPackingItemView.cs

    r9348 r9440  
    33using HeuristicLab.Core.Views;
    44using HeuristicLab.MainForm;
    5 using HeuristicLab.Problems.BinPacking.PackingPlans;
     5using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    66using HeuristicLab.Problems.BinPacking.Interfaces;
    77using HeuristicLab.Problems.BinPacking.PackingItem;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.Views/3.3/Shapes/RectangularPackingShapeView.cs

    r9348 r9440  
    33using HeuristicLab.Core.Views;
    44using HeuristicLab.MainForm;
    5 using HeuristicLab.Problems.BinPacking.PackingPlans;
     5using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    66using HeuristicLab.Problems.BinPacking.Interfaces;
    77using HeuristicLab.Problems.BinPacking.Shapes;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BestBinPackingSolutionAnalyzer.cs

    r9348 r9440  
    3232using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3333using HeuristicLab.Problems.BinPacking.Interfaces;
    34 using HeuristicLab.Problems.BinPacking.PackingPlans;
     34using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3535using HeuristicLab.Problems.BinPacking.Shapes;
    3636
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Analyzers/BinPackingAnalyzer.cs

    r9348 r9440  
    3232using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    3333using HeuristicLab.Problems.BinPacking.Interfaces;
    34 using HeuristicLab.Problems.BinPacking.PackingPlans;
     34using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3535using HeuristicLab.Problems.BinPacking.Shapes;
    3636
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Decoders/IdenticalBinPackingSolutionDecoder.cs

    r9348 r9440  
    3131using HeuristicLab.Parameters;
    3232using HeuristicLab.Problems.BinPacking.Shapes;
    33 using HeuristicLab.Problems.BinPacking.PackingPlans;
     33using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3434using HeuristicLab.Data;
    3535using HeuristicLab.Collections;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/PackingDimensions.cs

    r9348 r9440  
    3737    /// </summary>
    3838    public Int32 AssignedBin { get; set; }
     39    /// <summary>
     40    /// Determins if the positioned item is to be rotate by 90 degrees or not.
     41    /// </summary>
     42    public Boolean Rotated { get; set; }
    3943
    4044    [StorableConstructor]
     
    4347      : base(original, cloner) {
    4448        AssignedBin = original.AssignedBin;
     49        Rotated = original.Rotated;
    4550    }
    4651
    47     public PackingDimensions(Int32 assignedBin) {
     52    public PackingDimensions(Int32 assignedBin, Boolean rotated) {
    4853      this.AssignedBin = assignedBin;
     54      this.Rotated = rotated;
    4955    }
    5056
     
    5258      StringBuilder sb = new StringBuilder();
    5359      sb.Append("[");
    54       sb.Append("AssignedBin: ");
    55       sb.Append(AssignedBin);
     60      sb.Append(AssignedBin + "-");
     61      sb.Append(Rotated);
    5662      sb.Append("]");
    5763      return sb.ToString();
    5864    }
     65
     66    public override bool Equals(object obj) {
     67      var pd = obj as PackingDimensions;
     68      if (pd != null)
     69        return (pd.AssignedBin == this.AssignedBin && pd.Rotated == this.Rotated);
     70      else return false;
     71    }
     72
     73    public override int GetHashCode() {
     74      return 31 * AssignedBin * (Rotated ? 3 : 7);
     75    }
    5976  }
    6077}
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/ThreeDimensionalPacking.cs

    r9348 r9440  
    4949    }
    5050
    51     public ThreeDimensionalPacking(int assignedBin, int x, int y, int z) : base(assignedBin) {
     51    public ThreeDimensionalPacking(int assignedBin, int x, int y, int z) : this(assignedBin, x, y, z, false) {}
     52    public ThreeDimensionalPacking(int assignedBin, int x, int y, int z, bool rotated)
     53      : base(assignedBin, rotated) {
    5254      this.X = x;
    5355      this.Y = y;
     
    6769      return sb.ToString();
    6870    }
     71
     72
     73    public override bool Equals(object obj) {
     74      var tdp = obj as ThreeDimensionalPacking;
     75      if (tdp != null)
     76        return (tdp.X == this.X && tdp.Y == this.Y && tdp.Z == this.Z);
     77      else return false;
     78    }
     79
     80    public override int GetHashCode() {
     81      return base.GetHashCode() + 13 * X + 17 * Y + 23 * Z;
     82    }
    6983  }
    7084}
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Dimensions/TwoDimensionalPacking.cs

    r9348 r9440  
    4545    public override IDeepCloneable Clone(Cloner cloner) {
    4646      return new TwoDimensionalPacking(this, cloner);
    47     }   
     47    }
    4848
    49     public TwoDimensionalPacking(int assignedBin, int x, int y) : base(assignedBin) {
     49    public TwoDimensionalPacking(int assignedBin, int x, int y) : this(assignedBin, x, y, false) { }
     50    public TwoDimensionalPacking(int assignedBin, int x, int y, bool rotated)
     51      : base(assignedBin, rotated) {
    5052      this.X = x;
    5153      this.Y = y;
     
    6365      return sb.ToString();
    6466    }
     67
     68
     69    public override bool Equals(object obj) {
     70      var tdp = obj as TwoDimensionalPacking;
     71      if (tdp != null)
     72        return (tdp.X == this.X && tdp.Y == this.Y);
     73      else return false;
     74    }
     75
     76    public override int GetHashCode() {
     77      return base.GetHashCode() + 13 * X + 17 * Y;
     78    }
    6579  }
    6680}
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Encodings/GroupingVector/GroupingVectorRandomCreator.cs

    r9348 r9440  
    6464    public static GroupingVectorEncoding Apply(int items, int lowerBound, IRandom random) {
    6565      var solution = new GroupingVectorEncoding();
    66       solution.GroupingVector = new IntegerVector(items, random, 0, lowerBound);
     66      solution.GroupingVector = new IntegerVector(items, random, 0, lowerBound + 1);
    6767      return solution;
    6868    }
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/2D/BinUtilizationRectangularIdenticalBinEvaluator.cs

    r9348 r9440  
    3030using HeuristicLab.Data;
    3131using HeuristicLab.Common;
    32 using HeuristicLab.Problems.BinPacking.PackingPlans;
     32using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3333using HeuristicLab.Problems.BinPacking.Dimensions;
    3434using HeuristicLab.Problems.BinPacking.PackingBin;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/2D/PackingRatioRectangularIdenticalBinEvaluator.cs

    r9348 r9440  
    3030using HeuristicLab.Data;
    3131using HeuristicLab.Common;
    32 using HeuristicLab.Problems.BinPacking.PackingPlans;
     32using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3333using HeuristicLab.Problems.BinPacking.PackingItem;
    3434using HeuristicLab.Problems.BinPacking.PackingBin;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/3D/BinUtilizationCuboiddenticalBinEvaluator.cs

    r9348 r9440  
    3030using HeuristicLab.Data;
    3131using HeuristicLab.Common;
    32 using HeuristicLab.Problems.BinPacking.PackingPlans;
     32using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3333using HeuristicLab.Problems.BinPacking.Dimensions;
    3434using HeuristicLab.Problems.BinPacking.PackingBin;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/3D/PackingRatioCuboidIdenticalBinEvaluator.cs

    r9348 r9440  
    3030using HeuristicLab.Data;
    3131using HeuristicLab.Common;
    32 using HeuristicLab.Problems.BinPacking.PackingPlans;
     32using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3333using HeuristicLab.Problems.BinPacking.Dimensions;
    3434using HeuristicLab.Problems.BinPacking.PackingBin;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/BinUtilizationRegularIdenticalBinEvaluator.cs

    r9348 r9440  
    3030using HeuristicLab.Data;
    3131using HeuristicLab.Common;
    32 using HeuristicLab.Problems.BinPacking.PackingPlans;
     32using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3333
    3434namespace HeuristicLab.Problems.BinPacking.Evaluators {
     
    5353      B binMeasure = PackingBinMeasuresParameter.ActualValue;
    5454      ItemList<I> itemMeasures = PackingItemMeasuresParameter.ActualValue;
    55       int nrOfBins = plan.NrOfBins;
    5655
    5756
     
    6766
    6867      //if (itemPositionsAreValid)
    69       return CalculatePackingRatio(plan as PackingPlan<D, B, I>, binMeasure, itemMeasures, nrOfBins);
     68      return CalculateBinUtilization(plan as PackingPlan<D, B, I>, binMeasure, itemMeasures);
    7069
    7170      //return quality;
    7271    }
    7372
    74     private DoubleValue CalculatePackingRatio(PackingPlan<D, B, I> plan, B binMeasure, ItemList<I> itemMeasures, int nrOfBins) {
     73    public static DoubleValue CalculateBinUtilization(PackingPlan<D, B, I> plan, B binMeasure, ItemList<I> itemMeasures) {
     74      int nrOfBins = plan.NrOfBins;
    7575      double result = 0;
    7676
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/PackingPlanEvaluationAlgorithm.cs

    r9348 r9440  
    1212using HeuristicLab.Parameters;
    1313using HeuristicLab.Problems.BinPacking.Shapes;
    14 using HeuristicLab.Problems.BinPacking.PackingPlans;
     14using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    1515
    1616namespace HeuristicLab.Problems.BinPacking.Evaluators {
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/PackingPlanEvaluator.cs

    r9348 r9440  
    3131using HeuristicLab.Parameters;
    3232using HeuristicLab.Data;
    33 using HeuristicLab.Problems.BinPacking.PackingPlans;
     33using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3434using HeuristicLab.Problems.BinPacking.Shapes;
    3535
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/PackingRatioRegularIdenticalBinEvaluator.cs

    r9348 r9440  
    3030using HeuristicLab.Data;
    3131using HeuristicLab.Common;
    32 using HeuristicLab.Problems.BinPacking.PackingPlans;
     32using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3333
    3434namespace HeuristicLab.Problems.BinPacking.Evaluators {
     
    5353      B binMeasure = PackingBinMeasuresParameter.ActualValue;
    5454      ItemList<I> itemMeasures = PackingItemMeasuresParameter.ActualValue;
    55       int nrOfBins = plan.NrOfBins;
    5655
    5756
     
    6766
    6867      //if (itemPositionsAreValid)
    69       return CalculatePackingRatio(plan as PackingPlan<D, B, I>, binMeasure, itemMeasures, nrOfBins);
     68      return CalculatePackingRatio(plan as PackingPlan<D, B, I>, binMeasure, itemMeasures);
    7069
    7170      //return quality;
     
    8180        k.......a constant, k>1.
    8281     */
    83     private DoubleValue CalculatePackingRatio(PackingPlan<D, B, I> plan, B binMeasure, ItemList<I> itemMeasures, int nrOfBins) {
     82    public static DoubleValue CalculatePackingRatio(PackingPlan<D, B, I> plan, B binMeasure, ItemList<I> itemMeasures) {
     83      int nrOfBins = plan.NrOfBins;
    8484      double result = 0;
    8585
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/Abstract/RegularSimpleRotationIdenticalBinPackingPlanEvaluator.cs

    r9348 r9440  
    3131using HeuristicLab.Parameters;
    3232using HeuristicLab.Data;
    33 using HeuristicLab.Problems.BinPacking.PackingPlans;
     33using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3434using HeuristicLab.Problems.BinPacking.Shapes;
    3535using HeuristicLab.Collections;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/HeuristicLab.Problems.BinPacking-3.3.csproj

    r9348 r9440  
    127127      <Private>False</Private>
    128128    </Reference>
     129    <Reference Include="HeuristicLab.Optimization.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
     130      <SpecificVersion>False</SpecificVersion>
     131      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization.Operators-3.3.dll</HintPath>
     132    </Reference>
    129133    <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
    130134      <Private>False</Private>
     
    161165    <Compile Include="Analyzers\BestBinPackingSolutionAnalyzer.cs" />
    162166    <Compile Include="Analyzers\BinPackingAnalyzer.cs" />
    163     <Compile Include="Decoders\PackingHeuristics.cs" />
    164     <Compile Include="Decoders\ThreeDimensionalBottomLeftGroupingVectorDecoder.cs" />
    165     <Compile Include="Decoders\TwoDimensionalBottomLeftGroupingVectorDecoder.cs" />
    166     <Compile Include="Decoders\IB2DLowestGapFillGroupingVectorDecoder.cs" />
    167     <Compile Include="Decoders\ThreeDimensionalBottomLeftPackingSequenceDecoder.cs" />
    168     <Compile Include="Decoders\TwoDimensionalBottomLeftPackingSequenceDecoder.cs" />
     167    <Compile Include="Decoders\2D\BL\BottomLeftMultiComponentVectorDecoder.cs" />
     168    <Compile Include="Decoders\2D\BL\BottomLeftFunctions.cs" />
     169    <Compile Include="Decoders\2D\EP\ExtremePointGroupingVectorDecoder2D.cs" />
     170    <Compile Include="Decoders\2D\EP\ExtremePointMultiComponentVectorDecoder2D.cs" />
     171    <Compile Include="Decoders\2D\EP\ExtremePointPackingSequenceDecoder2D.cs" />
     172    <Compile Include="Decoders\2D\EP\ExtremePointsFunctions2D.cs" />
     173    <Compile Include="Decoders\3D\EP\ExtremePointMultiComponentVectorDecoder3D.cs" />
     174    <Compile Include="Decoders\3D\EP\ExtremePointGroupingVectorDecoder3D.cs" />
     175    <Compile Include="Decoders\3D\EP\ExtremePointPackingSequenceDecoder3D.cs" />
     176    <Compile Include="Decoders\3D\DBL\DeepestBottomLeftMultiComponentVectorDecoder.cs" />
     177    <Compile Include="Decoders\3D\DBL\DeepestBottomLeftFunctions.cs" />
     178    <Compile Include="Decoders\3D\EP\ExtremePointsFunctions3D.cs" />
     179    <Compile Include="Decoders\3D\DBL\DeepestBottomLeftGroupingVectorDecoder.cs" />
     180    <Compile Include="Decoders\2D\BL\BottomLeftGroupingVectorDecoder.cs" />
     181    <Compile Include="Decoders\3D\DBL\DeepestBottomLeftPackingSequenceDecoder.cs" />
     182    <Compile Include="Decoders\2D\BL\BottomLeftPackingSequenceDecoder.cs" />
    169183    <Compile Include="Decoders\IdenticalBinPackingSolutionDecoder.cs" />
     184    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\SingleGroupingMoveSoftTabuCriterion.cs" />
     185    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\ExhaustiveTargetBinSingleGroupingMoveGenerator.cs" />
     186    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\ExhaustiveSingleGroupingMoveGenerator.cs" />
     187    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\SingleGroupingMove.cs" />
     188    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\SingleGroupingMoveAttribute.cs" />
     189    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\SingleGroupingMoveGenerator.cs" />
     190    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\SingleGroupingMoveMaker.cs" />
     191    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\SingleGroupingTabuMaker.cs" />
     192    <Compile Include="Encodings\GroupingVector\Moves\SingleGrouping\SingleGroupingMoveHardTabuCriterion.cs" />
    170193    <Compile Include="Encodings\GroupingVector\UniformGroupingVectorManipulator.cs" />
    171194    <Compile Include="Encodings\GroupingVector\GroupingVectorCrossover.cs" />
     
    173196    <Compile Include="Encodings\GroupingVector\GroupingVectorManipulator.cs" />
    174197    <Compile Include="Encodings\GroupingVector\GroupingVectorRandomCreator.cs" />
     198    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Attributes\SwapSequenceMoveAttribute.cs" />
     199    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Attributes\SingleGroupingMoveAttribute.cs" />
     200    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Attributes\MultiComponentVectorMoveAttribute.cs" />
     201    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Attributes\SingleItemRotationMoveAttribute.cs" />
     202    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\MultiComponentVectorMoveHardTabuCriterion.cs" />
     203    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Moves\MultiComponentVectorMove.cs" />
     204    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Moves\SwapSequenceMove.cs" />
     205    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Moves\SingleItemRotationMove.cs" />
     206    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\ExhaustiveMultiComponentVectorMoveGenerator.cs" />
     207    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\Moves\SingleGroupingMove.cs" />
     208    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\MultiComponentVectorMoveGenerator.cs" />
     209    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\MultiComponentVectorMoveSoftTabuCriterion.cs" />
     210    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\MultiComponentVectorMoveMaker.cs" />
     211    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\MultiComponentVectorTabuMaker.cs" />
     212    <Compile Include="Encodings\MultiComponentVector\Moves\ThreeWay\StochasticMultiComponentVectorMoveGenerator.cs" />
     213    <Compile Include="Encodings\MultiComponentVector\PartiallyMatchedMultiComponentVectorCrossover.cs" />
     214    <Compile Include="Encodings\MultiComponentVector\MultiComponentVectorCrossover.cs" />
     215    <Compile Include="Encodings\MultiComponentVector\MultiComponentVectorEncoding.cs" />
     216    <Compile Include="Encodings\MultiComponentVector\MultiComponentVectorManipulator.cs" />
     217    <Compile Include="Encodings\MultiComponentVector\MultiComponentVectorRandomCreator.cs" />
     218    <Compile Include="Encodings\MultiComponentVector\ThreeWayMultiComponentVectorManipulator.cs" />
     219    <Compile Include="Encodings\PackingPlans\PackingPlan.cs" />
    175220    <Compile Include="Encodings\PackingSequence\PackingSequenceCrossover.cs" />
    176221    <Compile Include="Encodings\PackingSequence\PackingSequenceManipulator.cs" />
     
    180225    <Compile Include="Encodings\PackingSolutionCrossover.cs" />
    181226    <Compile Include="Encodings\PackingSolutionManipulator.cs" />
    182     <Compile Include="Encodings\Potvin\PotvinEncodingWrapper.cs">
    183       <SubType>Code</SubType>
    184     </Compile>
    185227    <Compile Include="Evaluators\2D\BinUtilizationRectangularIdenticalBinEvaluator.cs" />
    186228    <Compile Include="Evaluators\2D\PackingRatioRectangularIdenticalBinEvaluator.cs" />
     
    198240    <Compile Include="Instances\BPPORLIBParser.cs" />
    199241    <Compile Include="Instances\BPPORLIBDataDescriptor.cs" />
     242    <Compile Include="Interfaces\IMultiComponentVectorMoveOperator.cs" />
     243    <Compile Include="Interfaces\IGroupingVectorMoveOperator.cs" />
     244    <Compile Include="Interfaces\IMultiComponentVectorOperator.cs" />
    200245    <Compile Include="Interfaces\IGroupingVectorOperator.cs" />
     246    <Compile Include="Interfaces\IPackingMoveEvaluator.cs" />
    201247    <Compile Include="Interfaces\IPackingOperator.cs" />
    202248    <Compile Include="Interfaces\IPackingSolutionManipulator.cs" />
     
    210256    <Compile Include="Interfaces\IPackingShape.cs" />
    211257    <Compile Include="Interfaces\IPackingDimensions.cs" />
     258    <Compile Include="MoveEvaluators\MultiComponentVectorMoveEvaluator.cs" />
     259    <Compile Include="MoveEvaluators\PackingMoveEvaluator.cs" />
     260    <Compile Include="MoveEvaluators\GroupingVectorMoveEvaluator.cs" />
    212261    <Compile Include="Problem\BinPackingProblem.cs" />
    213262    <Compile Include="Problem\CuboidIdenticalBinPackingProblem.cs" />
     
    228277    <Compile Include="Interfaces\IPackingPlan.cs" />
    229278    <Compile Include="PackingItem\RectangularPackingItem.cs" />
    230     <Compile Include="PackingPlans\PackingPlan.cs" />
    231     <Compile Include="PackingPlans\RegularSimpleRotationPackingPlan.cs" />
    232279    <Compile Include="Plugin.cs" />
    233280    <Compile Include="Properties\AssemblyInfo.cs" />
    234281  </ItemGroup>
    235282  <ItemGroup>
    236     <None Include="ClassDiagram1.cd" />
    237283    <None Include="HeuristicLab.snk" />
    238284    <None Include="Instances\Data\BPPORLIB.rar" />
     
    240286    <None Include="Plugin.cs.frame" />
    241287  </ItemGroup>
    242   <ItemGroup>
    243     <Folder Include="Encodings\DirectedBinaryTree\" />
    244   </ItemGroup>
     288  <ItemGroup />
    245289  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    246290  <PropertyGroup>
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IGroupingVectorOperator.cs

    r9348 r9440  
    2525using System.Text;
    2626using HeuristicLab.Core;
    27 using HeuristicLab.Problems.BinPacking.PackingPlans;
     27using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    2828using HeuristicLab.Problems.BinPacking.Shapes;
    2929
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingOperator.cs

    r9348 r9440  
    2525using System.Text;
    2626using HeuristicLab.Core;
    27 using HeuristicLab.Problems.BinPacking.PackingPlans;
     27using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    2828using HeuristicLab.Problems.BinPacking.Shapes;
    2929
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingSequenceOperator.cs

    r9348 r9440  
    2525using System.Text;
    2626using HeuristicLab.Core;
    27 using HeuristicLab.Problems.BinPacking.PackingPlans;
     27using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    2828using HeuristicLab.Problems.BinPacking.Shapes;
    2929
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Interfaces/IPackingSolutionDecoder.cs

    r9348 r9440  
    2525using System.Text;
    2626using HeuristicLab.Core;
    27 using HeuristicLab.Problems.BinPacking.PackingPlans;
     27using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    2828using HeuristicLab.Problems.BinPacking.Shapes;
    2929
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Plugin.cs

    r9348 r9440  
    2626  /// Plugin class for HeuristicLab.Problems.BinPacking plugin.
    2727  /// </summary>
    28   [Plugin("HeuristicLab.Problems.BinPacking", "3.3.7.8737")]
     28  [Plugin("HeuristicLab.Problems.BinPacking", "3.3.7.9348")]
    2929  [PluginFile("HeuristicLab.Problems.BinPacking-3.3.dll", PluginFileType.Assembly)]
    3030  [PluginDependency("HeuristicLab.Common", "3.3")]
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/BinPackingProblem.cs

    r9348 r9440  
    3131using HeuristicLab.Common;
    3232using HeuristicLab.Parameters;
    33 using HeuristicLab.Problems.BinPacking.PackingPlans;
     33using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3434using HeuristicLab.Problems.BinPacking.Evaluators;
    3535using HeuristicLab.Problems.BinPacking.Analyzers;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/CuboidIdenticalBinPackingProblem.cs

    r9348 r9440  
    4343using HeuristicLab.Encodings.PackingEncoding.GroupingVector;
    4444using HeuristicLab.Problems.Instances;
     45using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector;
    4546
    4647namespace HeuristicLab.Problems.BinPacking.Problem {
     
    119120    protected override void InitializeDecoder() {
    120121      if (SolutionCreator is PackingSequenceRandomCreator) {
    121         PackingSolutionDecoder = new ThreeDimensionalBottomLeftPackingSequenceDecoder();
     122        PackingSolutionDecoder = new ExtremePointPackingSequenceDecoder3D();
    122123      } else if (SolutionCreator is GroupingVectorRandomCreator) {
    123         PackingSolutionDecoder = new ThreeDimensionalBottomLeftGroupingVectorDecoder();
     124        PackingSolutionDecoder = new ExtremePointGroupingVectorDecoder3D();
     125      } else if (SolutionCreator is MultiComponentVectorRandomCreator) {
     126        PackingSolutionDecoder = new ExtremePointMultiComponentVectorDecoder3D();
    124127      } else {
    125128        string error = "The given problem does not support the selected solution-creator.";
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/RectangularIdenticalBinPackingProblem.cs

    r9348 r9440  
    3939using HeuristicLab.Data;
    4040using HeuristicLab.Problems.BinPacking.Decoders;
    41 using HeuristicLab.Problems.BinPacking.PackingPlans;
     41using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    4242using HeuristicLab.Encodings.PackingEncoding.PackingSequence;
    4343using HeuristicLab.Encodings.PackingEncoding.GroupingVector;
    4444using HeuristicLab.Problems.Instances;
     45using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector;
    4546
    4647namespace HeuristicLab.Problems.BinPacking.Problem {
     
    114115    protected override void InitializeDecoder() {
    115116      if (SolutionCreator is PackingSequenceRandomCreator) {
    116         PackingSolutionDecoder = new TwoDimensionalBottomLeftPackingSequenceDecoder();
     117        PackingSolutionDecoder = new ExtremePointPackingSequenceDecoder2D();
    117118      } else if (SolutionCreator is GroupingVectorRandomCreator) {
    118         PackingSolutionDecoder = new TwoDimensionalBottomLeftGroupingVectorDecoder();
     119        PackingSolutionDecoder = new ExtremePointGroupingVectorDecoder2D();
     120      } else if (SolutionCreator is MultiComponentVectorRandomCreator) {
     121        PackingSolutionDecoder = new ExtremePointMultiComponentVectorDecoder2D();
    119122      } else {
    120123        string error = "The given problem does not support the selected solution-creator.";
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Problem/RegularIdenticalBinPackingProblem.cs

    r9348 r9440  
    3636using HeuristicLab.PluginInfrastructure;
    3737using HeuristicLab.Data;
    38 using HeuristicLab.Problems.BinPacking.PackingPlans;
     38using HeuristicLab.Encodings.PackingEncoding.PackingPlan;
    3939using HeuristicLab.Problems.BinPacking.Analyzers;
    4040using HeuristicLab.Encodings.PackingEncoding.PackingSequence;
     
    4242using HeuristicLab.Encodings.PackingEncoding.GroupingVector;
    4343using HeuristicLab.Problems.Instances;
     44using HeuristicLab.Encodings.PackingEncoding.MultiComponentVector;
    4445
    4546namespace HeuristicLab.Problems.BinPacking.Problem {
     
    7980    }
    8081
    81     protected RegularIdenticalBinPackingProblem(IPackingPlanEvaluationAlgorithm e) : this(e, new GroupingVectorRandomCreator()) { }
     82    protected RegularIdenticalBinPackingProblem(IPackingPlanEvaluationAlgorithm e) : this(e, new MultiComponentVectorRandomCreator()) { }
    8283    protected RegularIdenticalBinPackingProblem(IPackingPlanEvaluationAlgorithm e, IPackingSolutionCreator c)
    8384      : base(e, c) {
     
    134135        Operators.AddRange(ApplicationManager.Manager.GetInstances<IGroupingVectorOperator>());
    135136        InitializeDecoder();
     137      } else if (SolutionCreator.GetType() == typeof(MultiComponentVectorRandomCreator)) {
     138        Operators.AddRange(ApplicationManager.Manager.GetInstances<IMultiComponentVectorOperator>());
     139        InitializeDecoder();
    136140      }
    137141    }
     
    192196      if (PackingSolutionDecoder != null) PackingSolutionDecoder.PackingPlanParameter.ActualNameChanged += PackingSolutionDecoder_PackingPlanParameter_ActualNameChanged;
    193197    }
     198
    194199    #endregion
    195200
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/CuboidPackingShape.cs

    r9348 r9440  
    5353
    5454    #region Helpers
    55     public int MultipliedMeasures { get { return Height * Width * Depth; } }
     55    public int MultipliedMeasures { get { return Width * Height * Depth; } }
    5656   
    5757    public override bool Encloses(ThreeDimensionalPacking checkedPosition, PackingShape<ThreeDimensionalPacking> checkedShape) {
     
    162162        y1 = myPosition.Y;
    163163        z1 = myPosition.Z;
    164         x2 = myPosition.X + myShape.Width;
     164        x2 = myPosition.X + (myPosition.Rotated ? myShape.Depth : myShape.Width);
    165165        y2 = myPosition.Y + myShape.Height;
    166         z2 = myPosition.Z + myShape.Depth;
     166        z2 = myPosition.Z + (myPosition.Rotated ? myShape.Width : myShape.Depth);
    167167      }
    168168    }
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Shapes/RectangularPackingShape.cs

    r9348 r9440  
    142142        x1 = myPosition.X;
    143143        y1 = myPosition.Y;
    144         x2 = myPosition.X + myShape.Width;
    145         y2 = myPosition.Y + myShape.Height;
     144        x2 = myPosition.X + (myPosition.Rotated ? myShape.Height : myShape.Width);
     145        y2 = myPosition.Y + (myPosition.Rotated ? myShape.Width : myShape.Height);
    146146      }
    147147    }
Note: See TracChangeset for help on using the changeset viewer.