45 u_vec_.push_back(static_cast<Real>(25)
46 + std::pow((static_cast<Real>(-50)
47 *std::log(static_cast<Real>(0.01)*static_cast<Real>(i+1))),
48 static_cast<Real>(2)/static_cast<Real>(3)));
53 Ptr<const std::vector<Real> > ex
56 Real val(0), f(0), u(0);
57 Real x1 = (*ex)[0], x2 = (*ex)[1], x3 = (*ex)[2];
60 f = -
static_cast<Real
>(0.01)*
static_cast<Real
>(i+1)
61 + std::exp(-std::pow(u-x2,x3)/x1);
68 Ptr<std::vector<Real> > eg
70 Ptr<const std::vector<Real> > ex
74 Real f(0), df1(0), df2(0), df3(0);
75 Real u(0), tmp(0), tmp0(0), tmp1(0);
76 Real x1 = (*ex)[0], x2 = (*ex)[1], x3 = (*ex)[2];
80 tmp0 = std::pow(u-x2,x3);
81 tmp1 = std::pow(u-x2,x3-static_cast<Real>(1));
82 tmp = std::exp(-tmp0/x1);
84 f = -
static_cast<Real
>(0.01)*
static_cast<Real
>(i+1) + tmp;
88 df3 = tmp*tmp0*std::log(u-x2)/x1;
90 (*eg)[0] +=
static_cast<Real
>(2)*f*df1;
91 (*eg)[1] +=
static_cast<Real
>(2)*f*df2;
92 (*eg)[2] +=
static_cast<Real
>(2)*f*df3;
97 Ptr<std::vector<Real> > ehv
99 Ptr<const std::vector<Real> > ev
101 Ptr<const std::vector<Real> > ex
106 Real df1(0), df2(0), df3(0);
107 Real df11(0), df12(0), df13(0);
108 Real df21(0), df22(0), df23(0);
109 Real df31(0), df32(0), df33(0);
110 Real u(0), tmp(0), tmp0(0), tmp1(0), tmp2(0), tmp3(0), tmp4(0);
111 Real x1 = (*ex)[0], x2 = (*ex)[1], x3 = (*ex)[2];
112 Real v1 = (*ev)[0], v2 = (*ev)[1], v3 = (*ev)[2];
113 Real x1sqr = x1*x1, x1cub = x1sqr*x1, x1quar = x1cub*x1;
116 tmp0 = std::pow(u-x2,x3);
117 tmp1 = std::pow(u-x2,x3-static_cast<Real>(1));
118 tmp2 = std::pow(u-x2,static_cast<Real>(2)*(x3-static_cast<Real>(1)));
119 tmp3 = std::pow(u-x2,x3-static_cast<Real>(2));
120 tmp4 = std::pow(u-x2,static_cast<Real>(2)*x3-static_cast<Real>(1));
121 tmp = std::exp(-tmp0/x1);
123 f = -
static_cast<Real
>(0.01)*
static_cast<Real
>(i+1) + tmp;
125 df1 = tmp*tmp0/x1sqr;
126 df2 = tmp*x3*tmp1/x1;
127 df3 = tmp*tmp0*std::log(u-x2)/x1;
129 df11 = tmp0*tmp*(tmp0-
static_cast<Real
>(2)*x1)/x1quar;
130 df12 = x3*tmp1*tmp*(tmp0-x1)/x1cub;
131 df13 = tmp0*std::log(u-x2)*tmp*(x1-tmp0)/x1cub;
134 df22 = x3*x3*tmp2*tmp/(x1*x1)
135 -(x3-static_cast<Real>(1))*x3*tmp3*tmp/x1;
136 df23 = -x3*tmp4*std::log(u-x2)*tmp/x1sqr
137 +tmp1*tmp/x1 + x3*tmp1*std::log(u-x2)*tmp/x1;
141 df33 = tmp0*std::pow(std::log(u-x2),2)*tmp*(tmp0-x1)/x1sqr;
143 (*ehv)[0] +=
static_cast<Real
>(2)*(f*(df11*v1 + df12*v2 + df13*v3)
144 + df1*(df1*v1 + df2*v2 + df3*v3));
145 (*ehv)[1] +=
static_cast<Real
>(2)*(f*(df21*v1 + df22*v2 + df23*v3)
146 + df2*(df1*v1 + df2*v2 + df3*v3));
147 (*ehv)[2] +=
static_cast<Real
>(2)*(f*(df31*v1 + df32*v2 + df33*v3)
148 + df3*(df1*v1 + df2*v2 + df3*v3));
165 scale_ = makePtr<std::vector<Real>>(
n_,0);
166 (*scale_)[0] =
static_cast<Real
>(1.e-4);
167 (*scale_)[1] =
static_cast<Real
>(1.e-3);
168 (*scale_)[2] =
static_cast<Real
>(0.5);
173 return makePtr<Objective_HS25<Real>>();
178 Ptr<std::vector<Real> > x0p = makePtr<std::vector<Real>>(
n_,0);
179 (*x0p)[0] =
static_cast<Real
>(100);
180 (*x0p)[1] =
static_cast<Real
>(12.5);
181 (*x0p)[2] =
static_cast<Real
>(3);
182 return makePtr<PrimalScaledStdVector<Real>>(x0p,
scale_);
187 Ptr<std::vector<Real> > xp = makePtr<std::vector<Real>>(
n_,0);
188 (*xp)[0] =
static_cast<Real
>(50);
189 (*xp)[1] =
static_cast<Real
>(25);
190 (*xp)[2] =
static_cast<Real
>(1.5);
191 return makePtr<PrimalScaledStdVector<Real>>(xp,
scale_);
196 Ptr<std::vector<Real> > lp = makePtr<std::vector<Real>>(
n_,0);
197 (*lp)[0] =
static_cast<Real
>(0.1);
198 (*lp)[1] =
static_cast<Real
>(0);
199 (*lp)[2] =
static_cast<Real
>(0);
200 Ptr<Vector<Real> > l = makePtr<StdVector<Real>>(lp);
201 Ptr<std::vector<Real> > up = makePtr<std::vector<Real>>(
n_,0);
202 (*up)[0] =
static_cast<Real
>(100);
203 (*up)[1] =
static_cast<Real
>(25.6);
204 (*up)[2] =
static_cast<Real
>(5);
205 Ptr<Vector<Real> > u = makePtr<StdVector<Real>>(up);
206 return makePtr<Bounds<Real>>(l,u);
Provides the interface to evaluate objective functions.
typename PV< Real >::size_type size_type
Provides the std::vector implementation of the ROL::Vector interface that handles scalings in the inn...
Ptr< Vector< Real > > getInitialGuess(void) const
std::vector< Real > u_vec_
virtual void hessVec(Vector< Real > &hv, const Vector< Real > &v, const Vector< Real > &x, Real &tol)
Apply Hessian approximation to vector.
Contains definitions of custom data types in ROL.
Ptr< Objective< Real > > getObjective(void) const
virtual void zero()
Set to zero vector.
Defines the linear algebra or vector space interface.
Real value(const Vector< Real > &x, Real &tol)
Compute value.
std::vector< Real >::size_type uint
Contains definitions of test objective functions.
Ptr< Vector< Real > > getSolution(const int i=0) const
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
W. Hock and K. Schittkowski 25th test function.
Provides the std::vector implementation of the ROL::Vector interface that handles scalings in the inn...
Ptr< BoundConstraint< Real > > getBoundConstraint(void) const
Ptr< std::vector< Real > > scale_