/// <summary>
        /// Standard Constructor
        /// </summary>
        public ParetoGeneticsSolver(IEnumerable <T> source,
                                    IEnumerable <ObjectiveDescription <T> > objectives,
                                    Func <T, T, T> breed,
                                    IComparer <ObjectiveItem <T> > comparer)
        {
            if (null == source)
            {
                throw new ArgumentNullException(nameof(source));
            }
            else if (null == objectives)
            {
                throw new ArgumentNullException(nameof(objectives));
            }
            else if (null == breed)
            {
                throw new ArgumentNullException(nameof(breed));
            }

            m_Scope = new ObjectivesScope <T>(source, objectives);
            m_Breed = breed;

            if (null == comparer)
            {
                comparer = ObjectiveItem <T> .FrontierAndCroudDistanceComparer;
            }

            m_Comparer = comparer;
            Step       = 1;
        }
        /// <summary>
        /// Standard Construcrtor
        /// </summary>
        /// <param name="scope"></param>
        /// <param name="breed"></param>
        /// <param name="comparer"></param>
        public ParetoGeneticsSolver(ObjectivesScope <T> scope,
                                    Func <T, T, T> breed,
                                    IComparer <ObjectiveItem <T> > comparer)
        {
            if (null == scope)
            {
                throw new ArgumentNullException(nameof(scope));
            }
            else if (null == breed)
            {
                throw new ArgumentNullException(nameof(breed));
            }

            if (null == comparer)
            {
                comparer = ObjectiveItem <T> .FrontierAndCroudDistanceComparer;
            }

            m_Comparer = comparer;
            Step       = 1;

            m_Scope = scope.Clone();
            m_Breed = breed;
        }
 /// <summary>
 /// Standard Construcrtor
 /// </summary>
 /// <param name="scope"></param>
 /// <param name="breed"></param>
 public ParetoGeneticsSolver(ObjectivesScope <T> scope,
                             Func <T, T, T> breed)
     : this(scope, breed, null)
 {
 }
Ejemplo n.º 4
0
 internal ObjectiveItem(ObjectivesScope <T> owner, T solution)
 {
     Owner    = owner;
     Solution = solution;
 }