00001 // Copyright (C) 2004, 2006 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpRestoIterateInitializer.hpp 759 2006-07-07 03:07:08Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-09-24 00008 00009 #ifndef __IPRESTOITERATEINITIALIZER_HPP__ 00010 #define __IPRESTOITERATEINITIALIZER_HPP__ 00011 00012 #include "IpIterateInitializer.hpp" 00013 #include "IpEqMultCalculator.hpp" 00014 00015 namespace Ipopt 00016 { 00022 class RestoIterateInitializer: public IterateInitializer 00023 { 00024 public: 00030 RestoIterateInitializer 00031 (const SmartPtr<EqMultiplierCalculator>& eq_mult_calculator); 00032 00034 virtual ~RestoIterateInitializer() 00035 {} 00037 00039 virtual bool InitializeImpl(const OptionsList& options, 00040 const std::string& prefix); 00041 00044 virtual bool SetInitialIterates(); 00045 00048 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00050 00051 private: 00061 RestoIterateInitializer(); 00062 00064 RestoIterateInitializer(const RestoIterateInitializer&); 00065 00067 void operator=(const RestoIterateInitializer&); 00069 00075 Number constr_mult_init_max_; 00077 00080 SmartPtr<EqMultiplierCalculator> resto_eq_mult_calculator_; 00081 00086 void solve_quadratic(const Vector& a, const Vector& b, Vector& v); 00088 }; 00089 00090 } // namespace Ipopt 00091 00092 #endif