Main Page
Namespaces
Classes
Files
File List
File Members
tmp
buildd
coinor-ipopt-3.10.2
Ipopt
tutorial
CodingExercise
Cpp
2-mistake
TutorialCpp_nlp.hpp
Go to the documentation of this file.
1
// Copyright (C) 2009 International Business Machines.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: TutorialCpp_nlp.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Author: Andreas Waechter IBM 2009-04-02
8
9
// This file is part of the Ipopt tutorial. It is a version with
10
// mistakes for the C++ implemention of the coding exercise problem
11
// (in AMPL formulation):
12
//
13
// param n := 4;
14
//
15
// var x {1..n} <= 0, >= -1.5, := -0.5;
16
//
17
// minimize obj:
18
// sum{i in 1..n} (x[i]-1)^2;
19
//
20
// subject to constr {i in 2..n-1}:
21
// (x[i]^2+1.5*x[i]-i/n)*cos(x[i+1]) - x[i-1] = 0;
22
//
23
// The constant term "i/n" in the constraint is supposed to be input data
24
//
25
26
#ifndef __TUTORIALCPP_NLP_HPP__
27
#define __TUTORIALCPP_NLP_HPP__
28
29
#include "
IpTNLP.hpp
"
30
31
using namespace
Ipopt;
32
33
// This inherits from Ipopt's TNLP
34
class
TutorialCpp_NLP
:
public
TNLP
35
{
36
public
:
38
TutorialCpp_NLP
(
Index
N,
const
Number
* a);
39
41
virtual
~
TutorialCpp_NLP
();
42
46
virtual
bool
get_nlp_info(
Index
& n,
Index
&
m
,
Index
& nnz_jac_g,
47
Index
& nnz_h_lag, IndexStyleEnum&
index_style
);
48
50
virtual
bool
get_bounds_info(
Index
n,
Number
* x_l,
Number
* x_u,
51
Index
m
,
Number
* g_l,
Number
* g_u);
52
54
virtual
bool
get_starting_point(
Index
n,
bool
init_x,
Number
*
x
,
55
bool
init_z,
Number
* z_L,
Number
* z_U,
56
Index
m
,
bool
init_lambda,
57
Number
* lambda);
58
60
virtual
bool
eval_f
(
Index
n,
const
Number
*
x
,
bool
new_x,
Number
& obj_value);
61
63
virtual
bool
eval_grad_f
(
Index
n,
const
Number
*
x
,
bool
new_x,
Number
* grad_f);
64
66
virtual
bool
eval_g
(
Index
n,
const
Number
*
x
,
bool
new_x,
Index
m
,
Number
*
g
);
67
72
virtual
bool
eval_jac_g
(
Index
n,
const
Number
*
x
,
bool
new_x,
73
Index
m
,
Index
nele_jac
,
Index
* iRow,
Index
*jCol,
74
Number
* values);
75
80
virtual
bool
eval_h
(
Index
n,
const
Number
*
x
,
bool
new_x,
81
Number
obj_factor,
Index
m
,
const
Number
* lambda,
82
bool
new_lambda,
Index
nele_hess
,
Index
* iRow,
83
Index
* jCol,
Number
* values);
84
86
90
virtual
void
finalize_solution(
SolverReturn
status,
91
Index
n,
const
Number
*
x
,
const
Number
* z_L,
const
Number
* z_U,
92
Index
m
,
const
Number
*
g
,
const
Number
* lambda,
93
Number
obj_value,
94
const
IpoptData
* ip_data,
95
IpoptCalculatedQuantities
* ip_cq);
97
98
private
:
110
TutorialCpp_NLP
();
111
TutorialCpp_NLP
(
const
TutorialCpp_NLP
&);
112
TutorialCpp_NLP
& operator=(
const
TutorialCpp_NLP
&);
114
118
Index
N_;
120
Number
* a_;
122
};
123
124
125
#endif
Generated on Tue Jun 26 2012 17:01:44 by
1.8.1.1