#define private public #include #include #include //#include #include #include #include #include #include using namespace opt_utilities; using namespace std; class foo1 :public func_obj > { long long n_eval; public: foo1() :n_eval(0) { } ~foo1() { cerr<& p) { ++n_eval; double result=0; for(int i=0;i!=p.size();++i) { result+=p[i]*p[i]; } return result; } }; class foo2 :public func_obj > { foo2* do_clone()const { return new foo2(*this); } double do_eval(const vector& p) { double result=0; for(int i=0;i!=p.size();++i) { result+=(i+1)*p[i]*p[i]; } return result; } }; class foo3 :public func_obj > { foo3* do_clone()const { return new foo3(*this); } double do_eval(const vector& p) { double result=0; for(int i=0;i > { foo4* do_clone()const { return new foo4(*this); } double do_eval(const vector& p) { double result=0; for(int i=0;i > { foo5* do_clone()const { return new foo5(*this); } double do_eval(const vector& p) { const double pi=3.14159265358979323846; double result=0; result+=10*p.size(); for(int i=0;i >& fo, const opt_method >& optm) { const int problem_size=100000; optimizer > opt; opt.set_func_obj(fo); opt.set_opt_method(optm); vector lim(problem_size); for(int i=0;i lim(problem_size); for(int i=0;i p(problem_size); for(int i=0;i > agam; lbfgs_method > agam; //powell_method > agam; //aga_method > agam(100,50); test_opt(foo1(),agam); // test_opt(foo1(),agam); // test_opt(foo2(),agam); //test_opt(foo3(),agam); //test_opt(foo4(),agam); //test_opt(foo5(),agam); }