#include<cmath>
#include<cstdlib>
{
for (int i=0;i<(length-1);i++) {
result+=pow(1-xx[i],2)+100*pow(xx[i+1]-pow(xx[i],2),2);
}
return result;
}
{
result+=xx[i]*xx[i]-10*
cos(6.2831853*xx[i]);
}
return result;
}
void GlobalMinimization()
{
Bool_t installed=
r.Eval(
"is.element('DEoptim', installed.packages()[,1])");
if (!installed) {
std::cout<<"Package DEoptim no installed in R"<<std::endl;
std::cout<<"Run install.packages('DEoptim') in R's environment"<<std::endl;
return;
}
r<<
"suppressMessages(library(DEoptim, quietly = TRUE))";
bench.
Start(
"GlobalMinimizationRosenBrock");
r<<
"result1<-DEoptim(fn=GenRosenBrock,lower=ll,upper=ul,control=list(NP=10*n,itermax=MaxIter,trace=FALSE))";
std::cout<<"-----------------------------------------"<<std::endl;
std::cout<<"RosenBrock's minimum in: "<<std::endl;
r<<
"print(result1$optim$bestmem)";
std::cout<<"Bechmark Times"<<std::endl;
bench.
Show(
"GlobalMinimizationRosenBrock");
bench.
Start(
"GlobalMinimizationRastrigin");
r<<
"result2<-DEoptim(fn=Rastrigin,lower=ll,upper=ul,control=list(NP=10*n,itermax=MaxIter,trace=FALSE))";
std::cout<<"-----------------------------------------"<<std::endl;
std::cout<<"Rastrigin's minimum in: "<<std::endl;
r<<
"print(result2$optim$bestmem)";
std::cout<<"Bechmark Times"<<std::endl;
bench.
Show(
"GlobalMinimizationRastrigin");
r<<
"dev.new(title='RosenBrock Convergence')";
r<<
"plot(result1,type='o',pch='.')";
r<<
"dev.new(title='Rastrigin Convergence')";
r<<
"plot(result2,type='o',pch='.')";
}
}
bool Bool_t
Boolean (0=false, 1=true) (bool).
double Double_t
Double 8 bytes.
TVectorT< Double_t > TVectorD
This is a class to pass functions from ROOT to R.
ROOT R was implemented using the R Project library and the modules Rcpp and RInside.
static TRInterface & Instance()
static method to get an TRInterface instance reference
This class is a ROOT utility to help benchmarking applications.
virtual void Start(const char *name)
Starts Benchmark with the specified name.
virtual void Show(const char *name)
Stops Benchmark name and Prints results.
Int_t GetNoElements() const
RVec< PromoteType< T > > cos(const RVec< T > &v)
BVH_ALWAYS_INLINE T length(const Vec< T, N > &v)