public override double EvaluateMove(Permutation permutation, TranslocationMove move, PackingShape binShape,
                                            ReadOnlyItemList <PackingItem> items)
        {
            // uses full evaluation
            TranslocationManipulator.Apply(permutation, move.Index1, move.Index2, move.Index3);
            var solution = DecoderParameter.ActualValue.Decode(permutation, binShape, items);

            return(SolutionEvaluatorParameter.ActualValue.Evaluate(solution));
        }
 public abstract double EvaluateMove(TSol encodedSolutionCandidate, TMove move, PackingShape binShape, ReadOnlyItemList <PackingItem> items, bool useStackingConstraints);
        public override double EvaluateMove(Permutation permutation, Swap2Move move, PackingShape binShape, ReadOnlyItemList <PackingItem> items, bool useStackingConstraints)
        {
            // uses full evaluation
            Swap2Manipulator.Apply(permutation, move.Index1, move.Index2);
            var solution = DecoderParameter.ActualValue.Decode(permutation, binShape, items, useStackingConstraints);

            return(SolutionEvaluatorParameter.ActualValue.Evaluate(solution));
        }