Optimize() public method

Optimize using default parameters.
public Optimize ( ) : Result
return Result
示例#1
0
        /// <summary>
        /// Compute the fitness by repeating a number of optimization runs
        /// and sum the fitnesses achieved in the runs.
        /// </summary>
        /// <param name="parameters">Parameters to use for the Optimizer.</param>
        /// <param name="fitnessLimit">Preemptive Fitness Limit</param>
        /// <returns>Fitness value.</returns>
        public override double Fitness(double[] parameters, double fitnessLimit)
        {
            // Initialize the fitnses sum.
            double fitnessSum = 0;

            // Perform a number of optimization runs.
            for (int i = 0; i < NumRuns && fitnessSum < fitnessLimit; i++)
            {
                // Perform one optimization run.
                Result result = Optimizer.Optimize(parameters, fitnessLimit - fitnessSum);

                // Compute the normalized fitness.
                double fitnessNormalized = result.Fitness - Optimizer.MinFitness;

                Debug.Assert(fitnessNormalized >= 0);

                // Accumulate the fitness sum.
                fitnessSum += fitnessNormalized;
            }

            return(fitnessSum);
        }
示例#2
0
        /// <summary>
        /// Compute the fitness by repeating a number of optimization runs
        /// and sum the fitnesses achieved in the runs.
        /// </summary>
        /// <param name="parameters">Parameters to use for the Optimizer.</param>
        /// <param name="fitnessLimit">Preemptive Fitness Limit</param>
        /// <returns>Fitness value.</returns>
        public override double Fitness(double[] parameters, double fitnessLimit)
        {
            // Initialize the fitness sum.
            double fitnessSum = 0;

            // Perform a number of optimization runs.
            for (int i = 0; i < NumRuns && fitnessSum < fitnessLimit; i++)
            {
                // Perform one optimization run.
                Result result = Optimizer.Optimize(parameters, fitnessLimit - fitnessSum);

                // Compute the normalized fitness.
                double fitnessNormalized = result.Fitness - Optimizer.MinFitness;

                // This is most likely where your debugger will stop if your problem minimum fitness
                // is not accurate (most likely defaulting to 0).
                Debug.Assert(fitnessNormalized >= 0);

                // Accumulate the fitness sum.
                fitnessSum += fitnessNormalized;
            }

            return(fitnessSum);
        }
示例#3
0
        /// <summary>
        /// Perform one optimization run and return the best found solution.
        /// This just wraps around the Optimizer and stores the results for
        /// later computation of statistics.
        /// </summary>
        /// <param name="parameters">Control parameters for the optimizer.</param>
        /// <param name="fitnessLimit">Preemptive Fitness Limit</param>
        public override Result Optimize(double[] parameters, double fitnessLimit)
        {
            // Call through to the Optimizer.
            Result result = Optimizer.Optimize(parameters, fitnessLimit);

            // Store optimization result for later use by the Compute() method,
            // if feasibility is required then only store feasible results.
            if (!OnlyFeasible || result.Feasible)
            {
                Results.Add(result);
            }

            if (result.Feasible)
            {
                // Increase count of feasible results.
                CountFeasible++;
            }

            // Increase total count of results, regardless of feasibility.
            Count++;

            // Return the optimization result.
            return(result);
        }