|
ConstrainedOptPack: C++ Tools for Constrained (and Unconstrained) Optimization Version of the Day
|
00001 // @HEADER 00002 // *********************************************************************** 00003 // 00004 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization 00005 // Copyright (2003) Sandia Corporation 00006 // 00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00008 // license for use of this work by or on behalf of the U.S. Government. 00009 // 00010 // This library is free software; you can redistribute it and/or modify 00011 // it under the terms of the GNU Lesser General Public License as 00012 // published by the Free Software Foundation; either version 2.1 of the 00013 // License, or (at your option) any later version. 00014 // 00015 // This library is distributed in the hope that it will be useful, but 00016 // WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 // Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00023 // USA 00024 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov) 00025 // 00026 // *********************************************************************** 00027 // @HEADER 00028 00029 #ifndef QP_SOLVER_RELAXED_TESTER_H 00030 #define QP_SOLVER_RELAXED_TESTER_H 00031 00032 #include "ConstrainedOptPack_QPSolverRelaxed.hpp" 00033 #include "Teuchos_StandardMemberCompositionMacros.hpp" 00034 00035 namespace ConstrainedOptPack { 00036 00133 class QPSolverRelaxedTester { 00134 public: 00135 00137 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, opt_warning_tol ); 00138 00140 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, opt_error_tol ); 00141 00143 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, feas_warning_tol ); 00144 00146 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, feas_error_tol ); 00147 00149 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, comp_warning_tol ); 00150 00152 STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, comp_error_tol ); 00153 00155 QPSolverRelaxedTester( 00156 value_type opt_warning_tol = 1e-10 00157 ,value_type opt_error_tol = 1e-5 00158 ,value_type feas_warning_tol = 1e-10 00159 ,value_type feas_error_tol = 1e-5 00160 ,value_type comp_warning_tol = 1e-10 00161 ,value_type comp_error_tol = 1e-5 00162 ); 00163 00165 virtual ~QPSolverRelaxedTester() {} 00166 00213 virtual bool check_optimality_conditions( 00214 QPSolverStats::ESolutionType solution_type 00215 ,const value_type infinite_bound 00216 ,std::ostream* out, bool print_all_warnings, bool print_vectors 00217 ,const Vector& g, const MatrixSymOp& G 00218 ,value_type etaL 00219 ,const Vector& dL, const Vector& dU 00220 ,const MatrixOp& E, BLAS_Cpp::Transp trans_E, const Vector& b 00221 ,const Vector& eL, const Vector& eU 00222 ,const MatrixOp& F, BLAS_Cpp::Transp trans_F, const Vector& f 00223 ,const value_type* obj_d 00224 ,const value_type* eta, const Vector* d 00225 ,const Vector* nu 00226 ,const Vector* mu, const Vector* Ed 00227 ,const Vector* lambda, const Vector* Fd 00228 ); 00229 00232 virtual bool check_optimality_conditions( 00233 QPSolverStats::ESolutionType solution_type 00234 ,const value_type infinite_bound 00235 ,std::ostream* out, bool print_all_warnings, bool print_vectors 00236 ,const Vector& g, const MatrixSymOp& G 00237 ,value_type etaL 00238 ,const Vector& dL, const Vector& dU 00239 ,const MatrixOp& E, BLAS_Cpp::Transp trans_E, const Vector& b 00240 ,const Vector& eL, const Vector& eU 00241 ,const value_type* obj_d 00242 ,const value_type* eta, const Vector* d 00243 ,const Vector* nu 00244 ,const Vector* mu, const Vector* Ed 00245 ); 00246 00249 virtual bool check_optimality_conditions( 00250 QPSolverStats::ESolutionType solution_type 00251 ,const value_type infinite_bound 00252 ,std::ostream* out, bool print_all_warnings, bool print_vectors 00253 ,const Vector& g, const MatrixSymOp& G 00254 ,value_type etaL 00255 ,const Vector& dL, const Vector& dU 00256 ,const MatrixOp& F, BLAS_Cpp::Transp trans_F, const Vector& f 00257 ,const value_type* obj_d 00258 ,const value_type* eta, const Vector* d 00259 ,const Vector* nu 00260 ,const Vector* lambda, const Vector* Fd 00261 ); 00262 00263 00267 virtual bool check_optimality_conditions( 00268 QPSolverStats::ESolutionType solution_type 00269 ,const value_type infinite_bound 00270 ,std::ostream* out, bool print_all_warnings, bool print_vectors 00271 ,const Vector& g, const MatrixSymOp& G 00272 ,const Vector& dL, const Vector& dU 00273 ,const value_type* obj_d 00274 ,const Vector* d 00275 ,const Vector* nu 00276 ); 00277 00282 virtual bool check_optimality_conditions( 00283 QPSolverStats::ESolutionType solution_type 00284 ,const value_type infinite_bound 00285 ,std::ostream* out, bool print_all_warnings, bool print_vectors 00286 ,const Vector& g, const MatrixSymOp& G 00287 ,value_type etaL 00288 ,const Vector* dL, const Vector* dU 00289 ,const MatrixOp* E, BLAS_Cpp::Transp trans_E, const Vector* b 00290 ,const Vector* eL, const Vector* eU 00291 ,const MatrixOp* F, BLAS_Cpp::Transp trans_F, const Vector* f 00292 ,const value_type* obj_d 00293 ,const value_type* eta, const Vector* d 00294 ,const Vector* nu 00295 ,const Vector* mu, const Vector* Ed 00296 ,const Vector* lambda, const Vector* Fd 00297 ); 00298 00299 protected: 00300 00306 virtual bool imp_check_optimality_conditions( 00307 QPSolverStats::ESolutionType solution_type 00308 ,const value_type infinite_bound 00309 ,std::ostream* out, bool print_all_warnings, bool print_vectors 00310 ,const Vector& g, const MatrixSymOp& G 00311 ,value_type etaL 00312 ,const Vector* dL, const Vector* dU 00313 ,const MatrixOp* E, BLAS_Cpp::Transp trans_E, const Vector* b 00314 ,const Vector* eL, const Vector* eU 00315 ,const MatrixOp* F, BLAS_Cpp::Transp trans_F, const Vector* f 00316 ,const value_type* obj_d 00317 ,const value_type* eta, const Vector* d 00318 ,const Vector* nu 00319 ,const Vector* mu, const Vector* Ed 00320 ,const Vector* lambda, const Vector* Fd 00321 ); 00322 00323 }; // end class QPSolverRelaxedTester 00324 00325 } // end namespace ConstrainedOptimizationPackTypes 00326 00327 #endif // QP_SOLVER_RELAXED_TESTER_H
1.7.4