14 #include "Teuchos_GlobalMPISession.hpp"
17 #include "ROL_InteriorPointPrimalDualResidual.hpp"
27 int main(
int argc,
char *argv[]) {
29 typedef std::vector<RealT> vector;
40 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
42 int iprint = argc - 1;
43 ROL::Ptr<std::ostream> outStream;
46 outStream = ROL::makePtrFromRef(std::cout);
48 outStream = ROL::makePtrFromRef(bhs);
63 ROL::Ptr<vector> xo_ptr = ROL::makePtr<vector>(xo_dim,0.0);
64 ROL::Ptr<vector> xs_ptr = ROL::makePtr<vector>(ci_dim,0.0);
65 ROL::Ptr<vector> xe_ptr = ROL::makePtr<vector>(ce_dim,0.0);
66 ROL::Ptr<vector> xi_ptr = ROL::makePtr<vector>(ci_dim,0.0);
68 ROL::Ptr<V> xo = ROL::makePtr<SV>(xo_ptr);
69 ROL::Ptr<V> xs = ROL::makePtr<SV>(xs_ptr);
70 ROL::Ptr<V> xe = ROL::makePtr<SV>(xe_ptr);
71 ROL::Ptr<V> xi = ROL::makePtr<SV>(xi_ptr);
83 ROL::Ptr<vector> vo_ptr = ROL::makePtr<vector>(xo_dim,0.0);
84 ROL::Ptr<vector> vs_ptr = ROL::makePtr<vector>(ci_dim,0.0);
85 ROL::Ptr<vector> ve_ptr = ROL::makePtr<vector>(ce_dim,0.0);
86 ROL::Ptr<vector> vi_ptr = ROL::makePtr<vector>(ci_dim,0.0);
88 ROL::Ptr<V> vo = ROL::makePtr<SV>(vo_ptr);
89 ROL::Ptr<V> vs = ROL::makePtr<SV>(vs_ptr);
90 ROL::Ptr<V> ve = ROL::makePtr<SV>(ve_ptr);
91 ROL::Ptr<V> vi = ROL::makePtr<SV>(vi_ptr);
103 ROL::Ptr<vector> ro_ptr = ROL::makePtr<vector>(xo_dim,0.0);
104 ROL::Ptr<vector> rs_ptr = ROL::makePtr<vector>(ci_dim,0.0);
105 ROL::Ptr<vector> re_ptr = ROL::makePtr<vector>(ce_dim,0.0);
106 ROL::Ptr<vector> ri_ptr = ROL::makePtr<vector>(ci_dim,0.0);
108 ROL::Ptr<V> ro = ROL::makePtr<SV>(vo_ptr);
109 ROL::Ptr<V> rs = ROL::makePtr<SV>(vs_ptr);
110 ROL::Ptr<V> re = ROL::makePtr<SV>(ve_ptr);
111 ROL::Ptr<V> ri = ROL::makePtr<SV>(vi_ptr);
122 ROL::Ptr<ROL::Objective<RealT> > obj_hs32 =
123 ROL::makePtr<ROL::ZOO::Objective_HS32<RealT>>();
125 ROL::Ptr<ROL::EqualityConstraint<RealT> > eqcon_hs32 =
126 ROL::makePtr<ROL::ZOO::EqualityConstraint_HS32<RealT>>();
128 ROL::Ptr<ROL::EqualityConstraint<RealT> > incon_hs32 =
129 ROL::makePtr<ROL::ZOO::InequalityConstraint_HS32<RealT>>();
132 *outStream <<
"Performing finite difference check on Primal-Dual KKT system"
137 PrimalDualResidual<RealT> con(obj_hs32,eqcon_hs32,incon_hs32, *x);
139 con.checkApplyJacobian(*x,*v,*r,
true,*outStream);
143 catch (std::logic_error& err) {
144 *outStream << err.what() <<
"\n";
149 std::cout <<
"End Result: TEST FAILED\n";
151 std::cout <<
"End Result: TEST PASSED\n";
typename PV< Real >::size_type size_type
ROL::Ptr< Vector< Real > > CreatePartitionedVector(const ROL::Ptr< Vector< Real >> &a)
void RandomizeVector(Vector< Real > &x, const Real &lower=0.0, const Real &upper=1.0)
Fill a ROL::Vector with uniformly-distributed random numbers in the interval [lower,upper].
Defines the linear algebra or vector space interface.
Express the Primal-Dual Interior Point gradient as an equality constraint.
Provides the ROL::Vector interface for scalar values, to be used, for example, with scalar constraint...
Contains definitions for W. Hock and K. Schittkowski 32nd test problem which contains both inequality...
basic_nullstream< char, char_traits< char >> nullstream
int main(int argc, char *argv[])