58 #include "ROL_Sacado_Objective_SimOpt.hpp"
59 #include "ROL_Sacado_EqualityConstraint_SimOpt.hpp"
67 #include "Teuchos_oblackholestream.hpp"
68 #include "Teuchos_GlobalMPISession.hpp"
69 #include "Teuchos_XMLParameterListHelpers.hpp"
77 int main(
int argc,
char **argv)
81 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
84 int iprint = argc - 1;
85 Teuchos::RCP<std::ostream> outStream;
86 Teuchos::oblackholestream bhs;
88 outStream = Teuchos::rcp(&std::cout,
false);
90 outStream = Teuchos::rcp(&bhs,
false);
98 Teuchos::ParameterList parlist;
99 parlist.set(
"Nominal SQP Optimality Solver Tolerance", 1.e-2);
108 Teuchos::RCP<NodalBasis<RealT> > basisp = Teuchos::rcp(
new NodalBasis<RealT> (ni,nq) );
111 Teuchos::RCP<std::vector<RealT> > u_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,0));
112 Teuchos::RCP<std::vector<RealT> > z_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,0));
115 Teuchos::RCP<std::vector<RealT> > yu_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,0));
116 Teuchos::RCP<std::vector<RealT> > yz_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,0));
119 Teuchos::RCP<std::vector<RealT> > gu_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,0));
120 Teuchos::RCP<std::vector<RealT> > gz_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,0));
123 Teuchos::RCP<std::vector<RealT> > c_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,1.0));
124 Teuchos::RCP<std::vector<RealT> > l_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,1.0));
128 for(
int i=0; i<ni; ++i) {
146 Teuchos::RCP<Vector<RealT> > zp = Teuchos::rcp(&z,
false);
147 Teuchos::RCP<Vector<RealT> > up = Teuchos::rcp(&u,
false);
148 Teuchos::RCP<Vector<RealT> > yzp = Teuchos::rcp(&yz,
false);
149 Teuchos::RCP<Vector<RealT> > yup = Teuchos::rcp(&yu,
false);
150 Teuchos::RCP<Vector<RealT> > gzp = Teuchos::rcp(&gz,
false);
151 Teuchos::RCP<Vector<RealT> > gup = Teuchos::rcp(&gu,
false);
154 Teuchos::RCP<std::vector<RealT> > u_targ_rcp = Teuchos::rcp(
new std::vector<RealT>(ni,0));
156 for(
int i=0;i<ni;++i) {
157 (*u_targ_rcp)[i] = tanh(2.0*((*basisp->xip_)[i]-2.5));
170 Sacado_Objective_SimOpt<RealT,QuadraticTracking> obj(quadtrack);
178 obj.checkGradient(x,x,y,
true,*outStream);
179 obj.checkHessVec(x,x,y,
true,*outStream);
180 constr.checkApplyJacobian(x,y,c,
true,*outStream);
181 constr.checkApplyAdjointJacobian(x,yu,c,x,
true,*outStream);
182 constr.checkApplyAdjointHessian(x,yu,y,x,
true,*outStream);
184 constr.checkInverseJacobian_1(c,yu,u,z,
true,*outStream);
185 }
catch (
const std::logic_error &e) {
186 *outStream << e.what();
189 constr.checkInverseAdjointJacobian_1(c,yu,u,z,
true,*outStream);
190 }
catch (
const std::logic_error &e) {
191 *outStream << e.what();
194 constr.checkSolve(u,z,c,
true,*outStream);
195 }
catch (
const std::logic_error &e) {
196 *outStream << e.what();
208 algo.
run(x,g,l,c,obj,constr,
true,*outStream);
211 catch (std::logic_error err) {
212 *outStream << err.what() <<
"\n";
217 std::cout <<
"End Result: TEST FAILED\n";
219 std::cout <<
"End Result: TEST PASSED\n";
Defines the linear algebra or vector space interface for simulation-based optimization.
Inherit and add method for applying the inverse partial constraint Jacobian and its adjoint...
Provides the std::vector implementation of the ROL::Vector interface.
virtual std::vector< std::string > run(Vector< Real > &x, Objective< Real > &obj, bool print=false, std::ostream &outStream=std::cout)
Run algorithm on unconstrained problems (Type-U). This is the primary Type-U interface.
Implements the computation of optimization steps with composite-step trust-region SQP methods...
Compute the constraint vector -u'' + exp(u) - z with natural boundary conditions. ...
int main(int argc, char **argv)