Dew MtxVec NET
TMtxOptimization.VariableParameters Property
Summary
Access the VariableParameters vector to set/read the variables in minimized function.

Class
TMtxOptimization

Declaration
Property VariableParameters: TVec read FVariableParameters write SetVariableParameters stored AllowStreaming;
Description
Access the VariableParameters vector to set/read the variables in minimized function. To define number of variables and their initial values, set the VariableParameters vector Length and Values properties. Read the VariableParameters Values property to get the function minimum position.
 See Also 
ConstantParameters 
SetPointers 
RealFunction 

Example 1

Uses Math387, MtxVecTools, Optimization, MtxVecEdit; function Banana(Pars: TVec; const Consts: Array of TSample;const PConsts: Array of Pointer): TSample; begin Result := 100*Sqr(Pars[1]-Sqr(Pars[0]))+Sqr(1-Pars[0]); end; procedure TForm1.FormCreate(Sender: TObject); begin // function with two variables // initial values for variables => Pars[0] := 2, Pars[1] := -1; MtxOptim.VariableParameters.SetIt(false,[2,-1]); MtxOptim.RealFunction := Banana; MtxOptim.OptimizationMethod := optMarquardt; // numeric approximation MtxOptim.GradProcedure := nil; MtxOptim.GradHessProcedure := nil; MtxOptim.Recalculate; // now VariableParameters holds minimum position ViewValues(MtxOptim.VariableParameters,'Minimum position'); end;
#include "MtxVecCpp.h" //MtxVecCPP.cpp must be included in the project #include "Math387.hpp" #include "Optimization.hpp" #include "MtxIntDiff.hpp" #include "MtxVecTools.hpp" // Objective function double __fastcall Banana(TVec * Parameters, const double * Constants, const int Constants_Size, System::TObject* const * ObjConst, const int ObjConst_Size) { double* Pars = Parameters->PValues1D(0); return 100.0*IntPower(Pars[1]-IntPower(Pars[0],2),2)+IntPower(1.0-Pars[0],2); } void __fastcall TForm1::FormCreate(TObject *Sender) { MtxOptim->VariableParameters->SetIt(false,OPENARRAY(TSample,(2,-1))); MtxOptim->RealFunction = Banana; MtxOptim->OptimizationMethod = optMarquardt; // numeric approximation MtxOptim->GradProcedure = NULL; MtxOptim->GradHessProcedure = NULL; MtxOptim->Recalculate(); }

Copyright 2008 Dew Research
http://www.dewresearch.com