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: IpPDSearchDirCalc.hpp 549 2005-10-24 21:49:13Z andreasw $ 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 00046 private: 00056 PDSearchDirCalculator(); 00057 00059 PDSearchDirCalculator(const PDSearchDirCalculator&); 00060 00062 void operator=(const PDSearchDirCalculator&); 00064 00067 SmartPtr<PDSystemSolver> pd_solver_; 00069 00075 bool fast_step_computation_; 00079 bool mehrotra_algorithm_; 00081 00082 }; 00083 00084 } // namespace Ipopt 00085 00086 #endif