/// <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) { }
internal ObjectiveItem(ObjectivesScope <T> owner, T solution) { Owner = owner; Solution = solution; }