Ipopt
3.11.8
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
contrib
CGPenalty
IpPiecewisePenalty.hpp
Go to the documentation of this file.
1
// Copyright (C) 2007 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpPiecewisePenalty.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Lifeng Chen/Zaiwen Wen Columbia Univ
8
9
#ifndef __IPPIECEWISEPENALTY_HPP__
10
#define __IPPIECEWISEPENALTY_HPP__
11
12
#include "
IpJournalist.hpp
"
13
#include "
IpDebug.hpp
"
14
#include "
IpOptionsList.hpp
"
15
#include "
IpIpoptCalculatedQuantities.hpp
"
16
#include "
IpBacktrackingLSAcceptor.hpp
"
17
#include "
IpPDSystemSolver.hpp
"
18
#include <list>
19
#include <vector>
20
21
namespace
Ipopt
22
{
23
25
typedef
struct
26
PiecewisePenEntry
27
{
28
Number
pen_r
;
29
Number
barrier_obj
;
30
Number
infeasi
;
31
}
32
PiecewisePenEntry
;
33
34
39
class
PiecewisePenalty
40
{
41
public
:
45
PiecewisePenalty
(
Index
dim);
47
~PiecewisePenalty
()
48
{
49
//ToDo figure out if that here is necessary
50
// Clear();
51
}
53
54
56
// Initialize Piecewise Penalty list
57
bool
IsPiecewisePenaltyListEmpty
()
58
{
59
return
PiecewisePenalty_list_
.empty();
60
}
61
62
void
InitPiecewisePenaltyList
(
Number
pen_r,
Number
barrier_obj,
Number
infeasi)
63
{
64
AddEntry
( pen_r, barrier_obj, infeasi);
65
}
66
70
bool
Acceptable
(
Number
Fzconst,
Number
Fzlin);
71
73
Number
BiggestBarr
();
74
77
void
UpdateEntry
(
Number
barrier_obj,
Number
infeasi);
78
81
void
AddEntry
(
Number
pen_r,
Number
barrier_obj,
Number
infeasi)
82
{
83
PiecewisePenEntry
TmpEntry;
84
if
(
IsPiecewisePenaltyListEmpty
()) {
85
TmpEntry.
pen_r
= 0.0;
86
}
87
else
{
88
TmpEntry.
pen_r
= pen_r;
89
}
90
TmpEntry.
barrier_obj
= barrier_obj;
91
TmpEntry.
infeasi
= infeasi;
92
PiecewisePenalty_list_
.push_back(TmpEntry);
93
}
94
97
void
ResetList
(
Number
pen_r,
Number
barrier_obj,
Number
infeasi)
98
{
99
PiecewisePenalty_list_
.clear();
100
AddEntry
( pen_r, barrier_obj, infeasi);
101
}
102
104
106
void
Clear
()
107
{
108
PiecewisePenalty_list_
.clear();
109
}
110
112
void
Print
(
const
Journalist
& jnlst);
113
114
private
:
124
PiecewisePenalty
();
126
PiecewisePenalty
(
const
PiecewisePenalty
&);
127
129
void
operator=
(
const
PiecewisePenalty
&);
131
133
Index
dim_
;
134
136
Number
min_piece_penalty_
;
137
139
Index
max_piece_number_
;
140
142
std::vector<PiecewisePenEntry>
PiecewisePenalty_list_
;
143
144
};
145
146
147
148
149
150
151
152
}
// namespace Ipopt
153
154
#endif
Generated by
1.8.3.1