MPQC  2.3.1
mcsearch.h
1 //
2 // mcsearch.h
3 //
4 // Based on line search routines found in lbfgs.f on the WWW.
5 //
6 
7 #ifndef _math_optimize_mcsearch_h
8 #define _math_optimize_mcsearch_h
9 
10 #ifdef __GNUC__
11 #pragma interface
12 #endif
13 
14 #include <math/optimize/opt.h>
15 #include <util/misc/autovec.h>
16 
17 namespace sc {
18 
24 class MCSearch: public LineOpt {
25  protected:
26 
27  // These are originally from the lb3 common block.
28  double gtol_, stpmin_, stpmax_;
29 
30  // Local variables in mcsrch
31  double dg, fm, fx, fy, dgm, dgx, dgy, fxm, fym, stx, sty, dgxm,
32  dgym;
33  int infoc;
34  double finit, width, stmin, stmax;
35  bool stage1;
36  double width1, ftest1;
37  bool brackt;
38  double dginit, dgtest;
39 
40  // Local variables in mcstep
41  double p, q, r__, s, sgnd, stpc, stpf, stpq, gamma, theta;
42  bool bound;
43 
44  // these are saved from call to call
45  int info_;
46  auto_vec<double> wa_;
47 
48  void
49  mcstep(double *stx, double *fx, double *dx,
50  double *sty, double *fy, double *dy, double *stp,
51  double *fp, double *dp, bool *brackt, double *stpmin,
52  double *stpmax, int *info);
53 
54  void
55  mcsrch(int *n, double *x, double *f,
56  double *g, double *s, double *stp, double *ftol,
57  double *xtol, int *maxfev, int *info, int *nfev,
58  double *wa);
59 
60 
61  void mcinit();
62  public:
63 
67  MCSearch(const Ref<KeyVal>&);
68  ~MCSearch();
69  int update();
70 
71  void init(RefSCVector& direction);
72  void init(RefSCVector& direction, Ref<Function> function);
73 
74 };
75 
76 }
77 
78 #endif
79 
80 // Local Variables:
81 // mode: c++
82 // c-file-style: "CLJ"
83 // End:
sc::LineOpt
The LineOpt abstract class is used to perform one dimensional optimizations.
Definition: opt.h:123
sc::MCSearch
This performs line searches with cubic steps.
Definition: mcsearch.h:24
sc::Ref
A template class that maintains references counts.
Definition: ref.h:332
sc::MCSearch::MCSearch
MCSearch(const Ref< KeyVal > &)
The MCSearch KeyVal CTOR does not read any input.
sc::auto_vec< double >
sc::MCSearch::update
int update()
Take a step.
sc::RefSCVector
The RefSCVector class is a smart pointer to an SCVector specialization.
Definition: matrix.h:55
sc::Optimize::init
virtual void init()
Initialize the optimizer.

Generated at Sun Jan 26 2020 23:33:04 for MPQC 2.3.1 using the documentation package Doxygen 1.8.16.