14 RosenBrockFunction() : fNCalls(0) {}
15 virtual ~RosenBrockFunction() {}
17 unsigned int NDim()
const {
return 2; }
20 return new RosenBrockFunction();
23 unsigned int getNCalls() {
return fNCalls; }
26 mutable unsigned int fNCalls;
28 inline double DoEval (
const double *
x)
const {
35 return 100*tmp1*tmp1+tmp2*tmp2;
41 virtual ~Parabole() {}
43 unsigned int NDim()
const {
return 1; }
46 return new Parabole();
51 inline double DoEval (
const double *
x)
const {
58 inline double DoEval (
const double *
x)
const {
63 virtual ~MultiMin() {}
65 unsigned int NDim()
const {
return 1; }
68 return new MultiMin();
76 cout <<
"****************************************************\n";
77 cout <<
"Parabola Function Minimization \n";
85 cout <<
"Parabole min:" << gaParabole.
MinValue() <<
" x = [" << gaParabole.
X()[0] <<
"]" << endl;
87 if (!ok)
Error(
"testGAMinimizer",
"Test failed for parabola");
91 cout <<
"****************************************************\n";
92 cout <<
"Rosenbrock Function Minimization \n";
103 const double *
xmin = gaRosenBrock.
X();
104 cout <<
"RosenBrock min: " << gaRosenBrock.
MinValue() <<
" x = [" << xmin[0] <<
"] [" << xmin[1] <<
"]" << endl;
106 if (!ok)
Error(
"testGAMinimizer",
"Test failed for RosenBrock");
110 cout <<
"****************************************************\n";
111 cout <<
"MultiMinima Function Minimization \n";
119 cout <<
"MultiMin min:" << gaMultiMin.
MinValue() <<
" x = [" << gaMultiMin.
X()[0] <<
"]" << endl;
121 if (!ok)
Error(
"testGAMinimizer",
"Test failed for MultiMin");
124 if (status) cout <<
"Test Failed !" << endl;
125 else cout <<
"Done!" << endl;
130 int main(
int argc,
char **argv)
136 for (
Int_t i=1 ; i<argc ; i++) {
137 std::string arg = argv[i] ;
145 std::cout <<
"Usage: " << argv[0] <<
" [-v] [-vv]\n";
146 std::cout <<
" where:\n";
147 std::cout <<
" -v : verbose mode\n";
148 std::cout <<
" -vv : very verbose mode\n";
149 std::cout << std::endl;
void RosenBrock(Int_t &, Double_t *, Double_t &f, Double_t *par, Int_t)
void SetMaxIterations(unsigned int maxiter)
set maximum iterations (one iteration can have many function calls)
virtual bool Minimize()
method to perform the minimization
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
int main(int argc, char **argv)
int testGAMinimizer(int verbose=0)
static Vc_ALWAYS_INLINE Vector< T > abs(const Vector< T > &x)
void SetRandomSeed(int seed)
void Error(const char *location, const char *msgfmt,...)
virtual unsigned int NDim() const =0
Retrieve the dimension of the function.
virtual const double * X() const
return pointer to X values at the minimum
virtual void SetFunction(const ROOT::Math::IMultiGenFunction &func)
set the function to minimize
virtual double MinValue() const
return minimum function value
void SetPrintLevel(int level)
set print level
Documentation for the abstract class IBaseFunctionMultiDim.
virtual bool SetLimitedVariable(unsigned int, const std::string &, double, double, double, double)
set a new upper/lower limited variable (override if minimizer supports them ) otherwise as default se...
virtual double DoEval(const double *x) const =0
Implementation of the evaluation function.
virtual IBaseFunctionMultiDim * Clone() const =0
Clone a function.