Exemple #1
0
        /// <summary>
        /// Stores data and performs the optimization.
        /// The list of parameters is open-ended so that sub-classes can extend it
        /// with arguments specific to their concrete implementations.
        /// When the method is called multiple times, instance data is overwritten
        /// only when actually present in the list of arguments: when not specified,
        /// data set in a previous call is retained(and thus is optional in
        /// subsequent calls).
        /// Important note: Subclasses must override
        /// <see cref="ParseOptimizationData"/> if they need to register
        /// their own options; but then, they must also call
        /// base.ParseOptimizationData(optData) within that method.
        /// </summary>
        /// <param name="optData">
        /// This method will register the following data:
        /// <list>
        /// <item><see cref="MaxEval"/></item>
        /// <item><see cref="MaxIter"/></item>
        /// </list>
        /// </param>
        /// <returns>a point/value pair that satisfies the convergence criteria.</returns>
        public T Optimize(params IOptimizationData[] optData)
        {
            // Parse options.
            ParseOptimizationData(optData);

            // Reset counters.
            evaluations.ResetCount();
            iterations.ResetCount();
            // Perform optimization.
            return(DoOptimize());
        }