/// <summary>Creates a specific <see cref="OneDimOptimizer.IFunction"/> object. /// </summary> /// <param name="objectiveFunction">The differentiable objective function.</param> /// <returns>A specific <see cref="OneDimOptimizer.IFunction"/> object with respect to the specified optimization algorithm.</returns> public OneDimOptimizer.IFunction Create(OneDimOptimizer.DifferentiableObjectiveFunction objectiveFunction) { if (objectiveFunction == null) { throw new ArgumentNullException(nameof(objectiveFunction)); } return(new OneDimOptimizerDifferentiableFunction(this, objectiveFunction)); }
/// <summary>Initializes a new instance of the <see cref="OneDimOptimizerDifferentiableFunction"/> class. /// </summary> /// <param name="functionDescriptor">The function descriptor, i.e. the <see cref="OneDimOptimizer.IFunctionFactory"/> object that served as factory for the current object.</param> /// <param name="objectiveFunction">The objective function.</param> internal OneDimOptimizerDifferentiableFunction(OneDimOptimizerFunctionFactory functionDescriptor, OneDimOptimizer.DifferentiableObjectiveFunction objectiveFunction) : base(functionDescriptor, x => objectiveFunction(x, out _)) { m_DifferentiableObjectiveFunction = objectiveFunction; }
/// <summary>Sets the objective function. /// </summary> /// <param name="optimizerAlgorithm">The <see cref="IOneDimOptimizerAlgorithm"/> object.</param> /// <param name="objectiveFunction">The differentiable objective function.</param> /// <exception cref="InvalidOperationException">Thrown, if <paramref name="objectiveFunction"/> is invalid.</exception> public static void SetFunction(this IOneDimOptimizerAlgorithm optimizerAlgorithm, OneDimOptimizer.DifferentiableObjectiveFunction objectiveFunction) { var objFunction = optimizerAlgorithm.Factory.Function.Create(objectiveFunction); optimizerAlgorithm.Function = objFunction; }