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: IpWarmStartIterateInitializer.hpp 759 2006-07-07 03:07:08Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2005-04-01 00008 00009 #ifndef __IPWARMSTARTITERATEINITIALIZER_HPP__ 00010 #define __IPWARMSTARTITERATEINITIALIZER_HPP__ 00011 00012 #include "IpIterateInitializer.hpp" 00013 #include "IpEqMultCalculator.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00020 class WarmStartIterateInitializer: public IterateInitializer 00021 { 00022 public: 00026 WarmStartIterateInitializer(); 00027 00029 virtual ~WarmStartIterateInitializer() 00030 {} 00032 00034 virtual bool InitializeImpl(const OptionsList& options, 00035 const std::string& prefix); 00036 00039 virtual bool SetInitialIterates(); 00040 00043 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00045 private: 00055 WarmStartIterateInitializer(const WarmStartIterateInitializer&); 00056 00058 void operator=(const WarmStartIterateInitializer&); 00060 00064 Number warm_start_bound_push_; 00066 Number warm_start_bound_frac_; 00068 Number warm_start_mult_bound_push_; 00073 Number warm_start_mult_init_max_; 00076 Number warm_start_target_mu_; 00079 bool warm_start_entire_iterate_; 00081 00084 void process_target_mu(Number factor, 00085 const Vector& curr_vars, 00086 const Vector& curr_slacks, 00087 const Vector& curr_mults, 00088 const Matrix& P, 00089 SmartPtr<const Vector>& ret_vars, 00090 SmartPtr<const Vector>& ret_mults); 00091 00092 void adapt_to_target_mu(Vector& new_s, 00093 Vector& new_z, 00094 Number target_mu); 00096 }; 00097 00098 } // namespace Ipopt 00099 00100 #endif