/home/coin/SVN-release/Ipopt-3.6.0/Ipopt/src/Algorithm/Inexact/IpInexactCq.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: IpInexactCq.hpp 1390 2009-01-06 16:55:52Z andreasw $
00006 //
00007 // Authors:  Andreas Waechter           IBM    2008-08-31
00008 //               derived from IpIpoptCalculatedQuantities.hpp
00009 
00010 #ifndef __IPINEXACTCQ_HPP__
00011 #define __IPINEXACTCQ_HPP__
00012 
00013 #include "IpIpoptCalculatedQuantities.hpp"
00014 #include "IpInexactData.hpp"
00015 
00016 namespace Ipopt
00017 {
00018 
00022   class InexactCq : public IpoptAdditionalCq
00023   {
00024   public:
00025 
00029     InexactCq(IpoptNLP* ip_nlp,
00030               IpoptData* ip_data,
00031               IpoptCalculatedQuantities* ip_cq);
00032 
00034     virtual ~InexactCq();
00036 
00040     bool Initialize(const Journalist& jnlst,
00041                     const OptionsList& options,
00042                     const std::string& prefix);
00043 
00046     static void RegisterOptions(const SmartPtr<RegisteredOptions>& roptions);
00048 
00053     SmartPtr<const Vector> curr_jac_cdT_times_curr_cdminuss();
00054 
00056     SmartPtr<const Vector> curr_scaling_slacks();
00057 
00059     SmartPtr<const Vector> curr_slack_scaled_d_minus_s();
00060 
00062     Number curr_scaled_Ac_norm();
00063 
00066     Number slack_scaled_norm(const Vector& x, const Vector &s);
00067 
00070     SmartPtr<const Vector> curr_W_times_vec_x(const Vector& vec_x);
00071 
00074     SmartPtr<const Vector> curr_W_times_vec_s(const Vector& vec_s);
00075 
00078     SmartPtr<const Vector> curr_Wu_x();
00079 
00082     SmartPtr<const Vector> curr_Wu_s();
00083 
00086     Number curr_uWu();
00087 
00090     SmartPtr<const Vector> curr_jac_times_normal_c();
00091 
00094     SmartPtr<const Vector> curr_jac_times_normal_d();
00095 
00096   private:
00106     InexactCq();
00107 
00109     InexactCq(const InexactCq&);
00110 
00112     void operator=(const InexactCq&);
00114 
00119     IpoptNLP* ip_nlp_;
00120     IpoptData* ip_data_;
00121     IpoptCalculatedQuantities* ip_cq_;
00123 
00125     InexactData& InexData()
00126     {
00127       InexactData& inexact_data =
00128         static_cast<InexactData&>(ip_data_->AdditionalData());
00129       DBG_ASSERT(dynamic_cast<InexactData*>(&ip_data_->AdditionalData()));
00130       return inexact_data;
00131     }
00132 
00135     CachedResults<SmartPtr<const Vector> > curr_jac_cdT_times_curr_cdminuss_cache_;
00136     CachedResults<SmartPtr<const Vector> > curr_scaling_slacks_cache_;
00137     CachedResults<SmartPtr<const Vector> > curr_slack_scaled_d_minus_s_cache_;
00138     CachedResults<Number> curr_scaled_Ac_norm_cache_;
00139     CachedResults<Number> slack_scaled_norm_cache_;
00140     CachedResults<SmartPtr<const Vector> > curr_W_times_vec_x_cache_;
00141     CachedResults<SmartPtr<const Vector> > curr_W_times_vec_s_cache_;
00142     CachedResults<SmartPtr<const Vector> > curr_Wu_x_cache_;
00143     CachedResults<SmartPtr<const Vector> > curr_Wu_s_cache_;
00144     CachedResults<Number> curr_uWu_cache_;
00145     CachedResults<SmartPtr<const Vector> > curr_jac_times_normal_c_cache_;
00146     CachedResults<SmartPtr<const Vector> > curr_jac_times_normal_d_cache_;
00148 
00150     Number slack_scale_max_;
00151   };
00152 
00153 } // namespace Ipopt
00154 
00155 #endif

Generated on Thu Apr 30 03:04:06 2009 by  doxygen 1.4.7