Ipopt
trunk
|
00001 // Copyright (C) 2005, 2009 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // $Id$ 00006 // 00007 // Authors: Andreas Waechter IBM 2005-10-13 00008 00009 #ifndef __IPPDSEARCHDIRCALC_HPP__ 00010 #define __IPPDSEARCHDIRCALC_HPP__ 00011 00012 #include "IpSearchDirCalculator.hpp" 00013 #include "IpPDSystemSolver.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00021 class PDSearchDirCalculator : public SearchDirectionCalculator 00022 { 00023 public: 00027 PDSearchDirCalculator(const SmartPtr<PDSystemSolver>& pd_solver); 00028 00030 virtual ~PDSearchDirCalculator(); 00032 00034 virtual bool InitializeImpl(const OptionsList& options, 00035 const std::string& prefix); 00036 00039 virtual bool ComputeSearchDirection(); 00040 00043 static void RegisterOptions(const SmartPtr<RegisteredOptions>& roptions); 00045 00047 SmartPtr<PDSystemSolver> PDSolver() 00048 { 00049 return pd_solver_; 00050 } 00051 00052 private: 00062 PDSearchDirCalculator(); 00063 00065 PDSearchDirCalculator(const PDSearchDirCalculator&); 00066 00068 void operator=(const PDSearchDirCalculator&); 00070 00073 SmartPtr<PDSystemSolver> pd_solver_; 00075 00081 bool fast_step_computation_; 00085 bool mehrotra_algorithm_; 00087 00088 }; 00089 00090 } // namespace Ipopt 00091 00092 #endif