You are here: Symbol Reference > Dew Namespace > Dew.Math Namespace > Classes > TMtxOptimization Class > TMtxOptimization Properties > TMtxOptimization.GradHessProcedure Property
Dew Math for .NET
ContentsIndexHome
PreviousUpNext
TMtxOptimization.GradHessProcedure Property

Defines the gradient vector and Hessian matrix calculation routine.

Syntax
C#
Visual Basic
public TGradHess GradHessProcedure;

Defines the gradient vector and Hessian matrix calculation routine. Set GradHessProcedure to nil if you want to use internal numeric gradient and Hessian matrix calculation.

using Dew.Math; using Dew.Math.Units; namespace Dew.Examples { // Objective function double Banana(TVec pars, TVec consts, params object[] obj) { return 100.0*Math387.IntPower(pars[1]- Math387.IntPower(pars[0],2),2) + Math387.IntPower(1.0-pars[0],2); } // Analytical gradient of the objective function void GradHessBanana(TRealFunction Fun, TVec pars, TVec consts, object[] obj, TVec grad, TMtx Hess) { grad.Values[0] = -400*(pars[1]-Math387.IntPower(pars[0],2))*pars[0] - 2*(1-pars[0]); grad.Values[1] = 200*(pars[1]-Math387.IntPower(pars[0],2)); Hess.Values1D[0] = -400*Pars[1]+1200*Math387.IntPower(Pars[0],2)+2; Hess.Values1D[1] = -400*Pars[0]; Hess.Values1D[2] = -400*Pars[0]; Hess.Values1D[3] = 200; } private void Example(TMtxOptimization opt) { opt.VariableParameters.SetIt(new double[] {2,-1}); opt.RealFunction = Banana; opt.OptimizationMethod = TOptimizationMethod.optBFGS; // use exact gradient and Hessian calculation // NOTE : set opt.GradHessProcedure to null if you // want to use internal numeric gradient calculation opt.GradHessProcedure = GradHessBanana; opt.Recalculate(); } }
Copyright (c) 1999-2024 by Dew Research. All rights reserved.
What do you think about this topic? Send feedback!