MOOCHO (Single Doxygen Collection) Version of the Day
ConstrainedOptPack_QPSolverRelaxedLOQO.hpp
Go to the documentation of this file.
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 #ifdef CONSTRAINED_OPTIMIZATION_PACK_USE_LOQO
00030 
00031 #ifndef QP_SOLVER_RELAXED_LOQO_H
00032 #define QP_SOLVER_RELAXED_LOQO_H
00033 
00034 #include <vector>
00035 
00036 #include "ConstrainedOptPack_QPSolverRelaxed.hpp"
00037 #include "DenseLinAlgPack_DVectorClass.hpp"
00038 #include "DenseLinAlgPack_DMatrixClass.hpp"
00039 #include "Teuchos_StandardMemberCompositionMacros.hpp"
00040 #include "Teuchos_StandardCompositionMacros.hpp"
00041 
00042 namespace ConstrainedOptPack {
00043 
00050 class QPSolverRelaxedLOQO : public QPSolverRelaxed
00051 {
00052 public:
00053 
00061   class InitLOQOHessianJacobian {
00062   public:
00063 
00065     virtual ~InitLOQOHessianJacobian() {}
00066 
00105     virtual void init_hess_jacob(
00106       const MatrixOp& G, const value_type bigM
00107       , const MatrixOp* E, BLAS_Cpp::Transp trans_E, const DVectorSlice* b
00108       , const int loqo_b_stat[], const size_type num_inequal
00109       , const MatrixOp* F, BLAS_Cpp::Transp trans_F, const DVectorSlice* f
00110       , void* loqo_lp
00111       ) const;
00112 
00113   }; // end class InitLOQOHessianJacobian
00114 
00117   STANDARD_COMPOSITION_MEMBERS( InitLOQOHessianJacobian, init_hess_jacob );
00118 
00121   STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, bigM );
00122 
00126   STANDARD_MEMBER_COMPOSITION_MEMBERS( value_type, nonbinding_lag_mult );
00127 
00129   QPSolverRelaxedLOQO(
00130     const init_hess_jacob_ptr_t    init_hess_jacob      = new  InitLOQOHessianJacobian()
00131     ,value_type                     bigM                 = 1e+10
00132     ,value_type                     nonbinding_lag_mult  = 1e-12
00133     );
00134 
00136   ~QPSolverRelaxedLOQO();
00137 
00138   // /////////////////////////////////
00139   // Overridden from QPSolverRelaxed
00140 
00142   QPSolverStats get_qp_stats() const;
00143 
00145   void release_memory();
00146 
00147 protected:
00148 
00149   // /////////////////////////////////
00150   // Overridden from QPSolverRelaxed
00151 
00153   QPSolverStats::ESolutionType imp_solve_qp(
00154       std::ostream* out, EOutputLevel olevel, ERunTests test_what
00155     , const DVectorSlice& g, const MatrixOp& G
00156     , value_type etaL
00157     , const SpVectorSlice& dL, const SpVectorSlice& dU
00158     , const MatrixOp* E, BLAS_Cpp::Transp trans_E, const DVectorSlice* b
00159       , const SpVectorSlice* eL, const SpVectorSlice* eU
00160     , const MatrixOp* F, BLAS_Cpp::Transp trans_F, const DVectorSlice* f
00161     , value_type* obj_d
00162     , value_type* eta, DVectorSlice* d
00163     , SpVector* nu
00164     , SpVector* mu, DVectorSlice* Ed
00165     , DVectorSlice* lambda, DVectorSlice* Fd
00166     );
00167 
00168 private:
00169 
00170   // //////////////////////////////////////////////////////////////
00171   // Private types
00172 
00173   // //////////////////////////////////////////////////////////////
00174   // Private Data Members.
00175 
00176   QPSolverStats     qp_stats_;
00177 
00178   // ////////////////////////////
00179   // Private member functions
00180 
00181 };  // end class QPSolverRelaxedLOQO
00182 
00183 } // end namespace ConstrainedOptimizationPackTypes
00184 
00185 #endif  // QP_SOLVER_RELAXED_QPKWIK_H
00186 
00187 #endif // CONSTRAINED_OPTIMIZATION_PACK_USE_LOQO
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines