Changeset 14050 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluator.cs
- Timestamp:
- 07/12/16 20:35:19 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/Evaluators/PackingPlanEvaluator.cs
r14048 r14050 27 27 using HeuristicLab.Parameters; 28 28 using HeuristicLab.Data; 29 29 using HeuristicLab.Collections; 30 30 31 31 namespace HeuristicLab.Problems.BinPacking { 32 32 [Item("Packingplan Evaluator", "Represents a evaluator class for standard bin-packing problems.")] 33 33 [StorableClass] 34 public abstract class PackingPlanEvaluator<D,B,I> : SingleSuccessorOperator, IPackingPlanEvaluator34 public abstract class EvaluatorBase<D,B,I> : SingleSuccessorOperator, IEvaluator 35 35 where D : class, IPackingPosition 36 36 where B : PackingShape<D> … … 52 52 get { return (ILookupParameter<IPackingPlan>)Parameters["PackingPlan"]; } 53 53 } 54 public ILookupParameter<ItemList<I>> PackingItemMeasuresParameter { 55 get { return (ILookupParameter<ItemList<I>>)Parameters["PackingItemMeasures"]; } 56 } 57 public ILookupParameter<B> PackingBinMeasuresParameter { 58 get { return (ILookupParameter<B>)Parameters["PackingBinMeasures"]; } 59 } 54 60 #endregion 55 61 56 62 [StorableConstructor] 57 protected PackingPlanEvaluator(bool deserializing) : base(deserializing) { }58 protected PackingPlanEvaluator(PackingPlanEvaluator<D,B,I> original, Cloner cloner)63 protected EvaluatorBase(bool deserializing) : base(deserializing) { } 64 protected EvaluatorBase(EvaluatorBase<D,B,I> original, Cloner cloner) 59 65 : base(original, cloner) { 60 66 } 61 public PackingPlanEvaluator()67 public EvaluatorBase() 62 68 : base() { 63 Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality value aka fitness valueof the solution."));69 Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The quality value of the solution.")); 64 70 Parameters.Add(new LookupParameter<IPackingPlan>("PackingPlan", "The decoded bin-packing solution represented as generalized packing-plan.")); 65 71 Parameters.Add(new LookupParameter<IRandom>("Random", "The pseudo random number generator.")); 72 Parameters.Add(new LookupParameter<ItemList<I>>("PackingItemMeasures", "Packing-item data taken from the bin-packing problem-instance.")); 73 Parameters.Add(new LookupParameter<B>("PackingBinMeasures", "Packing-bin data taken from the bin-packing problem-instance.")); 74 66 75 } 67 68 76 69 77 protected abstract DoubleValue Evaluate(); … … 73 81 } 74 82 83 protected bool HasOverlappingOrNotContainedItems(ObservableDictionary<int, D> positions, B binMeasure, ItemList<I> itemMeasures, int nrOfBins) { 84 //TODO: Optimize performance by removing unnecessary allocations.. 85 for (int i = 0; i < itemMeasures.Count; i++) { 86 I packingItem = itemMeasures[i]; 87 D currentPosition = positions[i]; 88 if (!binMeasure.Encloses(currentPosition, packingItem)) 89 return true; 90 91 for (int j = 0; j < itemMeasures.Count; j++) { 92 D checkedPosition = positions[j]; 93 if (i != j && currentPosition.AssignedBin == checkedPosition.AssignedBin) { 94 I checkedItem = itemMeasures[j]; 95 if (packingItem.Overlaps(currentPosition, checkedPosition, checkedItem)) 96 return true; 97 } 98 } 99 } 100 return false; 101 } 75 102 } 76 103 }
Note: See TracChangeset
for help on using the changeset viewer.