/build/buildd/coinor-ipopt-3.10.1/Ipopt/src/contrib/CGPenalty/IpCGSearchDirCalc.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2005, 2008 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Eclipse Public License.
00004 //
00005 // $Id: IpCGSearchDirCalc.hpp 1861 2010-12-21 21:34:47Z andreasw $
00006 //
00007 // Authors:  Andreas Waechter            IBM    2005-10-13
00008 //
00009 //           Lifeng Chen/Zaiwen Wen      Columbia Univ
00010 
00011 #ifndef __IPCGSEARCHDIRCALC_HPP__
00012 #define __IPCGSEARCHDIRCALC_HPP__
00013 
00014 #include "IpSearchDirCalculator.hpp"
00015 #include "IpPDSystemSolver.hpp"
00016 #include "IpCGPenaltyCq.hpp"
00017 
00018 namespace Ipopt
00019 {
00020 
00025   class CGSearchDirCalculator : public SearchDirectionCalculator
00026   {
00027   public:
00031     CGSearchDirCalculator(const SmartPtr<PDSystemSolver>& pd_solver);
00032 
00034     virtual ~CGSearchDirCalculator();
00036 
00038     virtual bool InitializeImpl(const OptionsList& options,
00039                                 const std::string& prefix);
00040 
00044     virtual bool ComputeSearchDirection();
00045 
00048     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00050 
00051   private:
00061     CGSearchDirCalculator();
00062 
00064     CGSearchDirCalculator(const CGSearchDirCalculator&);
00065 
00067     void operator=(const CGSearchDirCalculator&);
00069 
00071     CGPenaltyData& CGPenData()
00072     {
00073       CGPenaltyData& cg_pen_data =
00074         static_cast<CGPenaltyData&>(IpData().AdditionalData());
00075       DBG_ASSERT(dynamic_cast<CGPenaltyData*>(&IpData().AdditionalData()));
00076       return cg_pen_data;
00077     }
00078 
00080     CGPenaltyCq& CGPenCq()
00081     {
00082       CGPenaltyCq& cg_pen_cq =
00083         static_cast<CGPenaltyCq&>(IpCq().AdditionalCq());
00084       DBG_ASSERT(dynamic_cast<CGPenaltyCq*>(&IpCq().AdditionalCq()));
00085       return cg_pen_cq;
00086     }
00087 
00094     Number penalty_init_min_;
00096     Number penalty_init_max_;
00098     Number penalty_max_;
00099 
00100 
00101 
00104     Number pen_des_fact_;
00105 
00107     bool penalty_backward_;
00108 
00111     Number kappa_x_dis_;
00112     Number kappa_y_dis_;
00113     Number vartheta_;
00114     Number delta_y_max_;
00115     Number fast_des_fact_;
00116     Number pen_init_fac_;
00117 
00120     bool never_use_fact_cgpen_direction_;
00121 
00123     Index nonmonotone_pen_update_counter_;
00125 
00128     SmartPtr<PDSystemSolver> pd_solver_;
00130   };
00131 
00132 } // namespace Ipopt
00133 
00134 #endif