ROL
step/test_11.cpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Rapid Optimization Library (ROL) Package
4//
5// Copyright 2014 NTESS and the ROL contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
14#include "Teuchos_GlobalMPISession.hpp"
15
16#include "ROL_HS24.hpp"
17#include "ROL_Algorithm.hpp"
19
20int main(int argc, char *argv[]) {
21
22
23
24
25 typedef double RealT;
26
27 typedef ROL::Vector<RealT> V;
29 typedef ROL::Objective<RealT> OBJ;
30 typedef ROL::InequalityConstraint<RealT> INEQ;
31
32
33
34 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
35
36 int iprint = argc - 1;
37 ROL::Ptr<std::ostream> outStream;
38 ROL::nullstream bhs; // outputs nothing
39 if (iprint > 0)
40 outStream = ROL::makePtrFromRef(std::cout);
41 else
42 outStream = ROL::makePtrFromRef(bhs);
43
44 int errorFlag = 0;
45
46 try {
47
49 ROL::Ptr<V> x = HS24.getInitialGuess();
50 ROL::Ptr<V> xs = HS24.getSolution();
51 ROL::Ptr<V> inmul = HS24.getInequalityMultiplier();
52
53 ROL::Ptr<BC> bnd = HS24.getBoundConstraint();
54 ROL::Ptr<OBJ> obj = HS24.getObjective();
55 ROL::Ptr<INEQ> incon = HS24.getInequalityConstraint();
56 ROL::Ptr<BC> inbnd = HS24.getSlackBoundConstraint();
57
58
59
60 std::string stepname = "Interior Point";
61
62 RealT mu = 0.1; // Initial penalty parameter
63 RealT factor = 0.1; // Penalty reduction factor
64
65 // Set solver parameters
66 parlist->sublist("Step").sublist("Interior Point").set("Initial Barrier Penalty",mu);
67 parlist->sublist("Step").sublist("Interior Point").set("Minimium Barrier Penalty",1e-8);
68 parlist->sublist("Step").sublist("Interior Point").set("Barrier Penalty Reduction Factor",factor);
69 parlist->sublist("Step").sublist("Interior Point").set("Subproblem Iteration Limit",30);
70
71 parlist->sublist("Step").sublist("Composite Step").sublist("Optimality System Solver").set("Nominal Relative Tolerance",1.e-4);
72 parlist->sublist("Step").sublist("Composite Step").sublist("Optimality System Solver").set("Fix Tolerance",true);
73 parlist->sublist("Step").sublist("Composite Step").sublist("Tangential Subproblem Solver").set("Iteration Limit",20);
74 parlist->sublist("Step").sublist("Composite Step").sublist("Tangential Subproblem Solver").set("Relative Tolerance",1e-2);
75 parlist->sublist("Step").sublist("Composite Step").set("Output Level",0);
76
77 parlist->sublist("Status Test").set("Gradient Tolerance",1.e-12);
78 parlist->sublist("Status Test").set("Constraint Tolerance",1.e-8);
79 parlist->sublist("Status Test").set("Step Tolerance",1.e-8);
80 parlist->sublist("Status Test").set("Iteration Limit",100);
81
82 // Define Optimization Problem
83 ROL::OptimizationProblem<RealT> problem( obj, x, bnd, incon, inmul, inbnd );
84
85 ROL::Ptr<V> d = x->clone();
86 RandomizeVector(*d);
87
88// problem.checkObjectiveGradient(*d);
89// problem.checkObjectiveHessVec(*d);
90
91 // Define algorithm.
92 ROL::Ptr<ROL::Algorithm<RealT> > algo;
93 algo = ROL::makePtr<ROL::Algorithm<RealT>>(stepname,*parlist);
94
95 algo->run(problem,true,*outStream);
96
97 x->axpy(-1.0,*xs);
98
99 if( x->norm()>= 1e-4 )
100 {
101 ++errorFlag;
102 }
103
104 }
105 catch (std::logic_error& err) {
106 *outStream << err.what() << "\n";
107 errorFlag = -1000;
108 }; // end try
109
110 if (errorFlag != 0)
111 std::cout << "End Result: TEST FAILED\n";
112 else
113 std::cout << "End Result: TEST PASSED\n";
114
115 return 0;
116
117
118
119}
Vector< Real > V
Contains definitions for W. Hock and K. Schittkowski 24th test problem which contains bound and inequ...
Provides the interface to apply upper and lower bound constraints.
Provides the interface to evaluate objective functions.
Defines the linear algebra or vector space interface.
Ptr< BoundConstraint< Real > > getSlackBoundConstraint(void) const
Definition ROL_HS24.hpp:181
Ptr< Constraint< Real > > getInequalityConstraint(void) const
Definition ROL_HS24.hpp:143
Ptr< Vector< Real > > getInitialGuess(void) const
Definition ROL_HS24.hpp:160
Ptr< Vector< Real > > getInequalityMultiplier(void) const
Definition ROL_HS24.hpp:176
Ptr< Vector< Real > > getSolution(const int i=0) const
Definition ROL_HS24.hpp:168
Ptr< Objective< Real > > getObjective(void) const
Definition ROL_HS24.hpp:139
Ptr< BoundConstraint< Real > > getBoundConstraint(void) const
Definition ROL_HS24.hpp:147
int main(int argc, char *argv[])