public RankAndCrowdingSorter()
            : base()
        {
            Parameters.Add(new ValueLookupParameter <BoolArray>("Maximization", "For each objective a value that is true if that objective should be maximized, or false if it should be minimized."));
            Parameters.Add(new ValueLookupParameter <BoolValue>("DominateOnEqualQualities", "Flag which determines wether solutions with equal quality values should be treated as dominated."));
            Parameters.Add(new ScopeTreeLookupParameter <DoubleArray>("Qualities", "The vector of quality values."));
            Parameters.Add(new ScopeTreeLookupParameter <IntValue>("Rank", "The rank of a solution (to which front it belongs)."));
            Parameters.Add(new ScopeTreeLookupParameter <DoubleValue>("CrowdingDistance", "The crowding distance of a solution in a population."));

            FastNonDominatedSort       fastNonDominatedSort       = new FastNonDominatedSort();
            UniformSubScopesProcessor  subScopesProcessor         = new UniformSubScopesProcessor();
            CrowdingDistanceAssignment crowdingDistanceAssignment = new CrowdingDistanceAssignment();
            CrowdedComparisonSorter    crowdedComparisonSorter    = new CrowdedComparisonSorter();
            MergingReducer             mergingReducer             = new MergingReducer();

            fastNonDominatedSort.MaximizationParameter.ActualName             = MaximizationParameter.Name;
            fastNonDominatedSort.DominateOnEqualQualitiesParameter.ActualName = DominateOnEqualQualitiesParameter.Name;
            fastNonDominatedSort.QualitiesParameter.ActualName = QualitiesParameter.Name;
            fastNonDominatedSort.RankParameter.ActualName      = RankParameter.Name;

            crowdingDistanceAssignment.CrowdingDistanceParameter.ActualName = CrowdingDistanceParameter.Name;
            crowdingDistanceAssignment.QualitiesParameter.ActualName        = QualitiesParameter.Name;

            crowdedComparisonSorter.CrowdingDistanceParameter.ActualName = CrowdingDistanceParameter.Name;
            crowdedComparisonSorter.RankParameter.ActualName             = RankParameter.Name;

            OperatorGraph.InitialOperator        = fastNonDominatedSort;
            fastNonDominatedSort.Successor       = subScopesProcessor;
            subScopesProcessor.Operator          = crowdingDistanceAssignment;
            crowdingDistanceAssignment.Successor = crowdedComparisonSorter;
            crowdedComparisonSorter.Successor    = null;
            subScopesProcessor.Successor         = mergingReducer;
            mergingReducer.Successor             = null;
        }
Пример #2
0
    public RankAndCrowdingSorter()
      : base() {
      Parameters.Add(new ValueLookupParameter<BoolArray>("Maximization", "For each objective a value that is true if that objective should be maximized, or false if it should be minimized."));
      Parameters.Add(new ValueLookupParameter<BoolValue>("DominateOnEqualQualities", "Flag which determines wether solutions with equal quality values should be treated as dominated."));
      Parameters.Add(new ScopeTreeLookupParameter<DoubleArray>("Qualities", "The vector of quality values."));
      Parameters.Add(new ScopeTreeLookupParameter<IntValue>("Rank", "The rank of a solution (to which front it belongs)."));
      Parameters.Add(new ScopeTreeLookupParameter<DoubleValue>("CrowdingDistance", "The crowding distance of a solution in a population."));

      FastNonDominatedSort fastNonDominatedSort = new FastNonDominatedSort();
      UniformSubScopesProcessor subScopesProcessor = new UniformSubScopesProcessor();
      CrowdingDistanceAssignment crowdingDistanceAssignment = new CrowdingDistanceAssignment();
      CrowdedComparisonSorter crowdedComparisonSorter = new CrowdedComparisonSorter();
      MergingReducer mergingReducer = new MergingReducer();

      fastNonDominatedSort.MaximizationParameter.ActualName = MaximizationParameter.Name;
      fastNonDominatedSort.DominateOnEqualQualitiesParameter.ActualName = DominateOnEqualQualitiesParameter.Name;
      fastNonDominatedSort.QualitiesParameter.ActualName = QualitiesParameter.Name;
      fastNonDominatedSort.RankParameter.ActualName = RankParameter.Name;

      crowdingDistanceAssignment.CrowdingDistanceParameter.ActualName = CrowdingDistanceParameter.Name;
      crowdingDistanceAssignment.QualitiesParameter.ActualName = QualitiesParameter.Name;

      crowdedComparisonSorter.CrowdingDistanceParameter.ActualName = CrowdingDistanceParameter.Name;
      crowdedComparisonSorter.RankParameter.ActualName = RankParameter.Name;

      OperatorGraph.InitialOperator = fastNonDominatedSort;
      fastNonDominatedSort.Successor = subScopesProcessor;
      subScopesProcessor.Operator = crowdingDistanceAssignment;
      crowdingDistanceAssignment.Successor = crowdedComparisonSorter;
      crowdedComparisonSorter.Successor = null;
      subScopesProcessor.Successor = mergingReducer;
      mergingReducer.Successor = null;
    }
 protected FastNonDominatedSort(FastNonDominatedSort original, Cloner cloner) : base(original, cloner)
 {
 }
Пример #4
0
 protected FastNonDominatedSort(FastNonDominatedSort original, Cloner cloner) : base(original, cloner) { }