MUQ  0.4.3
NewtonTrust.h
Go to the documentation of this file.
1 #ifndef NEWTONTRUST_H_
2 #define NEWTONTRUST_H_
3 
4 #include <boost/property_tree/ptree.hpp>
5 
8 
9 namespace muq {
10  namespace Optimization {
11 
19  class NewtonTrust : public Optimizer {
20 
21  public:
22 
51  NewtonTrust(std::shared_ptr<muq::Modeling::ModPiece> const& cost,
52  boost::property_tree::ptree const& pt);
53 
54  virtual ~NewtonTrust() = default;
55 
56  virtual std::pair<Eigen::VectorXd, double> Solve(std::vector<Eigen::VectorXd> const& inputs) override;
57 
58 
59  private:
60 
61  // Applies a preconditioner to s
62  Eigen::VectorXd Prec(Eigen::VectorXd const& s) const;
63 
65  double Dist2Bndry(Eigen::VectorXd const& x, Eigen::VectorXd const& d) const;
66 
68  Eigen::VectorXd SolveSub(double fval,
69  Eigen::VectorXd const& x0,
70  Eigen::VectorXd const& grad);
71 
72  double trustRadius;
73  const double maxRadius;
74  const double initialRadius;
75  const double acceptRatio;
76  const double shrinkRatio;
77  const double growRatio;
78  const double shrinkRate;
79  const double growRate;
80  const double trustTol;
81  const unsigned int printLevel;
82 
83  };// class NewtonTrust
84 
85  }
86 }
87 
88 #endif
Newton optimizer with trust region to ensure global convergence.
Definition: NewtonTrust.h:19
Eigen::VectorXd SolveSub(double fval, Eigen::VectorXd const &x0, Eigen::VectorXd const &grad)
Definition: NewtonTrust.cpp:89
NewtonTrust(std::shared_ptr< muq::Modeling::ModPiece > const &cost, boost::property_tree::ptree const &pt)
Eigen::VectorXd Prec(Eigen::VectorXd const &s) const
virtual ~NewtonTrust()=default
virtual std::pair< Eigen::VectorXd, double > Solve(std::vector< Eigen::VectorXd > const &inputs) override
Solve the optimization problem.
Definition: NewtonTrust.cpp:24
const unsigned int printLevel
Definition: NewtonTrust.h:81
double Dist2Bndry(Eigen::VectorXd const &x, Eigen::VectorXd const &d) const
Solve an optimization problem.
Definition: Optimizer.h:21