Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/13/17 15:22:59 (7 years ago)
Author:
abeham
Message:

#2762:

  • Implemented review comments
  • Fixed ResidualSpaceBestFitExtremePointPermutationDecoder by sorting from smallest to largest (merit function should be minimized)
  • Some restructuring of the methods
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/BinPackingExtension/HeuristicLab.Problems.BinPacking/3.3/BinPacking.cs

    r14976 r15229  
    9090
    9191    public abstract TPos FindExtremePointForItem(TItem item, bool rotated, bool stackingConstraints);
    92     public abstract TPos FindPositionBySliding(TItem item, bool rotated);
     92    public abstract TPos FindPositionBySliding(TItem item, bool rotated, bool stackingConstraints);
    9393
    94     public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items);
    95     public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items, Dictionary<int, bool> rotationArray);
     94    public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints);
     95    public abstract void SlidingBasedPacking(ref IList<int> sequence, IList<TItem> items, Dictionary<int, bool> rotationArray, bool stackingConstraints);
    9696    public abstract void ExtremePointBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints);
    97     public abstract bool ExtremePointBasedPacking(int ID, IList<TItem> items, bool stackingConstraints);
    9897    public abstract void ExtremePointBasedPacking(ref IList<int> sequence, IList<TItem> items, bool stackingConstraints, Dictionary<int, bool> rotationArray);
    9998
    100     public void PackItem(int itemID, TItem item, TPos position) {
     99    public virtual void PackItem(int itemID, TItem item, TPos position) {
    101100      Items[itemID] = item;
    102101      Positions[itemID] = position;
     
    107106     
    108107      AddNewItemToOccupationLayers(itemID, item, position);
     108    }
     109    public virtual bool PackItemIfFeasible(int itemID, TItem item, TPos position, bool stackingConstraints) {
     110      if (IsPositionFeasible(item, position, stackingConstraints)) {
     111        PackItem(itemID, item, position);
     112        return true;
     113      }
     114      return false;
    109115    }
    110116
     
    135141      return false;
    136142    }
    137     public bool IsPositionFeasible(TItem item, TPos position) {
     143    public virtual bool IsPositionFeasible(TItem item, TPos position, bool stackingConstraints) {
    138144      //In this case feasability is defined as following: 1. the item fits into the bin-borders; 2. the point is supported by something; 3. the item does not collide with another already packed item
    139145      if (!BinShape.Encloses(position, item))
     
    147153      return true;
    148154    }
     155   
    149156    public abstract int ShortestPossibleSideFromPoint(TPos position);
    150157    public abstract bool IsStaticStable(TItem measures, TPos position);
Note: See TracChangeset for help on using the changeset viewer.