9#include "MantidCurveFitting/DllConfig.h"
15namespace CurveFitting {
20const double TEN_M3 = 1.0e-3;
21const double TEN_M5 = 1.0e-5;
22const double TEN_M8 = 1.0e-8;
23const double HUNDRED = 100.0;
24const double TEN = 10.0;
25const double POINT9 = 0.9;
26const double ZERO = 0.0;
27const double ONE = 1.0;
28const double TWO = 2.0;
29const double HALF = 0.5;
30const double SIXTEENTH = 0.0625;
191 double obj = std::numeric_limits<float>::max();
195 double norm_g = std::numeric_limits<float>::max();
198 double scaled_g = std::numeric_limits<float>::max();
Helper class which provides the Collimation Length for SANS instruments.
all workspaces called from the top level
NLLS_workspace()
Constructor of the workspace.
evaluate_model_work evaluate_model_ws
DoubleFortranVector g_mixed
bool use_second_derivatives
DoubleFortranMatrix hf_temp
DoubleFortranVector gradvec
DoubleFortranVector ysharpSks
void initialize(int n, int m, const nlls_options &options)
Initialize the workspace.
DoubleFortranVector largest_sv
DoubleFortranMatrix JNewton
DoubleFortranVector smallest_sv
DoubleFortranMatrix fNewton
DoubleFortranMatrix XNewton
get_svd_J_work get_svd_J_ws
DoubleFortranVector g_old
DoubleFortranVector resvec
DoubleFortranVector y_sharp
workspace for subroutine allEigSymm
workspace for subroutine evaluateModel
workspace for subroutine getSvdJ
DoubleFortranVector Jcopy
workspace for subroutine max_eig
DoubleFortranMatrix nullevs
DoubleFortranVector alphaI
IntFortranVector nullindex
DoubleFortranVector alphaR
IntFortranVector vecisreal
DoubleFortranVector ew_array
workspace for subroutine min_eig_work
double eta_successful
a potential iterate will only be accepted if the actual decrease f - f(x_new) is larger than ....
int model
specify the model used.
int relative_tr_radius
should we scale the initial trust region radius?
int scale
scale the variables? 0 - no scaling 1 - use the scaling in GSL (W s.t.
int maxit
the maximum number of iterations performed
double eta_too_successful
int nlls_method
specify the method used to solve the trust-region sub problem 1 Powell's dogleg 2 AINT method (of Yuj...
int more_sorensen_maxits
M O R E - S O R E N S E N C O N T R O L S.
double eta_success_but_reduce
double more_sorensen_tiny
double eta_very_successful
int tr_update_strategy
Trust region update strategy 1 - usual step function 2 - continuous method of Hans Bruun Nielsen (IMM...
bool scale_require_increase
double stop_g_absolute
overall convergence tolerances.
bool output_progress_vectors
Shall we output progess vectors at termination of the routine?
int lls_solver
which linear least squares solver should we use?
double maximum_radius
maximum permitted trust-region radius
double initial_radius_scale
if relative_tr_radius == 1, then pick a scaling parameter Madsen, Nielsen and Tingleff say pick this ...
double radius_increase
on very successful iterations, the trust-region radius will be increased by the factor ....
double hybrid_tol
what's the tolerance such that ||J^T f || < tol * 0.5 ||f||^2 triggers a switch
double more_sorensen_shift
int hybrid_switch_its
how many successive iterations does the above condition need to hold before we switch?
double initial_radius
if relative_tr_radius /= 1, then set the initial value for the trust-region radius (-ve => ||g_0||)
bool subproblem_eig_fact
use a factorization (dsyev) to find the smallest eigenvalue for the subproblem solve?...
bool exact_second_derivatives
shall we use explicit second derivatives, or approximate using a secant method
double hybrid_switch
if model=7, then the value with which we switch on second derivatives
workspace for subroutine solve_LLS
workspace for subroutine solve_general