public BestOfSampling(ICandidateFactory <TSysConfig> innerSamplingFactory, int poolSize, int bestPoints, IObjectiveEvaluator <TSysConfig> evaluator, IFitnessAssignment <double> fitAssignment = null) { if (fitAssignment == null) { fitAssignment = new DefaultFitnessAssignment(); } if (poolSize < bestPoints) { throw new ArgumentOutOfRangeException("poolSize", poolSize, String.Format("poolSize must be >= bestPoints({0})", bestPoints)); } this.HcFactory = (IHyperCubeOperationsFactory)innerSamplingFactory; this.innerSamplingFactory = innerSamplingFactory; var tmp = new IObjectiveScores[poolSize]; for (int i = 0; i < poolSize; i++) { tmp[i] = evaluator.EvaluateScore(innerSamplingFactory.CreateRandomCandidate()); } var points = fitAssignment.AssignFitness(tmp); Array.Sort(points); candidates = new FitnessAssignedScores <double> [bestPoints]; for (int i = 0; i < bestPoints; i++) { candidates[i] = points[i]; } }
private MpiSysConfig BestParameterSet(IEnumerable <IObjectiveScores> population, IFitnessAssignment <double> fitnessAssignment) { var tmpArray = fitnessAssignment.AssignFitness(population.ToArray()); Array.Sort(tmpArray); return((MpiSysConfig)tmpArray[0].Scores.GetSystemConfiguration()); }