10 #ifndef ROL_MINIMAX2_HPP
11 #define ROL_MINIMAX2_HPP
15 #include "ROL_Ptr.hpp"
42 Real f1 = std::pow((*xp)[0],4.0) + std::pow((*xp)[1],2.0);
43 Real f2 = std::pow(2.0-(*xp)[0],2.0) + std::pow(2.0-(*xp)[1],2.0);
44 Real f3 = 2.0*std::exp(-(*xp)[0] + (*xp)[1]);
45 return std::max(f1,std::max(f2,f3));
51 Real f1 = std::pow((*xp)[0],4.0) + std::pow((*xp)[1],2.0);
52 Real f2 = std::pow(2.0-(*xp)[0],2.0) + std::pow(2.0-(*xp)[1],2.0);
53 Real f3 = 2.0*std::exp(-(*xp)[0] + (*xp)[1]);
55 if ( f1 >= std::max(f2,f3) ) {
56 (*gp)[0] = 4.0*std::pow((*xp)[0],3.0);
57 (*gp)[1] = 2.0*(*xp)[1];
59 else if ( f2 >= std::max(f1,f3) ) {
60 (*gp)[0] = 2.0*(*xp)[0]-4.0;
61 (*gp)[1] = 2.0*(*xp)[1]-4.0;
63 else if ( f3 >= std::max(f1,f2) ) {
64 (*gp)[0] = -2.0*std::exp(-(*xp)[0]+(*xp)[1]);
65 (*gp)[1] = 2.0*std::exp(-(*xp)[0]+(*xp)[1]);
76 return makePtr<Minimax2<Real>>();
80 Ptr<std::vector<Real> > x_ptr = makePtr<std::vector<Real>>(2, 0.0);
81 (*x_ptr)[0] = 1.0; (*x_ptr)[1] = -0.1;
82 return makePtr<StdVector<Real>>(x_ptr);
86 Ptr<std::vector<Real> > z_ptr = makePtr<std::vector<Real>>(2, 0.0);
87 (*z_ptr)[0] = 1.0; (*z_ptr)[1] = 1.0;
88 return makePtr<StdVector<Real>>(z_ptr);
Provides the interface to evaluate objective functions.
Ptr< Vector< Real > > getSolution(const int i=0) const
Defines the linear algebra or vector space interface.
Ptr< vector > getVector(V &x)
Ptr< Objective< Real > > getObjective(void) const
Ptr< Vector< Real > > getInitialGuess(void) const
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
Contains definitions of test objective functions.
Real value(const Vector< Real > &x, Real &tol)
Compute value.
std::vector< Real > vector
Ptr< const vector > getVector(const V &x)