• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/tmp/buildd/coinor-ipopt-3.8.3/Ipopt/src/Algorithm/Inexact/IpInexactSearchDirCalc.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2008 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpInexactSearchDirCalc.hpp 1454 2009-05-13 17:32:38Z fecurt $
00006 //
00007 // Authors:  Andreas Waechter            IBM    2008-08-31
00008 
00009 #ifndef __IPINEXACTSEARCHDIRCALC_HPP__
00010 #define __IPINEXACTSEARCHDIRCALC_HPP__
00011 
00012 #include "IpSearchDirCalculator.hpp"
00013 #include "IpInexactCq.hpp"
00014 #include "IpInexactNormalStepCalc.hpp"
00015 #include "IpInexactPDSolver.hpp"
00016 
00017 namespace Ipopt
00018 {
00024   class InexactSearchDirCalculator : public SearchDirectionCalculator
00025   {
00026   public:
00030     InexactSearchDirCalculator(SmartPtr<InexactNormalStepCalculator> normal_step_calculator,
00031                                SmartPtr<InexactPDSolver> inexact_pd_solver);
00032 
00034     virtual ~InexactSearchDirCalculator();
00036 
00038     virtual bool InitializeImpl(const OptionsList& options,
00039                                 const std::string& prefix);
00040 
00045     virtual bool ComputeSearchDirection();
00046 
00049     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00051 
00052   private:
00062     InexactSearchDirCalculator();
00063 
00065     InexactSearchDirCalculator(const InexactSearchDirCalculator&);
00066 
00068     void operator=(const InexactSearchDirCalculator&);
00070 
00072     InexactData& InexData()
00073     {
00074       InexactData& inexact_data =
00075         static_cast<InexactData&>(IpData().AdditionalData());
00076       DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
00077       return inexact_data;
00078     }
00079 
00081     InexactCq& InexCq()
00082     {
00083       InexactCq& inexact_cq =
00084         static_cast<InexactCq&>(IpCq().AdditionalCq());
00085       DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
00086       return inexact_cq;
00087     }
00088 
00092     Number local_inf_Ac_tol_;
00094 
00097     SmartPtr<InexactNormalStepCalculator> normal_step_calculator_;
00098     SmartPtr<InexactPDSolver> inexact_pd_solver_;
00100 
00102     enum DecompositionTypeEnum
00103     {
00104       ALWAYS=0,
00105       ADAPTIVE,
00106       SWITCH_ONCE
00107     };
00109     DecompositionTypeEnum decomposition_type_;
00110   };
00111 
00112 } // namespace Ipopt
00113 
00114 #endif

Generated on Thu Jul 29 2010 19:56:08 by  doxygen 1.7.1