コード例 #1
0
        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];
            }
        }
コード例 #2
0
        private MpiSysConfig BestParameterSet(IEnumerable <IObjectiveScores> population, IFitnessAssignment <double> fitnessAssignment)
        {
            var tmpArray = fitnessAssignment.AssignFitness(population.ToArray());

            Array.Sort(tmpArray);
            return((MpiSysConfig)tmpArray[0].Scores.GetSystemConfiguration());
        }