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 777 2006-08-11 19:33:48Z 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_slack_bound_push_; 00070 Number warm_start_slack_bound_frac_; 00072 Number warm_start_mult_bound_push_; 00077 Number warm_start_mult_init_max_; 00080 Number warm_start_target_mu_; 00083 bool warm_start_entire_iterate_; 00085 00088 void process_target_mu(Number factor, 00089 const Vector& curr_vars, 00090 const Vector& curr_slacks, 00091 const Vector& curr_mults, 00092 const Matrix& P, 00093 SmartPtr<const Vector>& ret_vars, 00094 SmartPtr<const Vector>& ret_mults); 00095 00096 void adapt_to_target_mu(Vector& new_s, 00097 Vector& new_z, 00098 Number target_mu); 00100 }; 00101 00102 } // namespace Ipopt 00103 00104 #endif