overview of functions provided#
// typedefs typedef float spc_; typedef double rpc_; typedef int ipc_; // structs struct cro_control_type; struct cro_inform_type; struct cro_time_type; // function calls void cro_initialize(void **data, struct cro_control_type* control, ipc_ *status); void cro_read_specfile(struct cro_control_type* control, const char specfile[]); void cro_crossover_solution( void **data, struct cro_control_type* control, struct cro_inform_type* inform, ipc_ n, ipc_ m, ipc_ m_equal, ipc_ h_ne, const rpc_ H_val[], const ipc_ H_col[], const ipc_ H_ptr[], ipc_ a_ne, const rpc_ A_val[], const ipc_ A_col[], const ipc_ A_ptr[], const rpc_ g[], const rpc_ c_l[], const rpc_ c_u[], const rpc_ x_l[], const rpc_ x_u[], rpc_ x[], rpc_ c[], rpc_ y[], rpc_ z[], ipc_ x_stat[], ipc_ c_stat[] ); void cro_terminate( void **data, struct cro_control_type* control, struct cro_inform_type* inform );
typedefs#
typedef float spc_
spc_
is real single precision
typedef double rpc_
rpc_
is the real working precision used, but may be changed to float
by
defining the preprocessor variable REAL_32
or (if supported) to
__real128
using the variable REAL_128
.
typedef int ipc_
ipc_
is the default integer word length used, but may be changed to
int64_t
by defining the preprocessor variable INTEGER_64
.
function calls#
void cro_initialize(void **data, struct cro_control_type* control, ipc_ *status)
Set default control values and initialize private data
Parameters:
data |
holds private internal data |
control |
is a struct containing control information (see cro_control_type) |
status |
is a scalar variable of type ipc_, that gives the exit status from the package. Possible values are (currently):
|
void cro_read_specfile(struct cro_control_type* control, const char specfile[])
Read the content of a specification file, and assign values associated with given keywords to the corresponding control parameters. An in-depth discussion of specification files is available, and a detailed list of keywords with associated default values is provided in $GALAHAD/src/cro/CRO.template. See also Table 2.1 in the Fortran documentation provided in $GALAHAD/doc/cro.pdf for a list of how these keywords relate to the components of the control structure.
Parameters:
control |
is a struct containing control information (see cro_control_type) |
specfile |
is a character string containing the name of the specification file |
void cro_crossover_solution( void **data, struct cro_control_type* control, struct cro_inform_type* inform, ipc_ n, ipc_ m, ipc_ m_equal, ipc_ h_ne, const rpc_ H_val[], const ipc_ H_col[], const ipc_ H_ptr[], ipc_ a_ne, const rpc_ A_val[], const ipc_ A_col[], const ipc_ A_ptr[], const rpc_ g[], const rpc_ c_l[], const rpc_ c_u[], const rpc_ x_l[], const rpc_ x_u[], rpc_ x[], rpc_ c[], rpc_ y[], rpc_ z[], ipc_ x_stat[], ipc_ c_stat[] )
Crosover the solution from a primal-dual to a basic one.
Parameters:
control |
is a struct whose members provide control paramters for the remaining prcedures (see cro_control_type). The parameter .status is as follows: |
data |
holds private internal data. |
inform |
is a struct containing output information (see cro_inform_type). The component .status gives the exit status from the package. Possible values are:
|
n |
is a scalar variable of type ipc_, that holds the number of variables. |
m |
is a scalar variable of type ipc_, that holds the number of general linear constraints. |
m_equal |
is a scalar variable of type ipc_, that holds the number of general linear equality constraints. Such constraints must occur first in \(A\). |
h_ne |
is a scalar variable of type ipc_, that holds the number of entries in the lower triangular part of the Hessian matrix \(H\). |
H_val |
is a one-dimensional array of type rpc_, that holds the values of the entries of the lower triangular part of the Hessian matrix \(H\). The entries are stored by consecutive rows, the order within each row is unimportant. |
H_col |
is a one-dimensional array of type ipc_, that holds the column indices of the lower triangular part of \(H\), in the same order as those in H_val. |
H_ptr |
is a one-dimensional array of size n+1 and type ipc_, that holds the starting position of each row of the lower triangular part of \(H\). The n+1-st component holds the total number of entries (plus one if fortran indexing is used). |
a_ne |
is a scalar variable of type ipc_, that holds the number of entries in the constraint Jacobian matrix \(A\). |
A_val |
is a one-dimensional array of type rpc_, that holds the values of the entries of the constraint Jacobian matrix \(A\). The entries are stored by consecutive rows, the order within each row is unimportant. Equality constraints must be ordered first. |
A_col |
is a one-dimensional array of size A_ne and type ipc_, that holds the column indices of \(A\) in the same order as those in A_val. |
A_ptr |
is a one-dimensional array of size m+1 and type ipc_, that holds the starting position of each row of \(A\). The m+1-st component holds the total number of entries (plus one if fortran indexing is used). |
g |
is a one-dimensional array of size n and type rpc_, that holds the linear term \(g\) of the objective function. The j-th component of g, j = 0, … , n-1, contains \(g_j\). |
c_l |
is a one-dimensional array of size m and type rpc_, that holds the lower bounds \(c^l\) on the constraints \(A x\). The i-th component of c_l, i = 0, … , m-1, contains \(c^l_i\). |
c_u |
is a one-dimensional array of size m and type rpc_, that holds the upper bounds \(c^l\) on the constraints \(A x\). The i-th component of c_u, i = 0, … , m-1, contains \(c^u_i\). |
x_l |
is a one-dimensional array of size n and type rpc_, that holds the lower bounds \(x^l\) on the variables \(x\). The j-th component of x_l, j = 0, … , n-1, contains \(x^l_j\). |
x_u |
is a one-dimensional array of size n and type rpc_, that holds the upper bounds \(x^l\) on the variables \(x\). The j-th component of x_u, j = 0, … , n-1, contains \(x^l_j\). |
x |
is a one-dimensional array of size n and type rpc_, that holds the values \(x\) of the optimization variables. The j-th component of x, j = 0, … , n-1, contains \(x_j\). |
c |
is a one-dimensional array of size m and type rpc_, that holds the residual \(c(x) = A x\). The i-th component of c, j = 0, … , n-1, contains \(c_j(x)\). |
y |
is a one-dimensional array of size n and type rpc_, that holds the values \(y\) of the Lagrange multipliers for the general linear constraints. The j-th component of y, j = 0, … , n-1, contains \(y_j\). |
z |
is a one-dimensional array of size n and type rpc_, that holds the values \(z\) of the dual variables. The j-th component of z, j = 0, … , n-1, contains \(z_j\). |
x_stat |
is a one-dimensional array of size n and type ipc_, that must be set on entry to give the status of the problem variables. If x_stat(j) is negative, the variable \(x_j\) is active on its lower bound, if it is positive, it is active and lies on its upper bound, and if it is zero, it is inactiive and lies between its bounds. On exit, the \(j\) -th component of x_stat is -1 if the variable is basic and active on its lower bound, -2 it is non-basic but active on its lower bound, 1 if it is basic and active on its upper bound, 2 it is non-basic but active on its upper bound, and 0 if it is inactive. |
c_stat |
is a one-dimensional array of size m and type ipc_, that must be set on entry to give the status of the general linear constraints. If c_stat(i) is negative, the constraint value \(a_i^Tx\) is active on its lower bound, if it is positive, it is active and lies on its upper bound, and if it is zero, it is inactiive and lies between its bounds. On exit, the \(i\) -th component of x_stat is -1 if the constraint is basic and active on its lower bound, -2 it is non-basic but active on its lower bound, 1 if it is basic and active on its upper bound, 2 it is non-basic but active on its upper bound, and 0 if it is inactive. |
void cro_terminate( void **data, struct cro_control_type* control, struct cro_inform_type* inform )
Deallocate all internal private storage
Parameters:
data |
holds private internal data |
control |
is a struct containing control information (see cro_control_type) |
inform |
is a struct containing output information (see cro_inform_type) |