property GradProcedure: TGrad;
Defines the gradient vector calculation routine.
Returns: TGrad
Remarks:
Defines the gradient vector calculation routine. Set TMtxOptimization.GradProcedure to nil if you want to use internal numeric gradient vector calculation.
Examples
function Banana(const Pars: TVec; const Consts: TVec; const PConsts: Array of TObject): double;
begin
Banana := 100*Sqr(Pars[1] - Sqr(Pars[0])) + Sqr(1 - Pars[0]);
end;
procedure GradBanana(Fun: TRealFunction; const Pars: TVec; const Consts: TVec; const ObjConsts: Array of TObject; const Grad: TVec);
begin
Grad[0] := -400*(Pars[1] - Sqr(Pars[0]))*Pars[0] - 2*(1 - Pars[0]);
Grad[1] := 200*(Pars[1] - Sqr(Pars[0]));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MtxOptim.VariableParameters.SetIt(false,[2,-1]);
MtxOptim.RealFunction := Banana;
MtxOptim.OptimizationMethod := optBFGS;
// use exact gradient vector calculation
// NOTE : set MtxOptim.GradProcedure to nil if yo
// want to use internal numeric gradient calculation
MtxOptim.GradProcedure := GradBanana;
MtxOptim.Recalculate;
end;