- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.7.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 Common Public License.
    00004 //
    00005 // $Id: IpCGSearchDirCalc.hpp 1324 2008-09-16 14:19:26Z 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