00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __LUKSANVLCEK6_HPP__
00010 #define __LUKSANVLCEK6_HPP__
00011
00012 #include "RegisteredTNLP.hpp"
00013
00014 using namespace Ipopt;
00015
00019 class LuksanVlcek6 : public RegisteredTNLP
00020 {
00021 public:
00026 LuksanVlcek6(Number g_l, Number g_u);
00027
00029 virtual ~LuksanVlcek6()
00030 {}
00031 ;
00032
00034 virtual bool InitializeProblem(Index N);
00035
00039 virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
00040 Index& nnz_h_lag, IndexStyleEnum& index_style);
00041
00043 virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
00044 Index m, Number* g_l, Number* g_u);
00045
00047 virtual bool get_starting_point(Index n, bool init_x, Number* x,
00048 bool init_z, Number* z_L, Number* z_U,
00049 Index m, bool init_lambda,
00050 Number* lambda);
00051
00053 virtual bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);
00054
00056 virtual bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);
00057
00059 virtual bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);
00060
00065 virtual bool eval_jac_g(Index n, const Number* x, bool new_x,
00066 Index m, Index nele_jac, Index* iRow, Index *jCol,
00067 Number* values);
00068
00073 virtual bool eval_h(Index n, const Number* x, bool new_x,
00074 Number obj_factor, Index m, const Number* lambda,
00075 bool new_lambda, Index nele_hess, Index* iRow,
00076 Index* jCol, Number* values);
00077
00079
00083 virtual void finalize_solution(SolverReturn status,
00084 Index n, const Number* x, const Number* z_L, const Number* z_U,
00085 Index m, const Number* g, const Number* lambda,
00086 Number obj_value,
00087 const IpoptData* ip_data,
00088 IpoptCalculatedQuantities* ip_cq);
00090
00091 private:
00103 LuksanVlcek6();
00104 LuksanVlcek6(const LuksanVlcek6&);
00105 LuksanVlcek6& operator=(const LuksanVlcek6&);
00107
00109 Index N_;
00110
00112 Number g_l_;
00114 Number g_u_;
00115 };
00116
00117 #endif