open source driving agent
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

150 lines
5.3 KiB

// Copyright (C) 2005, 2009 International Business Machines and others.
// All Rights Reserved.
// This code is published under the Eclipse Public License.
//
// $Id: IpSolveStatistics.hpp 1861 2010-12-21 21:34:47Z andreasw $
//
// Authors: Carl Laird, Andreas Waechter IBM 2005-08-15
#ifndef __IPSOLVESTATISTICS_HPP__
#define __IPSOLVESTATISTICS_HPP__
#include "IpReferenced.hpp"
#include "IpSmartPtr.hpp"
namespace Ipopt
{
// forward declaration (to avoid inclusion of too many header files)
class IpoptNLP;
class IpoptData;
class IpoptCalculatedQuantities;
/** This class collects statistics about an optimziation run, such
* as iteration count, final infeasibilities etc. It is meant to
* provide such information to a user of Ipopt during the
* finalize_solution call.
*/
class SolveStatistics : public ReferencedObject
{
public:
/**@name Constructors/Destructors */
//@{
/** Default constructor. It takes in those collecting Ipopt
* objects that can provide the statistics information. Those
* statistics are retrieved at the time of the constructor
* call. */
SolveStatistics(const SmartPtr<IpoptNLP>& ip_nlp,
const SmartPtr<IpoptData>& ip_data,
const SmartPtr<IpoptCalculatedQuantities>& ip_cq);
/** Default destructor */
virtual ~SolveStatistics()
{}
//@}
/** @name Accessor methods for retrieving different kind of solver
* statistics information */
//@{
/** Iteration counts. */
virtual Index IterationCount() const;
/** Total CPU time, including function evaluations. */
virtual Number TotalCpuTime() const;
/** Total CPU time, including function evaluations. Included for
* backward compatibility. */
Number TotalCPUTime() const
{
return TotalCpuTime();
}
/** Total System time, including function evaluations. */
virtual Number TotalSysTime() const;
/** Total wall clock time, including function evaluations. */
virtual Number TotalWallclockTime() const;
/** Number of NLP function evaluations. */
virtual void NumberOfEvaluations(Index& num_obj_evals,
Index& num_constr_evals,
Index& num_obj_grad_evals,
Index& num_constr_jac_evals,
Index& num_hess_evals) const;
/** Unscaled solution infeasibilities */
virtual void Infeasibilities(Number& dual_inf,
Number& constr_viol,
Number& complementarity,
Number& kkt_error) const;
/** Scaled solution infeasibilities */
virtual void ScaledInfeasibilities(Number& scaled_dual_inf,
Number& scaled_constr_viol,
Number& scaled_complementarity,
Number& scaled_kkt_error) const;
/** Final value of objective function */
virtual Number FinalObjective() const;
/** Final scaled value of objective function */
virtual Number FinalScaledObjective() const;
//@}
private:
/**@name Default Compiler Generated Methods
* (Hidden to avoid implicit creation/calling).
* These methods are not implemented and
* we do not want the compiler to implement
* them for us, so we declare them private
* and do not define them. This ensures that
* they will not be implicitly created/called. */
//@{
/** Default Constructor */
SolveStatistics();
/** Copy Constructor */
SolveStatistics(const SolveStatistics&);
/** Overloaded Equals Operator */
void operator=(const SolveStatistics&);
//@}
/** @name Fields for storing the statistics data */
//@{
/** Number of iterations. */
Index num_iters_;
/* Total CPU time */
Number total_cpu_time_;
/* Total system time */
Number total_sys_time_;
/* Total wall clock time */
Number total_wallclock_time_;
/** Number of objective function evaluations. */
Index num_obj_evals_;
/** Number of constraints evaluations (max of equality and
* inequality) */
Index num_constr_evals_;
/** Number of objective gradient evaluations. */
Index num_obj_grad_evals_;
/** Number of constraint Jacobian evaluations. */
Index num_constr_jac_evals_;
/** Number of Lagrangian Hessian evaluations. */
Index num_hess_evals_;
/** Final scaled value of objective function */
Number scaled_obj_val_;
/** Final unscaled value of objective function */
Number obj_val_;
/** Final scaled dual infeasibility (max-norm) */
Number scaled_dual_inf_;
/** Final unscaled dual infeasibility (max-norm) */
Number dual_inf_;
/** Final scaled constraint violation (max-norm) */
Number scaled_constr_viol_;
/** Final unscaled constraint violation (max-norm) */
Number constr_viol_;
/** Final scaled complementarity error (max-norm) */
Number scaled_compl_;
/** Final unscaled complementarity error (max-norm) */
Number compl_;
/** Final overall scaled KKT error (max-norm) */
Number scaled_kkt_error_;
/** Final overall unscaled KKT error (max-norm) */
Number kkt_error_;
//@}
};
} // namespace Ipopt
#endif