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 #ifndef __IPCGSEARCHDIRCALC_HPP__ 00010 #define __IPCGSEARCHDIRCALC_HPP__ 00011 00012 #include "IpSearchDirCalculator.hpp" 00013 #include "IpPDSystemSolver.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00022 class CGSearchDirCalculator : public SearchDirectionCalculator 00023 { 00024 public: 00028 CGSearchDirCalculator(const SmartPtr<PDSystemSolver>& pd_solver); 00029 00031 virtual ~CGSearchDirCalculator(); 00033 00035 virtual bool InitializeImpl(const OptionsList& options, 00036 const std::string& prefix); 00037 00041 virtual bool ComputeSearchDirection(); 00042 00045 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00047 00048 private: 00058 CGSearchDirCalculator(); 00059 00061 CGSearchDirCalculator(const CGSearchDirCalculator&); 00062 00064 void operator=(const CGSearchDirCalculator&); 00066 00073 Number penalty_init_min_; 00075 Number penalty_init_max_; 00078 bool never_use_fact_cgpen_direction_; 00080 00083 SmartPtr<PDSystemSolver> pd_solver_; 00085 }; 00086 00087 } // namespace Ipopt 00088 00089 #endif