private QAPSimilarityCalculator(QAPSimilarityCalculator original, Cloner cloner)
     : base(original, cloner)
 {
     Weights   = cloner.Clone(original.Weights);
     Distances = cloner.Clone(original.Distances);
 }
Ejemplo n.º 2
0
 private QAPSimilarityCalculator(QAPSimilarityCalculator original, Cloner cloner) : base(original, cloner) { }
Ejemplo n.º 3
0
        private void ParameterizeOperators()
        {
            foreach (IPermutationCrossover op in Operators.OfType <IPermutationCrossover>())
            {
                op.ParentsParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
                op.ChildParameter.ActualName   = SolutionCreator.PermutationParameter.ActualName;
            }
            foreach (IPermutationManipulator op in Operators.OfType <IPermutationManipulator>())
            {
                op.PermutationParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
            }
            foreach (IPermutationMoveOperator op in Operators.OfType <IPermutationMoveOperator>())
            {
                op.PermutationParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
            }
            if (Operators.OfType <IMoveGenerator>().Any())
            {
                if (Operators.OfType <IMoveGenerator>().OfType <IPermutationInversionMoveOperator>().Any())
                {
                    string inversionMove = Operators.OfType <IMoveGenerator>().OfType <IPermutationInversionMoveOperator>().First().InversionMoveParameter.ActualName;
                    foreach (IPermutationInversionMoveOperator op in Operators.OfType <IPermutationInversionMoveOperator>())
                    {
                        op.InversionMoveParameter.ActualName = inversionMove;
                    }
                }
                if (Operators.OfType <IMoveGenerator>().OfType <IPermutationTranslocationMoveOperator>().Any())
                {
                    string translocationMove = Operators.OfType <IMoveGenerator>().OfType <IPermutationTranslocationMoveOperator>().First().TranslocationMoveParameter.ActualName;
                    foreach (IPermutationTranslocationMoveOperator op in Operators.OfType <IPermutationTranslocationMoveOperator>())
                    {
                        op.TranslocationMoveParameter.ActualName = translocationMove;
                    }
                }
                if (Operators.OfType <IMoveGenerator>().OfType <IPermutationSwap2MoveOperator>().Any())
                {
                    string swapMove = Operators.OfType <IMoveGenerator>().OfType <IPermutationSwap2MoveOperator>().First().Swap2MoveParameter.ActualName;
                    foreach (IPermutationSwap2MoveOperator op in Operators.OfType <IPermutationSwap2MoveOperator>())
                    {
                        op.Swap2MoveParameter.ActualName = swapMove;
                    }
                }
            }
            foreach (var op in Operators.OfType <IPermutationMultiNeighborhoodShakingOperator>())
            {
                op.PermutationParameter.ActualName = SolutionCreator.PermutationParameter.ActualName;
            }

            QAPExhaustiveSwap2LocalImprovement localOpt = Operators.OfType <QAPExhaustiveSwap2LocalImprovement>().SingleOrDefault();

            if (localOpt != null)
            {
                localOpt.AssignmentParameter.ActualName   = SolutionCreator.PermutationParameter.ActualName;
                localOpt.DistancesParameter.ActualName    = DistancesParameter.Name;
                localOpt.MaximizationParameter.ActualName = MaximizationParameter.Name;
                localOpt.QualityParameter.ActualName      = Evaluator.QualityParameter.ActualName;
                localOpt.WeightsParameter.ActualName      = WeightsParameter.Name;
            }

            QAPSimilarityCalculator similarityCalculator = Operators.OfType <QAPSimilarityCalculator>().SingleOrDefault();

            if (similarityCalculator != null)
            {
                similarityCalculator.SolutionVariableName = SolutionCreator.PermutationParameter.ActualName;
                similarityCalculator.QualityVariableName  = Evaluator.QualityParameter.ActualName;
            }
        }
Ejemplo n.º 4
0
 private QAPSimilarityCalculator(QAPSimilarityCalculator original, Cloner cloner) : base(original, cloner)
 {
 }