Ipopt
3.11.4
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
src
Algorithm
IpIpoptAlg.hpp
Go to the documentation of this file.
1
// Copyright (C) 2004, 2010 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpIpoptAlg.hpp 2167 2013-03-08 11:15:38Z stefan $
6
//
7
// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9
#ifndef __IPIPOPTALG_HPP__
10
#define __IPIPOPTALG_HPP__
11
12
#include "
IpIpoptNLP.hpp
"
13
#include "
IpAlgStrategy.hpp
"
14
#include "
IpSearchDirCalculator.hpp
"
15
#include "
IpLineSearch.hpp
"
16
#include "
IpMuUpdate.hpp
"
17
#include "
IpConvCheck.hpp
"
18
#include "
IpOptionsList.hpp
"
19
#include "
IpIterateInitializer.hpp
"
20
#include "
IpIterationOutput.hpp
"
21
#include "
IpAlgTypes.hpp
"
22
#include "
IpHessianUpdater.hpp
"
23
#include "
IpEqMultCalculator.hpp
"
24
25
namespace
Ipopt
26
{
27
30
DECLARE_STD_EXCEPTION
(STEP_COMPUTATION_FAILED);
32
45
class
IpoptAlgorithm
:
public
AlgorithmStrategyObject
46
{
47
public
:
48
55
IpoptAlgorithm
(
const
SmartPtr<SearchDirectionCalculator>
& search_dir_calculator,
56
const
SmartPtr<LineSearch>
& line_search,
57
const
SmartPtr<MuUpdate>
& mu_update,
58
const
SmartPtr<ConvergenceCheck>
& conv_check,
59
const
SmartPtr<IterateInitializer>
& iterate_initializer,
60
const
SmartPtr<IterationOutput>
& iter_output,
61
const
SmartPtr<HessianUpdater>
& hessian_updater,
62
const
SmartPtr<EqMultiplierCalculator>
& eq_multiplier_calculator = NULL);
63
65
virtual
~IpoptAlgorithm
();
67
68
70
virtual
bool
InitializeImpl
(
const
OptionsList
& options,
71
const
std::string& prefix);
72
74
SolverReturn
Optimize
(
bool
isResto =
false
);
75
78
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
80
83
SmartPtr<SearchDirectionCalculator>
SearchDirCalc
()
84
{
85
return
search_dir_calculator_
;
86
}
88
89
static
void
print_copyright_message
(
const
Journalist
& jnlst);
90
91
private
:
101
IpoptAlgorithm
();
102
104
IpoptAlgorithm
(
const
IpoptAlgorithm
&);
105
107
void
operator=
(
const
IpoptAlgorithm
&);
109
112
SmartPtr<SearchDirectionCalculator>
search_dir_calculator_
;
113
SmartPtr<LineSearch>
line_search_
;
114
SmartPtr<MuUpdate>
mu_update_
;
115
SmartPtr<ConvergenceCheck>
conv_check_
;
116
SmartPtr<IterateInitializer>
iterate_initializer_
;
117
SmartPtr<IterationOutput>
iter_output_
;
118
SmartPtr<HessianUpdater>
hessian_updater_
;
121
SmartPtr<EqMultiplierCalculator>
eq_multiplier_calculator_
;
123
130
void
UpdateHessian
();
131
136
bool
UpdateBarrierParameter
();
137
142
bool
ComputeSearchDirection
();
143
147
void
ComputeAcceptableTrialPoint
();
148
151
void
AcceptTrialPoint
();
152
154
void
OutputIteration
();
155
159
void
InitializeIterates
();
160
162
void
PrintProblemStatistics
();
163
165
void
ComputeFeasibilityMultipliers
();
167
171
bool
skip_print_problem_stats_
;
173
180
Number
kappa_sigma_
;
184
bool
recalc_y_
;
186
Number
recalc_y_feas_tol_
;
190
bool
mehrotra_algorithm_
;
192
std::string
linear_solver_
;
194
197
void
calc_number_of_bounds
(
198
const
Vector
&
x
,
199
const
Vector
&
x_L
,
200
const
Vector
&
x_U
,
201
const
Matrix
& Px_L,
202
const
Matrix
& Px_U,
203
Index
& n_tot,
204
Index
& n_only_lower,
205
Index
& n_both,
206
Index
& n_only_upper);
207
215
Number
correct_bound_multiplier
(
const
Vector
& trial_z,
216
const
Vector
& trial_slack,
217
const
Vector
& trial_compl,
218
SmartPtr<const Vector>
& new_trial_z);
220
};
221
222
}
// namespace Ipopt
223
224
#endif
Generated on Mon Oct 21 2013 19:08:15 for Ipopt by
1.8.4