# source:trunk/Ipopt/examples/ScalableProblems/LuksanVlcek7.hpp@949

Last change on this file since 949 was 949, checked in by andreasw, 7 years ago

making trunk the same as branches/devel rev 948; will delete branches/devel soon since trunk is meant to be the main development branch

• Property svn:eol-style set to `native`
• Property svn:keywords set to `"Author Date Id Revision"`
File size: 4.2 KB
RevLine
3// This code is published under the Common Public License.
4//
5// \$Id\$
6//
7// Authors:  Andreas Waechter              IBM    2005-10-127
8
9#ifndef __LUKSANVLCEK7_HPP__
10#define __LUKSANVLCEK7_HPP__
11
12#include "RegisteredTNLP.hpp"
13
14using namespace Ipopt;
15
16/** Implementation of Example 5.7 from "Sparse and Parially Separable
17 *  Test Problems for Unconstrained and Equality Constrained
18 *  Optimization" by L. Luksan and J. Vlcek. */
19class LuksanVlcek7 : public RegisteredTNLP
20{
21public:
22  /** Constructor.  Here, g_l and g_u are the bounds for the
23   *  constraints.  The original formulation is obtained by setting
24   *  g_l and g_u to zero.  Using g_l<g_u allows the obtain a problem
25   *  formulation with inequality constraints. */
26  LuksanVlcek7(Number g_l, Number g_u);
27
28  /** Default destructor */
[664]29  virtual ~LuksanVlcek7()
30  {}
31  ;
[572]32
33  /** Overloaded from RegisteredTNLP. */
34  virtual bool InitializeProblem(Index N);
35
36  /**@name Overloaded from TNLP */
37  //@{
38  /** Method to return some info about the nlp */
39  virtual bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g,
40                            Index& nnz_h_lag, IndexStyleEnum& index_style);
41
42  /** Method to return the bounds for my problem */
43  virtual bool get_bounds_info(Index n, Number* x_l, Number* x_u,
44                               Index m, Number* g_l, Number* g_u);
45
46  /** Method to return the starting point for the algorithm */
47  virtual bool get_starting_point(Index n, bool init_x, Number* x,
48                                  bool init_z, Number* z_L, Number* z_U,
49                                  Index m, bool init_lambda,
50                                  Number* lambda);
51
52  /** Method to return the objective value */
53  virtual bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);
54
55  /** Method to return the gradient of the objective */
56  virtual bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);
57
58  /** Method to return the constraint residuals */
59  virtual bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);
60
61  /** Method to return:
62   *   1) The structure of the jacobian (if "values" is NULL)
63   *   2) The values of the jacobian (if "values" is not NULL)
64   */
65  virtual bool eval_jac_g(Index n, const Number* x, bool new_x,
66                          Index m, Index nele_jac, Index* iRow, Index *jCol,
67                          Number* values);
68
69  /** Method to return:
70   *   1) The structure of the hessian of the lagrangian (if "values" is NULL)
71   *   2) The values of the hessian of the lagrangian (if "values" is not NULL)
72   */
73  virtual bool eval_h(Index n, const Number* x, bool new_x,
74                      Number obj_factor, Index m, const Number* lambda,
75                      bool new_lambda, Index nele_hess, Index* iRow,
76                      Index* jCol, Number* values);
77
78  //@}
79
80  /** @name Solution Methods */
81  //@{
82  /** This method is called when the algorithm is complete so the TNLP can store/write the solution */
83  virtual void finalize_solution(SolverReturn status,
84                                 Index n, const Number* x, const Number* z_L, const Number* z_U,
85                                 Index m, const Number* g, const Number* lambda,
[949]86                                 Number obj_value,
87                                 const IpoptData* ip_data,
88                                 IpoptCalculatedQuantities* ip_cq);
[572]89  //@}
90
91private:
92  /**@name Methods to block default compiler methods.
93   * The compiler automatically generates the following three methods.
94   *  Since the default compiler implementation is generally not what
95   *  you want (for all but the most simple classes), we usually
96   *  put the declarations of these methods in the private section
97   *  and never implement them. This prevents the compiler from
98   *  implementing an incorrect "default" behavior without us
99   *  knowing. (See Scott Meyers book, "Effective C++")
100   *
101   */
102  //@{
103  LuksanVlcek7();
104  LuksanVlcek7(const LuksanVlcek7&);
105  LuksanVlcek7& operator=(const LuksanVlcek7&);
106  //@}
107
108  /** Parameter determining problem size */
109  Index N_;
110
111  /** General lower bound for all constraints */
112  Number g_l_;
113  /** General upper bound for all constraints */
114  Number g_u_;
115};
116
117#endif
Note: See TracBrowser for help on using the repository browser.