expo_control_type structure#

#include <galahad_expo.h>

struct expo_control_type {
    // components

    bool f_indexing;
    ipc_ error;
    ipc_ out;
    ipc_ print_level;
    ipc_ start_print;
    ipc_ stop_print;
    ipc_ print_gap;
    ipc_ max_it;
    ipc_ max_eval;
    ipc_ alive_unit;
    char alive_file[31];
    ipc_ update_multipliers_itmin;
    rpc_ update_multipliers_tol;
    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_s;
    rpc_ initial_mu;
    rpc_ mu_reduce;
    rpc_ obj_unbounded;
    rpc_ try_advanced_start;
    rpc_ try_sqp_start;
    rpc_ stop_advanced_start;
    rpc_ cpu_time_limit;
    rpc_ clock_time_limit;
    bool hessian_available;
    bool subproblem_direct;
    bool space_critical;
    bool deallocate_error_fatal;
    char prefix[31];
    struct bsc_control_type bsc_control;
    struct tru_control_type tru_control;
    struct ssls_control_type ssls_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_ max_it

the maximum number of iterations permitted

ipc_ max_eval

the maximum number of function evaluations permitted

ipc_ alive_unit

removal of the file alive_file from unit alive_unit terminates execution

char alive_file[31]

see alive_unit

ipc_ update_multipliers_itmin

update the Lagrange multipliers/dual variables from iteration .update_multipliers_itmin (<0 means never) and once the primal infeasibility is below .update_multipliers_tol

rpc_ update_multipliers_tol

see update_multipliers_itmin

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 infeasibility

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 complementary slackness

rpc_ stop_rel_c

see stop_abs_c

rpc_ stop_s

the smallest the norm of the step can be before termination

rpc_ initial_mu

initial value for the penalty parameter (<=0 means set automatically)

rpc_ mu_reduce

the amount by which the penalty parameter is decreased

rpc_ obj_unbounded

the smallest value the objective function may take before the problem is marked as unbounded

rpc_ try_advanced_start

try an advanced start at the end of every iteration when the KKT residuals are smaller than .try_advanced_start (-ve means never)

rpc_ try_sqp_start

try an advanced SQP start at the end of every iteration when the KKT residuals are smaller than .try_sqp_start (-ve means never)

rpc_ stop_advanced_start

stop the advanced start search once the residuals small tham .stop_advanced_start

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 (coming soon)?

bool subproblem_direct

use a direct (factorization) or (preconditioned) iterative method (coming soon) to find the search direction

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 bsc_control_type bsc_control

control parameters for BSC

struct tru_control_type tru_control

control parameters for TRU

struct ssls_control_type ssls_control

control parameters for SSLS