00001 // Copyright (C) 2007 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpIpoptCalculatedQuantities.hpp 988 2007-06-01 21:57:27Z andreasw $ 00006 // 00007 // Authors: Andreas Waechter IBM 2007-06-04 00008 // derived from IpIpoptCalculatedQuantities.hpp 00009 00010 #ifndef __IPCGPENALTYCQ_HPP__ 00011 #define __IPCGPENALTYCQ_HPP__ 00012 00013 #include "IpIpoptCalculatedQuantities.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00021 class CGPenaltyCq : public ReferencedObject 00022 { 00023 public: 00024 00028 CGPenaltyCq(IpoptNLP* ip_nlp, 00029 IpoptData* ip_data, 00030 IpoptCalculatedQuantities* ip_cg); 00031 00033 virtual ~CGPenaltyCq(); 00035 00039 bool Initialize(const Journalist& jnlst, 00040 const OptionsList& options, 00041 const std::string& prefix); 00042 00046 Number curr_penalty_function(); 00048 Number trial_penalty_function(); 00051 Number curr_direct_deriv_penalty_function(); 00054 Number curr_fast_direct_deriv_penalty_function(); 00058 Number curr_cg_pert_fact(); 00060 00063 static void RegisterOptions(const SmartPtr<RegisteredOptions>& roptions); 00065 00066 private: 00076 CGPenaltyCq(); 00077 00079 CGPenaltyCq(const CGPenaltyCq&); 00080 00082 void operator=(const CGPenaltyCq&); 00084 00089 IpoptNLP* ip_nlp_; 00090 IpoptData* ip_data_; 00091 IpoptCalculatedQuantities* ip_cq_; 00093 00097 CachedResults<Number> curr_penalty_function_cache_; 00099 CachedResults<Number> trial_penalty_function_cache_; 00102 CachedResults<Number> curr_direct_deriv_penalty_function_cache_; 00105 CachedResults<Number> curr_fast_direct_deriv_penalty_function_cache_; 00107 CachedResults<Number> curr_cg_pert_fact_cache_; 00109 00112 bool initialize_called_; 00113 }; 00114 00115 } // namespace Ipopt 00116 00117 #endif