MPQC
2.3.1
src
lib
math
optimize
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.