trb_control_type structure#
#include <galahad_trb.h> struct trb_control_type { // components bool f_indexing; ipc_ error; ipc_ out; ipc_ print_level; ipc_ start_print; ipc_ stop_print; ipc_ print_gap; ipc_ maxit; ipc_ alive_unit; char alive_file[31]; ipc_ more_toraldo; ipc_ non_monotone; ipc_ model; ipc_ norm; ipc_ semi_bandwidth; ipc_ lbfgs_vectors; ipc_ max_dxg; ipc_ icfs_vectors; ipc_ mi28_lsize; ipc_ mi28_rsize; ipc_ advanced_start; rpc_ infinity; rpc_ stop_pg_absolute; rpc_ stop_pg_relative; rpc_ stop_s; rpc_ initial_radius; rpc_ maximum_radius; rpc_ stop_rel_cg; rpc_ eta_successful; rpc_ eta_very_successful; rpc_ eta_too_successful; rpc_ radius_increase; rpc_ radius_reduce; rpc_ radius_reduce_max; rpc_ obj_unbounded; rpc_ cpu_time_limit; rpc_ clock_time_limit; bool hessian_available; bool subproblem_direct; bool retrospective_trust_region; bool renormalize_radius; bool two_norm_tr; bool exact_gcp; bool accurate_bqp; bool space_critical; bool deallocate_error_fatal; char prefix[31]; struct trs_control_type trs_control; struct gltr_control_type gltr_control; struct psls_control_type psls_control; struct lms_control_type lms_control; struct lms_control_type lms_control_prec; struct sha_control_type sha_control; };
detailed documentation#
control derived type as a C struct
components#
bool f_indexing
use C or Fortran sparse matrix indexing
ipc_ error
error and warning diagnostics occur on stream error
ipc_ out
general output occurs on stream out
ipc_ print_level
the level of output required.
\(\leq\) 0 gives no output,
= 1 gives a one-line summary for every iteration,
= 2 gives a summary of the inner iteration for each iteration,
\(\geq\) 3 gives increasingly verbose (debugging) output
ipc_ start_print
any printing will start on this iteration
ipc_ stop_print
any printing will stop on this iteration
ipc_ print_gap
the number of iterations between printing
ipc_ maxit
the maximum number of iterations performed
ipc_ alive_unit
removal of the file alive_file from unit alive_unit terminates execution
char alive_file[31]
see alive_unit
ipc_ more_toraldo
more_toraldo >= 1 gives the number of More’-Toraldo projected searches to be used to improve upon the Cauchy point, anything else is for the standard add-one-at-a-time CG search
ipc_ non_monotone
non-monotone <= 0 monotone strategy used, anything else non-monotone strategy with this history length used
ipc_ model
the model used.
Possible values are
0 dynamic (not yet implemented)
1 first-order (no Hessian)
2 second-order (exact Hessian)
3 barely second-order (identity Hessian)
4 secant second-order (sparsity-based)
5 secant second-order (limited-memory BFGS, with .lbfgs_vectors history) (not yet implemented)
6 secant second-order (limited-memory SR1, with .lbfgs_vectors history) (not yet implemented)
ipc_ norm
The norm is defined via \(\|v\|^2 = v^T P v\), and will define the preconditioner used for iterative methods. Possible values for \(P\) are.
-3 users own preconditioner
-2 \(P =\) limited-memory BFGS matrix (with .lbfgs_vectors history)
-1 identity (= Euclidan two-norm)
0 automatic (not yet implemented)
1 diagonal, \(P =\) diag( max( Hessian, .min_diagonal ) )
2 banded, \(P =\) band( Hessian ) with semi-bandwidth .semi_bandwidth
3 re-ordered band, P=band(order(A)) with semi-bandwidth .semi_bandwidth
4 full factorization, \(P =\) Hessian, Schnabel-Eskow modification
5 full factorization, \(P =\) Hessian, GMPS modification (not yet implemented)
6 incomplete factorization of Hessian, Lin-More’
7 incomplete factorization of Hessian, HSL_MI28
8 incomplete factorization of Hessian, Munskgaard (not yet implemented)
9 expanding band of Hessian (not yet implemented)
ipc_ semi_bandwidth
specify the semi-bandwidth of the band matrix P if required
ipc_ lbfgs_vectors
number of vectors used by the L-BFGS matrix P if required
ipc_ max_dxg
number of vectors used by the sparsity-based secant Hessian if required
ipc_ icfs_vectors
number of vectors used by the Lin-More’ incomplete factorization matrix P if required
ipc_ mi28_lsize
the maximum number of fill entries within each column of the incomplete factor L computed by HSL_MI28. In general, increasing .mi28_lsize improve the quality of the preconditioner but increases the time to compute and then apply the preconditioner. Values less than 0 are treated as 0
ipc_ mi28_rsize
the maximum number of entries within each column of the strictly lower triangular matrix \(R\) used in the computation of the preconditioner by HSL_MI28. Rank-1 arrays of size .mi28_rsize \* n are allocated internally to hold \(R\). Thus the amount of memory used, as well as the amount of work involved in computing the preconditioner, depends on .mi28_rsize. Setting .mi28_rsize > 0 generally leads to a higher quality preconditioner than using .mi28_rsize = 0, and choosing .mi28_rsize >= .mi28_lsize is generally recommended
ipc_ advanced_start
iterates of a variant on the strategy of Sartenaer SISC 18(6)1990:1788-1803
rpc_ infinity
any bound larger than infinity in modulus will be regarded as infinite
rpc_ stop_pg_absolute
overall convergence tolerances. The iteration will terminate when the norm of the gradient of the objective function is smaller than MAX( .stop_pg_absolute, .stop_pg_relative * norm of the initial gradient ) or if the step is less than .stop_s
rpc_ stop_pg_relative
see stop_pg_absolute
rpc_ stop_s
see stop_pg_absolute
rpc_ initial_radius
initial value for the trust-region radius
rpc_ maximum_radius
maximum permitted trust-region radius
rpc_ stop_rel_cg
required relative reduction in the resuiduals from CG
rpc_ eta_successful
a potential iterate will only be accepted if the actual decrease f - f(x_new) is larger than .eta_successful times that predicted by a quadratic model of the decrease. The trust-region radius will be increased if this relative decrease is greater than .eta_very_successful but smaller than .eta_too_successful
rpc_ eta_very_successful
see eta_successful
rpc_ eta_too_successful
see eta_successful
rpc_ radius_increase
on very successful iterations, the trust-region radius will be increased the factor .radius_increase, while if the iteration is unsucceful, the radius will be decreased by a factor .radius_reduce but no more than .radius_reduce_max
rpc_ radius_reduce
see radius_increase
rpc_ radius_reduce_max
see radius_increase
rpc_ obj_unbounded
the smallest value the objective function may take before the problem is marked as unbounded
rpc_ cpu_time_limit
the maximum CPU time allowed (-ve means infinite)
rpc_ clock_time_limit
the maximum elapsed clock time allowed (-ve means infinite)
bool hessian_available
is the Hessian matrix of second derivatives available or is access only via matrix-vector products?
bool subproblem_direct
use a direct (factorization) or (preconditioned) iterative method to find the search direction
bool retrospective_trust_region
is a retrospective strategy to be used to update the trust-region radius
bool renormalize_radius
should the radius be renormalized to account for a change in preconditioner?
bool two_norm_tr
should an ellipsoidal trust-region be used rather than an infinity norm one?
bool exact_gcp
is the exact Cauchy point required rather than an approximation?
bool accurate_bqp
should the minimizer of the quadratic model within the intersection of the trust-region and feasible box be found (to a prescribed accuracy) rather than a (much) cheaper approximation?
bool space_critical
if .space_critical true, every effort will be made to use as little space as possible. This may result in longer computation time
bool deallocate_error_fatal
if .deallocate_error_fatal is true, any array/pointer deallocation error will terminate execution. Otherwise, computation will continue
char prefix[31]
all output lines will be prefixed by .prefix(2:LEN(TRIM(.prefix))-1) where .prefix contains the required string enclosed in quotes, e.g. “string” or ‘string’
struct trs_control_type trs_control
control parameters for TRS
struct gltr_control_type gltr_control
control parameters for GLTR
struct psls_control_type psls_control
control parameters for PSLS
struct lms_control_type lms_control
control parameters for LMS
struct lms_control_type lms_control_prec
control parameters for LMS used for preconditioning
struct sha_control_type sha_control
control parameters for SHA