00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __HS071_NLP_HPP__
00010 #define __HS071_NLP_HPP__
00011
00012 #include "IpTNLP.hpp"
00013
00014 using namespace Ipopt;
00015
00037 class HS071_NLP : public TNLP
00038 {
00039 public:
00041 HS071_NLP();
00042
00044 virtual ~HS071_NLP();
00045
00049 virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
00050 Index& nnz_h_lag, IndexStyleEnum& index_style);
00051
00053 virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
00054 Index m, Number* g_l, Number* g_u);
00055
00057 virtual bool get_starting_point(Index n, bool init_x, Number* x,
00058 bool init_z, Number* z_L, Number* z_U,
00059 Index m, bool init_lambda,
00060 Number* lambda);
00061
00063 virtual bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);
00064
00066 virtual bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);
00067
00069 virtual bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);
00070
00075 virtual bool eval_jac_g(Index n, const Number* x, bool new_x,
00076 Index m, Index nele_jac, Index* iRow, Index *jCol,
00077 Number* values);
00078
00083 virtual bool eval_h(Index n, const Number* x, bool new_x,
00084 Number obj_factor, Index m, const Number* lambda,
00085 bool new_lambda, Index nele_hess, Index* iRow,
00086 Index* jCol, Number* values);
00087
00089
00093 virtual void finalize_solution(SolverReturn status,
00094 Index n, const Number* x, const Number* z_L, const Number* z_U,
00095 Index m, const Number* g, const Number* lambda,
00096 Number obj_value,
00097 const IpoptData* ip_data,
00098 IpoptCalculatedQuantities* ip_cq);
00100
00101 private:
00113
00114 HS071_NLP(const HS071_NLP&);
00115 HS071_NLP& operator=(const HS071_NLP&);
00117 };
00118
00119
00120 #endif