source: branches/dev/Algorithm/IpMonotoneMuUpdate.hpp @ 416

Last change on this file since 416 was 416, checked in by andreasw, 14 years ago
  • revised handling of "acceptable level of accuracy" (now in ConvCheck?)
  • fixed uncaught evaluation error exceptions
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1// Copyright (C) 2004, International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Common Public License.
4//
5// $Id: IpMonotoneMuUpdate.hpp 416 2005-07-29 19:11:41Z andreasw $
6//
7// Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
8
9#ifndef __IPMONOTONEMUUPDATE_HPP__
10#define __IPMONOTONEMUUPDATE_HPP__
11
12#include "IpMuUpdate.hpp"
13#include "IpLineSearch.hpp"
14#include "IpIpoptType.hpp"
15
16namespace Ipopt
17{
18
19  DeclareIpoptType(MonotoneMuUpdate);
20
21  /** Monotone Mu Update. This class implements the standard monotone mu update
22   *  approach.
23   */
24  class MonotoneMuUpdate : public MuUpdate
25  {
26  public:
27    /**@name Constructors/Destructors */
28    //@{
29    /** Default Constructor */
30    MonotoneMuUpdate(const SmartPtr<LineSearch>& linesearch);
31
32    /** Default destructor */
33    virtual ~MonotoneMuUpdate();
34    //@}
35
36    /** Initialize method - overloaded from AlgorithmStrategyObject */
37    virtual bool InitializeImpl(const OptionsList& options,
38                                const std::string& prefix);
39
40    /** Method for determining the barrier parameter for the next iteration.
41     *  When the optimality error for the current barrier parameter is less than
42     *  a tolerance, the barrier parameter is reduced, and the Reset method of the
43     *  LineSearch object linesearch is called.
44     *  TODO: MORE DETAILS HERE */
45    virtual void UpdateBarrierParameter();
46
47    /** Methods for IpoptType */
48    //@{
49    static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
50    //@}
51
52  private:
53    /**@name Default Compiler Generated Methods
54     * (Hidden to avoid implicit creation/calling).
55     * These methods are not implemented and
56     * we do not want the compiler to implement
57     * them for us, so we declare them private
58     * and do not define them. This ensures that
59     * they will not be implicitly created/called. */
60    //@{
61    MonotoneMuUpdate();
62
63    /** Copy Constructor */
64    MonotoneMuUpdate(const MonotoneMuUpdate&);
65
66    /** Overloaded Equals Operator */
67    void operator=(const MonotoneMuUpdate&);
68    //@}
69
70    /** Internal method for computing the new values for mu and tau */
71    void CalcNewMuAndTau(Number &new_mu,
72                         Number &new_tau);
73
74    /** @name Algorithmic parameters */
75    //@{
76    /** Initial value of the barrier parameter */
77    Number mu_init_;
78    Number barrier_tol_factor_;
79    Number mu_linear_decrease_factor_;
80    Number mu_superlinear_decrease_power_;
81    /** Tau_min for fraction to boundary rule */
82    Number tau_min_;
83    Number compl_inf_tol_;
84    //@}
85
86    SmartPtr<LineSearch> linesearch_;
87
88    /** Flag indicating whether the method has been called at least once so
89     *  far */
90    bool initialized_;
91
92    /** If true, no modification of the barrier parameter will be done
93     *  at the first call of Update (fix for the restoration phase -
94     *  we should clean that up!) */
95    bool first_iter_resto_;
96  };
97
98} // namespace Ipopt
99
100#endif
Note: See TracBrowser for help on using the repository browser.