# 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 Eclipse Public License.
    00004 //
    00005 // $Id: IpInexactSearchDirCalc.hpp 1861 2010-12-21 21:34:47Z andreasw $
    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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines