- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.7.1/Ipopt/src/Algorithm/Inexact/IpInexactNewtonNormal.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: IpInexactNewtonNormal.hpp 1390 2009-01-06 16:55:52Z andreasw $
    00006 //
    00007 // Authors:  Andreas Waechter            IBM    2008-09-05
    00008
    00009 #ifndef __IPINEXACTNEWTONNORMAL_HPP__
    00010 #define __IPINEXACTNEWTONNORMAL_HPP__
    00011
    00012 #include "IpAlgStrategy.hpp"
    00013 #include "IpAugSystemSolver.hpp"
    00014 #include "IpInexactCq.hpp"
    00015
    00016 namespace Ipopt
    00017 {
    00021   class InexactNewtonNormalStep : public AlgorithmStrategyObject
    00022   {
    00023   public:
    00027     InexactNewtonNormalStep(SmartPtr<AugSystemSolver> aug_solver);
    00028
    00030     virtual ~InexactNewtonNormalStep();
    00032
    00034     virtual bool InitializeImpl(const OptionsList& options,
    00035                                 const std::string& prefix);
    00036
    00041     virtual bool ComputeNewtonNormalStep(Vector& newton_x, Vector& newton_s);
    00042
    00045     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
    00047
    00048   protected:
    00050     InexactData& InexData()
    00051     {
    00052       InexactData& inexact_data =
    00053         static_cast<InexactData&>(IpData().AdditionalData());
    00054       DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
    00055       return inexact_data;
    00056     }
    00057
    00059     InexactCq& InexCq()
    00060     {
    00061       InexactCq& inexact_cq =
    00062         static_cast<InexactCq&>(IpCq().AdditionalCq());
    00063       DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
    00064       return inexact_cq;
    00065     }
    00066
    00067   private:
    00077     InexactNewtonNormalStep();
    00078
    00080     InexactNewtonNormalStep(const InexactNewtonNormalStep&);
    00081
    00083     void operator=(const InexactNewtonNormalStep&);
    00085
    00087     SmartPtr<AugSystemSolver> aug_solver_;
    00088   };
    00089
    00090 } // namespace Ipopt
    00091
    00092 #endif