49 #include "Teuchos_getConst.hpp" 56 int main(
int argc,
char *argv[]) {
61 typedef std::vector<RealT> vec;
63 typedef RCP<ROL::Vector<RealT> > RCPV;
65 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
67 int iprint = argc - 1;
68 RCP<std::ostream> outStream;
69 Teuchos::oblackholestream bhs;
71 outStream = rcp(&std::cout,
false);
73 outStream = rcp(&bhs,
false);
82 RCP<vec> xopt_rcp = rcp(
new vec(xopt_dim,1.0) );
83 RCP<vec> dopt_rcp = rcp(
new vec(xopt_dim,0.0) );
84 RCP<vec> vopt_rcp = rcp(
new vec(xopt_dim,0.0) );
86 RCP<vec> vic_rcp = rcp(
new vec(ci_dim,0.0) );
87 RCP<vec> vil_rcp = rcp(
new vec(ci_dim,0.0) );
90 RCP<vec> xs_rcp = rcp(
new vec(ci_dim,1.0) );
91 RCP<vec> vs_rcp = rcp(
new vec(ci_dim,0.0) );
92 RCP<vec> ds_rcp = rcp(
new vec(ci_dim,0.0) );
94 RealT left = -1e0, right = 1e0;
95 for (
int i=0; i<xopt_dim; i++) {
96 (*dopt_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
97 (*vopt_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
100 for (
int i=0; i<ci_dim; i++) {
101 (*vic_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
102 (*vil_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
103 (*vs_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
104 (*ds_rcp)[i] = ( (
RealT)rand() / (
RealT)RAND_MAX ) * (right - left) + left;
107 RCPV xopt = rcp(
new SV(xopt_rcp) );
108 RCPV dopt = rcp(
new SV(dopt_rcp) );
109 RCPV vopt = rcp(
new SV(vopt_rcp) );
110 RCPV vic = rcp(
new SV(vic_rcp) );
111 RCPV vil = rcp(
new SV(vil_rcp) );
112 RCPV xs = rcp(
new SV(xs_rcp) );
113 RCPV vs = rcp(
new SV(vs_rcp) );
114 RCPV ds = rcp(
new SV(ds_rcp) );
130 RCP<ROL::Objective<RealT> > ipobj =
133 RCP<ROL::EqualityConstraint<RealT> > incon_hs29 =
137 RCP<ROL::EqualityConstraint<RealT> > ipcon =
140 *outStream <<
"\nChecking individual objectives and constraints separately\n" << std::endl;
142 *outStream <<
"\nObjective\n" << std::endl;
143 obj_hs29->checkGradient(*xopt,*dopt,
true,*outStream);
144 obj_hs29->checkHessVec(*xopt,*vopt,
true,*outStream);
146 *outStream <<
"\nInequality Constraint\n" << std::endl;
147 incon_hs29->checkApplyJacobian(*xopt,*vopt,*vic,
true,*outStream);
148 incon_hs29->checkApplyAdjointJacobian(*xopt,*vil,*vic,*xopt,
true,*outStream);
149 incon_hs29->checkApplyAdjointHessian(*xopt,*vil,*dopt,*xopt,
true,*outStream);
151 *outStream <<
"\nCheck Interior Point objective\n" << std::endl;
152 ipobj->checkGradient(*x,*d,
true,*outStream);
153 ipobj->checkHessVec(*x,*v,
true,*outStream);
155 *outStream <<
"\nCheck Interior Point constraints\n" << std::endl;
156 ipcon->checkApplyJacobian(*x,*v,*vc,
true,*outStream);
157 ipcon->checkApplyAdjointJacobian(*x,*vl,*vc,*x,
true,*outStream);
158 ipcon->checkApplyAdjointHessian(*x,*vl,*d,*x,
true,*outStream);
161 catch (std::logic_error err) {
162 *outStream << err.what() <<
"\n";
167 std::cout <<
"End Result: TEST FAILED\n";
169 std::cout <<
"End Result: TEST PASSED\n";
Contains definitions for W. Hock and K. Schittkowski 32nd test problem which contains only inequality...
Has both inequality and equality constraints. Treat inequality constraint as equality with slack vari...
Teuchos::RCP< Vector< Real > > CreatePartitionedVector(Teuchos::RCP< Vector< Real > > &a)
Provides the std::vector implementation of the ROL::Vector interface.
int main(int argc, char *argv[])
Adds barrier term to generic objective.
Log barrier objective for interior point methods.