Main Page
Namespaces
Classes
Files
File List
File Members
build
buildd
coinor-ipopt-3.10.2
Ipopt
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 Fri Jun 29 2012 06:35:12 by
1.8.1.1