dqp_control_type structure#

#include <galahad_dqp.h>

struct dqp_control_type {
    // components

    bool f_indexing;
    ipc_ error;
    ipc_ out;
    ipc_ print_level;
    ipc_ start_print;
    ipc_ stop_print;
    ipc_ print_gap;
    ipc_ dual_starting_point;
    ipc_ maxit;
    ipc_ max_sc;
    ipc_ cauchy_only;
    ipc_ arc_search_maxit;
    ipc_ cg_maxit;
    ipc_ explore_optimal_subspace;
    ipc_ restore_problem;
    ipc_ sif_file_device;
    ipc_ qplib_file_device;
    rpc_ rho;
    rpc_ infinity;
    rpc_ stop_abs_p;
    rpc_ stop_rel_p;
    rpc_ stop_abs_d;
    rpc_ stop_rel_d;
    rpc_ stop_abs_c;
    rpc_ stop_rel_c;
    rpc_ stop_cg_relative;
    rpc_ stop_cg_absolute;
    rpc_ cg_zero_curvature;
    rpc_ max_growth;
    rpc_ identical_bounds_tol;
    rpc_ cpu_time_limit;
    rpc_ clock_time_limit;
    rpc_ initial_perturbation;
    rpc_ perturbation_reduction;
    rpc_ final_perturbation;
    bool factor_optimal_matrix;
    bool remove_dependencies;
    bool treat_zero_bounds_as_general;
    bool exact_arc_search;
    bool subspace_direct;
    bool subspace_alternate;
    bool subspace_arc_search;
    bool space_critical;
    bool deallocate_error_fatal;
    bool generate_sif_file;
    bool generate_qplib_file;
    char symmetric_linear_solver[31];
    char definite_linear_solver[31];
    char unsymmetric_linear_solver[31];
    char sif_file_name[31];
    char qplib_file_name[31];
    char prefix[31];
    struct fdc_control_type fdc_control;
    struct sls_control_type sls_control;
    struct sbls_control_type sbls_control;
    struct gltr_control_type gltr_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 is specified by print_level

ipc_ start_print

any printing will start on this iteration

ipc_ stop_print

any printing will stop on this iteration

ipc_ print_gap

printing will only occur every print_gap iterations

ipc_ dual_starting_point

which starting point should be used for the dual problem

  • -1 user supplied comparing primal vs dual variables

  • 0 user supplied

  • 1 minimize linearized dual

  • 2 minimize simplified quadratic dual

  • 3 all free (= all active primal costraints)

  • 4 all fixed on bounds (= no active primal costraints)

ipc_ maxit

at most maxit inner iterations are allowed

ipc_ max_sc

the maximum permitted size of the Schur complement before a refactorization is performed (used in the case where there is no Fredholm Alternative, 0 = refactor every iteration)

ipc_ cauchy_only

a subspace step will only be taken when the current Cauchy step has changed no more than than cauchy_only active constraints; the subspace step will always be taken if cauchy_only < 0

ipc_ arc_search_maxit

how many iterations are allowed per arc search (-ve = as many as require

ipc_ cg_maxit

how many CG iterations to perform per DQP iteration (-ve reverts to n+1)

ipc_ explore_optimal_subspace

once a potentially optimal subspace has been found, investigate it

  • 0 as per an ordinary subspace

  • 1 by increasing the maximum number of allowed CG iterations

  • 2 by switching to a direct method

ipc_ restore_problem

indicate whether and how much of the input problem should be restored on output. Possible values are

  • 0 nothing restored

  • 1 scalar and vector parameters

  • 2 all parameters

ipc_ sif_file_device

specifies the unit number to write generated SIF file describing the current problem

ipc_ qplib_file_device

specifies the unit number to write generated QPLIB file describing the current problem

rpc_ rho

the penalty weight, rho. The general constraints are not enforced explicitly, but instead included in the objective as a penalty term weighted by rho when rho > 0. If rho <= 0, the general constraints are explicit (that is, there is no penalty term in the objective function)

rpc_ infinity

any bound larger than infinity in modulus will be regarded as infinite

rpc_ stop_abs_p

the required absolute and relative accuracies for the primal infeasibilies

rpc_ stop_rel_p

see stop_abs_p

rpc_ stop_abs_d

the required absolute and relative accuracies for the dual infeasibility

rpc_ stop_rel_d

see stop_abs_d

rpc_ stop_abs_c

the required absolute and relative accuracies for the complementarity

rpc_ stop_rel_c

see stop_abs_c

rpc_ stop_cg_relative

the CG iteration will be stopped as soon as the current norm of the preconditioned gradient is smaller than max( stop_cg_relative * initial preconditioned gradient, stop_cg_absolute )

rpc_ stop_cg_absolute

see stop_cg_relative

rpc_ cg_zero_curvature

threshold below which curvature is regarded as zero if CG is used

rpc_ max_growth

maximum growth factor allowed without a refactorization

rpc_ identical_bounds_tol

any pair of constraint bounds (c_l,c_u) or (x_l,x_u) that are closer than identical_bounds_tol will be reset to the average of their values

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)

rpc_ initial_perturbation

the initial penalty weight (for DLP only)

rpc_ perturbation_reduction

the penalty weight reduction factor (for DLP only)

rpc_ final_perturbation

the final penalty weight (for DLP only)

bool factor_optimal_matrix

are the factors of the optimal augmented matrix required? (for DLP only)

bool remove_dependencies

the equality constraints will be preprocessed to remove any linear dependencies if true

bool treat_zero_bounds_as_general

any problem bound with the value zero will be treated as if it were a general value if true

bool exact_arc_search

if .exact_arc_search is true, an exact piecewise arc search will be performed. Otherwise an ineaxt search using a backtracing Armijo strategy will be employed

bool subspace_direct

if .subspace_direct is true, the subspace step will be calculated using a direct (factorization) method, while if it is false, an iterative (conjugate-gradient) method will be used.

bool subspace_alternate

if .subspace_alternate is true, the subspace step will alternate between a direct (factorization) method and an iterative (GLTR conjugate-gradient) method. This will override .subspace_direct

bool subspace_arc_search

if .subspace_arc_search is true, a piecewise arc search will be performed along the subspace step. Otherwise the search will stop at the firstconstraint encountered

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

bool generate_sif_file

if .generate_sif_file is .true. if a SIF file describing the current problem is to be generated

bool generate_qplib_file

if .generate_qplib_file is .true. if a QPLIB file describing the current problem is to be generated

char symmetric_linear_solver[31]

the name of the symmetric-indefinite linear equation solver used. Possible choices are currently: ‘sils’, ‘ma27’, ‘ma57’, ‘ma77’, ‘ma86’, ‘ma97’, ‘ssids’, ‘mumps’, ‘pardiso’, ‘mkl_pardiso’, ‘pastix’, ‘wsmp’, and ‘sytr’, although only ‘sytr’ and, for OMP 4.0-compliant compilers, ‘ssids’ are installed by default; others are easily installed (see README.external). More details of the capabilities of each solver are provided in the documentation for galahad_sls.

char definite_linear_solver[31]

the name of the definite linear equation solver used. Possible choices are currently: ‘sils’, ‘ma27’, ‘ma57’, ‘ma77’, ‘ma86’, ‘ma87’, ‘ma97’, ‘ssids’, ‘mumps’, ‘pardiso’, ‘mkl_pardiso’, ‘pastix’, ‘wsmp’, ‘potr’, ‘sytr’ and ‘pbtr’, although only ‘potr’, ‘sytr’, ‘pbtr’ and, for OMP 4.0-compliant compilers, ‘ssids’ are installed by default; others are easily installed (see README.external). More details of the capabilities of each solver are provided in the documentation for galahad_sls.

char unsymmetric_linear_solver[31]

the name of the unsymmetric linear equation solver used. Possible choices are currently: ‘gls’, ‘ma48’ and ‘getr’, although only ‘getr’ is installed by default; others are easily installed (see README.external). More details of the capabilities of each solver are provided in the documentation for galahad_uls.

char sif_file_name[31]

name of generated SIF file containing input problem

char qplib_file_name[31]

name of generated QPLIB file containing input problem

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 fdc_control_type fdc_control

control parameters for FDC

struct sls_control_type sls_control

control parameters for SLS

struct sbls_control_type sbls_control

control parameters for SBLS

struct gltr_control_type gltr_control

control parameters for GLTR