source: branches/dev/Algorithm/IpLineSearch.hpp @ 542

Last change on this file since 542 was 542, checked in by andreasw, 14 years ago
  • cleaned up line search to allow for alternative globalization scheme
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.5 KB
Line 
1// Copyright (C) 2004, 2005 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Common Public License.
4//
5// $Id: IpLineSearch.hpp 542 2005-10-13 22:43:08Z andreasw $
6//
7// Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
8
9#ifndef __IPLINESEARCH_HPP__
10#define __IPLINESEARCH_HPP__
11
12#include "IpAlgStrategy.hpp"
13#include "IpIpoptCalculatedQuantities.hpp"
14
15namespace Ipopt
16{
17
18  /** Base class for line search objects.
19   */
20  class LineSearch : public AlgorithmStrategyObject
21  {
22  public:
23    /**@name Constructors/Destructors */
24    //@{
25    /** Default Constructor */
26    LineSearch()
27    {}
28
29    /** Default destructor */
30    virtual ~LineSearch()
31    {}
32    //@}
33
34    /** Perform the line search.  As search direction the delta
35     *  in the data object is used
36     */
37    virtual void FindAcceptableTrialPoint() = 0;
38
39    /** Reset the line search.
40     *  This function should be called if all previous information
41     *  should be discarded when the line search is performed the
42     *  next time.  For example, this method should be called after
43     *  the barrier parameter is changed.
44     */
45    virtual void Reset() = 0;
46
47    /** Set flag indicating whether a very rigorous line search should
48     *  be performed.  If this flag is set to true, the line search
49     *  algorithm might decide to abort the line search and not to
50     *  accept a new iterate.  If the line search decided not to
51     *  accept a new iterate, the return value of
52     *  CheckSkippedLineSearch() is true at the next call.  For
53     *  example, in the non-monotone barrier parameter update
54     *  procedure, the filter algorithm should not switch to the
55     *  restoration phase in the free mode; instead, the algorithm
56     *  should swtich to the fixed mode.
57     */
58    virtual void SetRigorousLineSearch(bool rigorous) = 0;
59
60    /** Check if the line search procedure didn't accept a new iterate
61     *  during the last call of FindAcceptableTrialPoint().
62     * 
63     */
64    virtual bool CheckSkippedLineSearch() = 0;
65
66  private:
67    /**@name Default Compiler Generated Methods
68     * (Hidden to avoid implicit creation/calling).
69     * These methods are not implemented and
70     * we do not want the compiler to implement
71     * them for us, so we declare them private
72     * and do not define them. This ensures that
73     * they will not be implicitly created/called. */
74    //@{
75    /** Copy Constructor */
76    LineSearch(const LineSearch&);
77
78    /** Overloaded Equals Operator */
79    void operator=(const LineSearch&);
80    //@}
81
82  };
83
84} // namespace Ipopt
85
86#endif
Note: See TracBrowser for help on using the repository browser.