Changeset 14128 for branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingMoveEvaluator.cs
- Timestamp:
- 07/20/16 14:02:36 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.BinPacking/HeuristicLab.Problems.BinPacking/3.3/PackingMoveEvaluator.cs
r14050 r14128 24 24 using HeuristicLab.Data; 25 25 using HeuristicLab.Encodings.PackingEncoding; 26 using HeuristicLab.Encodings.PermutationEncoding; 26 27 using HeuristicLab.Operators; 27 28 using HeuristicLab.Optimization; … … 32 33 [Item("PackingMoveEvaluator", "A base class for operators which evaluate Packing-Solution moves.")] 33 34 [StorableClass] 34 public abstract class PackingMoveEvaluator<D, B, I > : SingleSuccessorOperator, IPackingMoveEvaluator, IMoveOperator35 public abstract class PackingMoveEvaluator<D, B, I, M> : SingleSuccessorOperator, IPackingMoveEvaluator 35 36 where D : class, IPackingPosition 36 37 where B : PackingShape<D> 37 where I : PackingShape<D>, IPackingItem { 38 where I : PackingShape<D>, IPackingItem 39 where M : IItem { 38 40 public override bool CanChangeName { 39 41 get { return false; } … … 61 63 get { return (ScopeParameter)Parameters["CurrentScope"]; } 62 64 } 63 public ILookupParameter<IPackingMove > PackingMoveParameter {64 get { return (ILookupParameter<IPackingMove >)Parameters["PackingMove"]; }65 public ILookupParameter<IPackingMove<M>> PackingMoveParameter { 66 get { return (ILookupParameter<IPackingMove<M>>)Parameters["PackingMove"]; } 65 67 } 66 68 67 69 [StorableConstructor] 68 70 protected PackingMoveEvaluator(bool deserializing) : base(deserializing) { } 69 protected PackingMoveEvaluator(PackingMoveEvaluator<D, B, I > original, Cloner cloner) : base(original, cloner) { }71 protected PackingMoveEvaluator(PackingMoveEvaluator<D, B, I, M> original, Cloner cloner) : base(original, cloner) { } 70 72 protected PackingMoveEvaluator() 71 73 : base() { … … 77 79 Parameters.Add(new ValueLookupParameter<IEvaluator>("PackingPlanEvaluator", "The actual packing plan evaluation operator.")); 78 80 Parameters.Add(new ScopeParameter("CurrentScope", "The current scope where the decoded solution should be added to.")); 79 Parameters.Add(new LookupParameter<IPackingMove >("PackingMove", "The move to evaluate."));81 Parameters.Add(new LookupParameter<IPackingMove<M>>("PackingMove", "The move to evaluate.")); 80 82 } 81 83 … … 83 85 84 86 public override IOperation Apply() { 85 IPackingMove move = PackingMoveParameter.ActualValue;86 IPackingSolutionEncodingnewSolution = move.GetSolutionAfterMove();87 IPackingMove<M> move = PackingMoveParameter.ActualValue; 88 var newSolution = move.GetSolutionAfterMove(); 87 89 CurrentScopeParameter.ActualValue.Variables.Add(new Variable("MovedSolution", newSolution)); 88 90 … … 93 95 CurrentScopeParameter.ActualValue.Variables.Add(new Variable("PackingPlanAfterMove", packingPlan)); 94 96 95 DoubleValuequality = PackingRatioEvaluator<D, B, I>.CalculatePackingRatio(packingPlan);97 var quality = PackingRatioEvaluator<D, B, I>.CalculatePackingRatio(packingPlan); 96 98 97 double moveQuality = quality .Value;99 double moveQuality = quality; 98 100 99 101 if (MoveQualityParameter.ActualValue == null) MoveQualityParameter.ActualValue = new DoubleValue(moveQuality);
Note: See TracChangeset
for help on using the changeset viewer.