00001 // Copyright (C) 2005, 2007 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpCGSearchDirCalc.hpp 551 2005-10-27 00:31:28Z 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 00017 namespace Ipopt 00018 { 00019 00024 class CGSearchDirCalculator : public SearchDirectionCalculator 00025 { 00026 public: 00030 CGSearchDirCalculator(const SmartPtr<PDSystemSolver>& pd_solver); 00031 00033 virtual ~CGSearchDirCalculator(); 00035 00037 virtual bool InitializeImpl(const OptionsList& options, 00038 const std::string& prefix); 00039 00043 virtual bool ComputeSearchDirection(); 00044 00047 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00049 00050 private: 00060 CGSearchDirCalculator(); 00061 00063 CGSearchDirCalculator(const CGSearchDirCalculator&); 00064 00066 void operator=(const CGSearchDirCalculator&); 00068 00075 Number penalty_init_min_; 00077 Number penalty_init_max_; 00079 Number penalty_max_; 00080 00081 00082 00085 Number pen_des_fact_; 00086 00088 bool penalty_backward_; 00089 00092 Number kappa_x_dis_; 00093 Number kappa_y_dis_; 00094 Number vartheta_; 00095 Number delta_y_max_; 00096 Number fast_des_fact_; 00097 Number pen_init_fac_; 00098 00101 bool never_use_fact_cgpen_direction_; 00102 00104 Index nonmonotone_pen_update_counter_; 00106 00109 SmartPtr<PDSystemSolver> pd_solver_; 00111 }; 00112 00113 } // namespace Ipopt 00114 00115 #endif