wcp_control_type structure#

#include <galahad_wcp.h>

struct wcp_control_type {
    // components

    bool f_indexing;
    ipc_ error;
    ipc_ out;
    ipc_ print_level;
    ipc_ start_print;
    ipc_ stop_print;
    ipc_ maxit;
    ipc_ initial_point;
    ipc_ factor;
    ipc_ max_col;
    ipc_ indmin;
    ipc_ valmin;
    ipc_ itref_max;
    ipc_ infeas_max;
    ipc_ perturbation_strategy;
    ipc_ restore_problem;
    rpc_ infinity;
    rpc_ stop_p;
    rpc_ stop_d;
    rpc_ stop_c;
    rpc_ prfeas;
    rpc_ dufeas;
    rpc_ mu_target;
    rpc_ mu_accept_fraction;
    rpc_ mu_increase_factor;
    rpc_ required_infeas_reduction;
    rpc_ implicit_tol;
    rpc_ pivot_tol;
    rpc_ pivot_tol_for_dependencies;
    rpc_ zero_pivot;
    rpc_ perturb_start;
    rpc_ alpha_scale;
    rpc_ identical_bounds_tol;
    rpc_ reduce_perturb_factor;
    rpc_ reduce_perturb_multiplier;
    rpc_ insufficiently_feasible;
    rpc_ perturbation_small;
    rpc_ cpu_time_limit;
    rpc_ clock_time_limit;
    bool remove_dependencies;
    bool treat_zero_bounds_as_general;
    bool just_feasible;
    bool balance_initial_complementarity;
    bool use_corrector;
    bool space_critical;
    bool deallocate_error_fatal;
    bool record_x_status;
    bool record_c_status;
    char prefix[31];
    struct fdc_control_type fdc_control;
    struct sbls_control_type sbls_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_ maxit

at most maxit inner iterations are allowed

ipc_ initial_point

how to choose the initial point. Possible values are

  • 0 the values input in X, shifted to be at least prfeas from their nearest bound, will be used

  • 1 the nearest point to the “bound average” 0.5(X_l+X_u) that satisfies the linear constraints will be used

ipc_ factor

the factorization to be used. Possible values are

  • 0 automatic

  • 1 Schur-complement factorization

  • 2 augmented-system factorization

ipc_ max_col

the maximum number of nonzeros in a column of A which is permitted with the Schur-complement factorization

ipc_ indmin

an initial guess as to the integer workspace required by SBLS

ipc_ valmin

an initial guess as to the real workspace required by SBLS

ipc_ itref_max

the maximum number of iterative refinements allowed

ipc_ infeas_max

the number of iterations for which the overall infeasibility of the problem is not reduced by at least a factor .required_infeas_reduction before the problem is flagged as infeasible (see required_infeas_reducti

ipc_ perturbation_strategy

the strategy used to reduce relaxed constraint bounds. Possible values are

  • 0 do not perturb the constraints

  • 1 reduce all perturbations by the same amount with linear reduction

  • 2 reduce each perturbation as much as possible with linear reduction

  • 3 reduce all perturbations by the same amount with superlinear reduction

  • 4 reduce each perturbation as much as possible with superlinear reduction

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

rpc_ infinity

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

rpc_ stop_p

the required accuracy for the primal infeasibility

rpc_ stop_d

the required accuracy for the dual infeasibility

rpc_ stop_c

the required accuracy for the complementarity

rpc_ prfeas

initial primal variables will not be closer than prfeas from their bound

rpc_ dufeas

initial dual variables will not be closer than dufeas from their bounds

rpc_ mu_target

the target value of the barrier parameter. If mu_target is not positive, it will be reset to an appropriate value

rpc_ mu_accept_fraction

the complemtary slackness x_i.z_i will be judged to lie within an acceptable margin around its target value mu as soon as mu_accept_fraction * mu <= x_i.z_i <= ( 1 / mu_accept_fraction ) * mu; the perturbations will be reduced as soon as all of the complemtary slacknesses x_i.z_i lie within acceptable bounds. mu_accept_fraction will be reset to ensure that it lies in the interval (0,1]

rpc_ mu_increase_factor

the target value of the barrier parameter will be increased by mu_increase_factor for infeasible constraints every time the perturbations are adjusted

rpc_ required_infeas_reduction

if the overall infeasibility of the problem is not reduced by at least a factor required_infeas_reduction over .infeas_max iterations, the problem is flagged as infeasible (see infeas_max)

rpc_ implicit_tol

any primal or dual variable that is less feasible than implicit_tol will be regarded as defining an implicit constraint

rpc_ pivot_tol

the threshold pivot used by the matrix factorization. See the documentation for SBLS for details (obsolete)

rpc_ pivot_tol_for_dependencies

the threshold pivot used by the matrix factorization when attempting to detect linearly dependent constraints. See the documentation for SBLS for details (obsolete)

rpc_ zero_pivot

any pivots smaller than zero_pivot in absolute value will be regarded to zero when attempting to detect linearly dependent constraints (obsolete)

rpc_ perturb_start

the constraint bounds will initially be relaxed by perturb_start; this perturbation will subsequently be reduced to zero. If perturb_start < 0, the amount by which the bounds are relaxed will be computed automatically

rpc_ alpha_scale

the test for rank defficiency will be to factorize

\[\begin{split}\left(\begin{array}{cc}\alpha I & A^T_{\cal E} \\ A^{}_{\cal E} & 0 \end{array}\right)\end{split}\]
for \(\alpha =\) alpha_scale

rpc_ identical_bounds_tol

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

rpc_ reduce_perturb_factor

the constraint perturbation will be reduced as follows:

    • if the variable lies outside a bound, the corresponding perturbation will be reduced to reduce_perturb_factor * current pertubation

      • ( 1 - reduce_perturb_factor ) * violation

    • otherwise, if the variable lies within insufficiently_feasible of its bound the pertubation will be reduced to

      • reduce_perturb_multiplier * current pertubation

    • otherwise if will be set to zero

rpc_ reduce_perturb_multiplier

see reduce_perturb_factor

rpc_ insufficiently_feasible

see reduce_perturb_factor

rpc_ perturbation_small

if the maximum constraint pertubation is smaller than perturbation_small and the violation is smaller than implicit_tol, the method will deduce that there is a feasible point but no interior

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 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 just_feasible

if .just_feasible is true, the algorithm will stop as soon as a feasible point is found. Otherwise, the optimal solution to the problem will be found

bool balance_initial_complementarity

if .balance_initial_complementarity is .true. the initial complemetarity will be balanced

bool use_corrector

if .use_corrector, a corrector step will be used

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 record_x_status

if .record_x_status is true, the array inform.X_status will be allocated and the status of the bound constraints will be reported on exit.

bool record_c_status

if .record_c_status is true, the array inform.C_status will be allocated and the status of the general constraints will be reported on exit.

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 sbls_control_type sbls_control

control parameters for SBLS