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
IpBacktrackingLineSearch.hpp
Go to the documentation of this file.
1
// Copyright (C) 2004, 2009 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpBacktrackingLineSearch.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
// Andreas Waechter IBM 2005-10-13
9
// derived file from IpFilterLineSearch.hpp
10
11
#ifndef __IPBACKTRACKINGLINESEARCH_HPP__
12
#define __IPBACKTRACKINGLINESEARCH_HPP__
13
14
#include "
IpLineSearch.hpp
"
15
#include "
IpBacktrackingLSAcceptor.hpp
"
16
#include "
IpRestoPhase.hpp
"
17
#include "
IpConvCheck.hpp
"
18
19
namespace
Ipopt
20
{
21
36
class
BacktrackingLineSearch
:
public
LineSearch
37
{
38
public
:
48
BacktrackingLineSearch
(
const
SmartPtr<BacktrackingLSAcceptor>
& acceptor,
49
const
SmartPtr<RestorationPhase>
& resto_phase,
50
const
SmartPtr<ConvergenceCheck>
& conv_check
51
);
52
54
virtual
~BacktrackingLineSearch
();
56
58
virtual
bool
InitializeImpl
(
const
OptionsList
& options,
59
const
std::string& prefix);
60
64
virtual
void
FindAcceptableTrialPoint
();
65
72
virtual
void
Reset
();
73
85
virtual
void
SetRigorousLineSearch
(
bool
rigorous)
86
{
87
rigorous_
= rigorous;
88
}
89
94
virtual
bool
CheckSkippedLineSearch
()
95
{
96
return
skipped_line_search_
;
97
}
98
101
virtual
bool
ActivateFallbackMechanism
();
102
105
static
void
RegisterOptions
(
SmartPtr<RegisteredOptions>
roptions);
107
108
private
:
118
BacktrackingLineSearch
(
const
BacktrackingLineSearch
&);
119
121
void
operator=
(
const
BacktrackingLineSearch
&);
123
128
bool
DoBacktrackingLineSearch
(
bool
skip_first_trial_point,
129
Number
& alpha_primal,
130
bool
& corr_taken,
131
bool
& soc_taken,
132
Index
& n_steps,
133
bool
& evaluation_error,
134
SmartPtr<IteratesVector>
& actual_delta);
135
138
void
StartWatchDog
();
139
142
void
StopWatchDog
(
SmartPtr<IteratesVector>
& actual_delta);
143
149
bool
CheckAcceptabilityOfTrialPoint
(
Number
alpha_primal);
150
156
void
PerformDualStep
(
Number
alpha_primal,
157
Number
alpha_dual,
158
SmartPtr<IteratesVector>
& delta);
159
169
bool
TrySoftRestoStep
(
SmartPtr<IteratesVector>
& actual_delta,
170
bool
&satisfies_original_criterion);
171
183
bool
TrySecondOrderCorrection
(
Number
alpha_primal_test,
184
Number
& alpha_primal,
185
SmartPtr<IteratesVector>
& actual_delta);
186
193
bool
TryCorrector
(
Number
alpha_primal_test,
194
Number
& alpha_primal,
195
SmartPtr<IteratesVector>
& actual_delta);
196
201
void
PerformMagicStep
();
202
206
bool
DetectTinyStep
();
207
209
void
StoreAcceptablePoint
();
210
213
bool
RestoreAcceptablePoint
();
214
219
bool
CurrentIsAcceptable
();
220
225
Number
alpha_red_factor_
;
226
228
enum
AlphaForYEnum
229
{
230
PRIMAL_ALPHA_FOR_Y
=0,
231
DUAL_ALPHA_FOR_Y
,
232
MIN_ALPHA_FOR_Y
,
233
MAX_ALPHA_FOR_Y
,
234
FULL_STEP_FOR_Y
,
235
MIN_DUAL_INFEAS_ALPHA_FOR_Y
,
236
SAFE_MIN_DUAL_INFEAS_ALPHA_FOR_Y
,
237
PRIMAL_AND_FULL_ALPHA_FOR_Y
,
238
DUAL_AND_FULL_ALPHA_FOR_Y
,
239
LSACCEPTOR_ALPHA_FOR_Y
240
};
245
AlphaForYEnum
alpha_for_y_
;
246
249
Number
alpha_for_y_tol_
;
250
254
Number
soft_resto_pderror_reduction_factor_
;
258
Index
max_soft_resto_iters_
;
259
261
bool
magic_steps_
;
264
bool
accept_every_trial_step_
;
268
Index
accept_after_max_steps_
;
273
bool
expect_infeasible_problem_
;
278
Number
expect_infeasible_problem_ctol_
;
283
Number
expect_infeasible_problem_ytol_
;
284
286
Number
tiny_step_tol_
;
287
292
Number
tiny_step_y_tol_
;
293
295
Index
watchdog_trial_iter_max_
;
297
Index
watchdog_shortened_iter_trigger_
;
298
301
bool
start_with_resto_
;
303
307
bool
in_watchdog_
;
309
Index
watchdog_shortened_iter_
;
311
Index
watchdog_trial_iter_
;
313
Number
watchdog_alpha_primal_test_
;
315
SmartPtr<const IteratesVector>
watchdog_iterate_
;
317
SmartPtr<const IteratesVector>
watchdog_delta_
;
319
Number
last_mu_
;
321
325
SmartPtr<const IteratesVector>
acceptable_iterate_
;
326
Index
acceptable_iteration_number_
;
328
331
bool
fallback_activated_
;
332
337
bool
rigorous_
;
338
341
bool
skipped_line_search_
;
342
347
bool
in_soft_resto_phase_
;
348
351
Index
soft_resto_counter_
;
352
355
Index
count_successive_shortened_steps_
;
356
359
bool
tiny_step_last_iteration_
;
360
363
SmartPtr<BacktrackingLSAcceptor>
acceptor_
;
364
SmartPtr<RestorationPhase>
resto_phase_
;
365
SmartPtr<ConvergenceCheck>
conv_check_
;
367
};
368
369
}
// namespace Ipopt
370
371
#endif
Generated on Mon Oct 21 2013 19:08:15 for Ipopt by
1.8.4