#define private public #include #include #include //#include #include #include using namespace opt_utilities; using namespace std; class foo1 :public func_obj > { foo1* do_clone()const { return new foo1(*this); } double do_eval(const vector& p) { 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=5; optimizer > opt; opt.set_func_obj(fo); opt.set_opt_method(optm); vector p(problem_size); for(int i=0;i > pm_simplex; powell_method > pm_powell; test_opt(foo1(),pm_powell); test_opt(foo2(),pm_powell); test_opt(foo3(),pm_powell); test_opt(foo4(),pm_powell); test_opt(foo5(),pm_powell); }