69 typedef typename std::vector<Real>::size_type
uint;
78 for ( uint i = 0; i <
u_size_; i++ ) {
79 u_vec_.push_back(25.0 + std::pow((-50.0*std::log(0.01*(Real)(i+1))),2.0/3.0));
84 Teuchos::RCP<const std::vector<Real> > ex
87 Real val = 0.0, f = 0.0, u = 0.0;
88 Real x1 = (*ex)[0], x2 = (*ex)[1], x3 = (*ex)[2];
89 for ( uint i = 0; i <
u_size_; i++ ) {
91 f = -0.01*(Real)(i+1) + std::exp(-std::pow(u-x2,x3)/x1);
98 Teuchos::RCP<std::vector<Real> > eg
100 Teuchos::RCP<const std::vector<Real> > ex
104 Real f = 0.0, df1 = 0.0, df2 = 0.0, df3 = 0.0;
105 Real u = 0.0, tmp = 0.0, tmp0 = 0.0, tmp1 = 0.0;
106 Real x1 = (*ex)[0], x2 = (*ex)[1], x3 = (*ex)[2];
108 for ( uint i = 0; i <
u_size_; i++ ) {
110 tmp0 = std::pow(u-x2,x3);
111 tmp1 = std::pow(u-x2,x3-1);
112 tmp = std::exp(-tmp0/x1);
114 f = -0.01*(Real)(i+1) + tmp;
116 df1 = tmp*tmp0/x1sqr;
117 df2 = tmp*x3*tmp1/x1;
118 df3 = tmp*tmp0*std::log(u-x2)/x1;
120 (*eg)[0] += 2.0*f*df1;
121 (*eg)[1] += 2.0*f*df2;
122 (*eg)[2] += 2.0*f*df3;
127 Teuchos::RCP<std::vector<Real> > ehv
129 Teuchos::RCP<const std::vector<Real> > ev
131 Teuchos::RCP<const std::vector<Real> > ex
132 = Teuchos::dyn_cast<
const PrimalScaledStdVector<Real> >(x).getVector();
135 Real f, df1, df2, df3;
136 Real df11, df12, df13, df21, df22, df23, df31, df32, df33;
137 Real u, tmp, tmp0, tmp1, tmp2, tmp3, tmp4;
138 Real x1 = (*ex)[0], x2 = (*ex)[1], x3 = (*ex)[2];
139 Real v1 = (*ev)[0], v2 = (*ev)[1], v3 = (*ev)[2];
140 Real x1sqr = x1*x1, x1cub = x1sqr*x1, x1quar = x1cub*x1;
141 for ( uint i = 0; i <
u_size_; i++ ) {
143 tmp0 = std::pow(u-x2,x3);
144 tmp1 = std::pow(u-x2,x3-1);
145 tmp2 = std::pow(u-x2,2*(x3-1));
146 tmp3 = std::pow(u-x2,x3-2);
147 tmp4 = std::pow(u-x2,2*x3-1);
148 tmp = std::exp(-tmp0/x1);
150 f = -0.01*(Real)(i+1) + tmp;
152 df1 = tmp*tmp0/x1sqr;
153 df2 = tmp*x3*tmp1/x1;
154 df3 = tmp*tmp0*std::log(u-x2)/x1;
156 df11 = tmp0*tmp*(tmp0-2.0*x1)/x1quar;
157 df12 = x3*tmp1*tmp*(tmp0-x1)/x1cub;
158 df13 = tmp0*std::log(u-x2)*tmp*(x1-tmp0)/x1cub;
161 df22 = x3*x3*tmp2*tmp/(x1*x1) - (x3-1)*x3*tmp3*tmp/x1;
162 df23 = -x3*tmp4*std::log(u-x2)*tmp/x1sqr
163 +tmp1*tmp/x1 + x3*tmp1*std::log(u-x2)*tmp/x1;
167 df33 = tmp0*std::pow(std::log(u-x2),2)*tmp*(tmp0-x1)/x1sqr;
169 (*ehv)[0] += 2.0*(f*(df11*v1 + df12*v2 + df13*v3) + df1*(df1*v1 + df2*v2 + df3*v3));
170 (*ehv)[1] += 2.0*(f*(df21*v1 + df22*v2 + df23*v3) + df2*(df1*v1 + df2*v2 + df3*v3));
171 (*ehv)[2] += 2.0*(f*(df31*v1 + df32*v2 + df33*v3) + df3*(df1*v1 + df2*v2 + df3*v3));
186 Teuchos::RCP<std::vector<Real> > scale = Teuchos::rcp(
new std::vector<Real>(n,0.0));
187 (*scale)[0] = 1.e-4; (*scale)[1] = 1.e-2; (*scale)[2] = 1.0;
190 Teuchos::RCP<std::vector<Real> > x0p = Teuchos::rcp(
new std::vector<Real>(n,0.0));
191 (*x0p)[0] = 100.0; (*x0p)[1] = 12.5; (*x0p)[2] = 3.0;
195 Teuchos::RCP<std::vector<Real> > xp = Teuchos::rcp(
new std::vector<Real>(n,0.0));
196 (*xp)[0] = 50.0; (*xp)[1] = 25.0; (*xp)[2] = 1.5;
203 Teuchos::RCP<std::vector<Real> > lp = Teuchos::rcp(
new std::vector<Real>(n,0.0));
204 (*lp)[0] = 0.1; (*lp)[1] = 0.0; (*lp)[2] = 0.0;
206 Teuchos::RCP<std::vector<Real> > up = Teuchos::rcp(
new std::vector<Real>(n,0.0));
207 (*up)[0] = 100.0; (*up)[1] = 25.6; (*up)[2] = 5.0;
Provides the interface to evaluate objective functions.
Provides the std::vector implementation of the ROL::Vector interface that handles scalings in the inn...
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.
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
void gradient(Vector< Real > &g, const Vector< Real > &x, Real &tol)
Compute gradient.
W. Hock and K. Schittkowski 25th test function.
Provides the interface to apply upper and lower bound constraints.
Provides the std::vector implementation of the ROL::Vector interface that handles scalings in the inn...
void getHS25(Teuchos::RCP< Objective< Real > > &obj, Teuchos::RCP< BoundConstraint< Real > > &con, Teuchos::RCP< Vector< Real > > &x0, Teuchos::RCP< Vector< Real > > &x)