Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/21/16 14:33:53 (8 years ago)
Author:
gkronber
Message:

#1966: implemented 3d bin packing problems (using permutation and integer vector encoding) based on the 2d implementations

Location:
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3
Files:
11 edited

Legend:

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

    r14151 r14153  
    4646    }
    4747
    48     protected override PackingPosition FindPositionForItem(BinPacking.BinPacking<PackingPosition, PackingShape, PackingItem> bp, PackingItem item) {
     48    protected override PackingPosition FindPositionForItem(BinPacking2D bp, PackingItem item) {
    4949      return bp.FindPositionBySliding(item, rotated: false);
    5050    }
    5151
    52     protected override BinPacking.BinPacking<PackingPosition, PackingShape, PackingItem> CreatePacking(
     52    protected override BinPacking2D CreatePacking(
    5353      Solution partialSolution,
    5454      ref IList<int> remainingIDs, IList<PackingItem> items) {
    55       var bp = partialSolution.NewBinPacking();
     55      var bp = new BinPacking2D(partialSolution.BinMeasures);
    5656      bp.SlidingBasedPacking(ref remainingIDs, items);
    5757      return bp;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/IntegerVectorEncoding/ExtremePointIntegerVectorDecoder.cs

    r14151 r14153  
    4646    }
    4747
    48     protected override PackingPosition FindPositionForItem(BinPacking.BinPacking<PackingPosition, PackingShape, PackingItem> bp, PackingItem item) {
     48    protected override PackingPosition FindPositionForItem(BinPacking2D bp, PackingItem item) {
    4949      return bp.FindExtremePointForItem(item, false, stackingConstraints: false);
    5050    }
    5151
    52     protected override BinPacking.BinPacking<PackingPosition, PackingShape, PackingItem> CreatePacking(
     52    protected override BinPacking2D CreatePacking(
    5353      Solution partialSolution,
    5454      ref IList<int> remainingIDs, IList<PackingItem> items) {
    55       var bp = partialSolution.NewBinPacking();
     55      var bp = new BinPacking2D(partialSolution.BinMeasures);
    5656      bp.ExtremePointBasedPacking(ref remainingIDs, items, stackingConstraints: false);
    5757      return bp;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/IntegerVectorEncoding/IntegerVectorDecoderBase.cs

    r14151 r14153  
    3939
    4040
    41     public Solution Decode(IntegerVector intVec, PackingShape binShape, IList<PackingItem> items) {
     41    public virtual Solution Decode(IntegerVector intVec, PackingShape binShape, IList<PackingItem> items) {
    4242      var sequenceMatrix = IntegerVectorProblem.GenerateSequenceMatrix(intVec);
    4343      Solution result = CreateSolution(binShape);
     
    5454      var temp = new List<int>(remainingIDs);
    5555      foreach (int id in temp) {
    56         foreach (var bp in result.BinPackings) {
     56        foreach (BinPacking2D bp in result.BinPackings) {
    5757          var position = FindPositionForItem(bp, items[id]);
    5858          if (position != null) {
     
    7070      result.UpdateBinPackings();
    7171
    72       // gkronber: original implementation also updates the encoded solution
     72      // gkronber: original implementation by Helm also updates the encoded solution (TODO)
    7373      // var newSolution = new int[intVec.Length];
    7474      // int binIndex = 0;
     
    8484
    8585    protected abstract Solution CreateSolution(PackingShape binShape);
    86     protected abstract PackingPosition FindPositionForItem(BinPacking.BinPacking<PackingPosition, PackingShape, PackingItem> bp, PackingItem item);
    87     protected abstract BinPacking.BinPacking<PackingPosition, PackingShape, PackingItem> CreatePacking(Solution partialSolution, ref IList<int> remainingIDs, IList<PackingItem> items);
     86    protected abstract PackingPosition FindPositionForItem(BinPacking2D bp, PackingItem item);
     87    protected abstract BinPacking2D CreatePacking(Solution partialSolution, ref IList<int> remainingIDs, IList<PackingItem> items);
    8888  }
    8989}
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/IntegerVectorEncoding/IntegerVectorProblem.cs

    r14151 r14153  
    6666    private void AddOperators() {
    6767
    68       // move operators are not yet supported
     68      // move operators are not yet supported (TODO)
    6969      Operators.RemoveAll(x => x is SingleObjectiveMoveGenerator);
    7070      Operators.RemoveAll(x => x is SingleObjectiveMoveMaker);
    7171      Operators.RemoveAll(x => x is SingleObjectiveMoveEvaluator);
    7272
    73       Encoding.ConfigureOperators(Operators.OfType<IOperator>());
     73      Encoding.ConfigureOperators(Operators.OfType<IOperator>()); // gkronber: not strictly necessary (only when customer ops are added)
    7474    }
    7575
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Interfaces/IDecoder.cs

    r14149 r14153  
    2020#endregion
    2121
    22 using System.Collections;
    2322using System.Collections.Generic;
    2423using HeuristicLab.Core;
    25 using HeuristicLab.Encodings.PermutationEncoding;
    26 using HeuristicLab.Problems.BinPacking;
    2724
    2825namespace HeuristicLab.Problems.BinPacking2D {
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/MoveEvaluatorBase.cs

    r14149 r14153  
    2323using HeuristicLab.Core;
    2424using HeuristicLab.Data;
    25 using HeuristicLab.Encodings.PermutationEncoding;
    2625using HeuristicLab.Operators;
    2726using HeuristicLab.Optimization;
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PermutationEncoding/BottomLeftPermutationDecoder.cs

    r14149 r14153  
    4545      IList<int> remainingIDs = new List<int>(permutation);
    4646      while (remainingIDs.Count > 0) {
    47         var bp = result.NewBinPacking();
     47        var bp = new BinPacking2D(binShape);
    4848        bp.SlidingBasedPacking(ref remainingIDs, items);
    4949        result.BinPackings.Add(bp);
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PermutationEncoding/ExtremePointPermutationDecoder.cs

    r14149 r14153  
    4545      IList<int> remainingIDs = new List<int>(permutation);
    4646      while (remainingIDs.Count > 0) {
    47         var bp = result.NewBinPacking();
     47        var bp = new BinPacking2D(binShape);
    4848        bp.ExtremePointBasedPacking(ref remainingIDs, items, stackingConstraints: false);
    4949        result.BinPackings.Add(bp);
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/PermutationEncoding/PermutationProblem.cs

    r14151 r14153  
    7171
    7272      Encoding.ConfigureOperators(Operators.OfType<IOperator>());
     73
     74      // TODO: configure the move evaluators (add interface for my move evaluators)
    7375    }
    7476
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/ProblemBase.cs

    r14149 r14153  
    3737    where TEnc : class, IEncoding
    3838    where TSol : class, IItem {
    39     private readonly string SolutionEvaluatorParameterName = "SolutionEvaluator";
     39    protected readonly string SolutionEvaluatorParameterName = "SolutionEvaluator";
    4040    public readonly string EncodedSolutionName = "EncodedSolution";
    4141    #region Default Instance
    42     private static readonly BPPData DefaultInstance = new BPPData() {
     42    private readonly BPPData defaultInstance = new BPPData() {
    4343      Name = "2D BPP Default Instance",
    4444      Description = "The default instance for 2D Bin Packing.",
     
    155155      Parameters.Add(new FixedValueParameter<IntValue>("LowerBound", "A lower bound for the number of bins that is necessary to pack all items"));
    156156
    157       Load(DefaultInstance);
     157      Load(defaultInstance);
    158158    }
    159159
  • branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking.2D/3.3/Solution.cs

    r14151 r14153  
    3939      return new Solution(this, cloner);
    4040    }
    41     public override BinPacking<PackingPosition, PackingShape, PackingItem> NewBinPacking() {
    42       return new BinPacking2D(BinMeasures);
    43     }
    4441  }
    4542}
Note: See TracChangeset for help on using the changeset viewer.