00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __IPSOLVESTATISTICS_HPP__
00010 #define __IPSOLVESTATISTICS_HPP__
00011
00012 #include "IpReferenced.hpp"
00013 #include "IpSmartPtr.hpp"
00014
00015 namespace Ipopt
00016 {
00017
00018 class IpoptNLP;
00019 class IpoptData;
00020 class IpoptCalculatedQuantities;
00021
00027 class SolveStatistics : public ReferencedObject
00028 {
00029 public:
00036 SolveStatistics(const SmartPtr<IpoptNLP>& ip_nlp,
00037 const SmartPtr<IpoptData>& ip_data,
00038 const SmartPtr<IpoptCalculatedQuantities>& ip_cq);
00039
00041 virtual ~SolveStatistics()
00042 {}
00044
00049 virtual Index IterationCount() const;
00051 virtual Number TotalCpuTime() const;
00053 virtual Number TotalSysTime() const;
00055 virtual Number TotalWallclockTime() const;
00057 virtual void NumberOfEvaluations(Index& num_obj_evals,
00058 Index& num_constr_evals,
00059 Index& num_obj_grad_evals,
00060 Index& num_constr_jac_evals,
00061 Index& num_hess_evals) const;
00063 virtual void Infeasibilities(Number& dual_inf,
00064 Number& constr_viol,
00065 Number& complementarity,
00066 Number& kkt_error) const;
00068 virtual void ScaledInfeasibilities(Number& scaled_dual_inf,
00069 Number& scaled_constr_viol,
00070 Number& scaled_complementarity,
00071 Number& scaled_kkt_error) const;
00073 virtual Number FinalObjective() const;
00075 virtual Number FinalScaledObjective() const;
00077
00078 private:
00088 SolveStatistics();
00089
00091 SolveStatistics(const SolveStatistics&);
00092
00094 void operator=(const SolveStatistics&);
00096
00100 Index num_iters_;
00101
00102 Number total_cpu_time_;
00103
00104 Number total_sys_time_;
00105
00106 Number total_wallclock_time_;
00108 Index num_obj_evals_;
00111 Index num_constr_evals_;
00113 Index num_obj_grad_evals_;
00115 Index num_constr_jac_evals_;
00117 Index num_hess_evals_;
00118
00120 Number scaled_obj_val_;
00122 Number obj_val_;
00124 Number scaled_dual_inf_;
00126 Number dual_inf_;
00128 Number scaled_constr_viol_;
00130 Number constr_viol_;
00132 Number scaled_compl_;
00134 Number compl_;
00136 Number scaled_kkt_error_;
00138 Number kkt_error_;
00140 };
00141
00142 }
00143
00144 #endif