// Copyright (C) 2005, 2006 International Business Machines and others. // All Rights Reserved. // This code is published under the Eclipse Public License. // // Authors: Andreas Waechter IBM 2005-12-26 #ifndef __IPHESSIANUPDATER_HPP__ #define __IPHESSIANUPDATER_HPP__ #include "IpAlgStrategy.hpp" namespace Ipopt { /** Abstract base class for objects responsible for updating the * Hessian information. * * This can be done using exact second * derivatives from the NLP, or by a quasi-Newton Option. The * result is put into the W field in IpData. */ class IPOPTLIB_EXPORT HessianUpdater: public AlgorithmStrategyObject { public: /**@name Constructors/Destructors */ ///@{ /** Default Constructor */ HessianUpdater() { } /** Destructor */ virtual ~HessianUpdater() { } ///@} /** overloaded from AlgorithmStrategyObject */ virtual bool InitializeImpl( const OptionsList& options, const std::string& prefix ) = 0; /** Update the Hessian based on the current information in IpData, * and possibly on information from previous calls. */ virtual void UpdateHessian() = 0; private: /**@name Default Compiler Generated Methods * (Hidden to avoid implicit creation/calling). * * These methods are not implemented and * we do not want the compiler to implement * them for us, so we declare them private * and do not define them. This ensures that * they will not be implicitly created/called. */ ///@{ /** Copy Constructor */ HessianUpdater( const HessianUpdater& ); /** Default Assignment Operator */ void operator=( const HessianUpdater& ); ///@} }; } // namespace Ipopt #endif