Control Parameters



Various controls exist within Xpress-SLP to govern the solution procedure and the form of the output. Some of these take integer values and act as switches between various types of behavior. Many are tolerances on values related to the convergence criteria; these are all double precision. There are also a few controls which are character strings, setting names for structures. Any of these may be altered by the user to enhance performance of the SLP algorithm. In most cases, the default values provided have been found to work well in practice over a range of problems and caution should be exercised if they are changed.

Users of the Xpress-SLP function library are provided with the following set of functions for setting and obtaining control values:

XSLPgetintcontrol XSLPgetdblcontrol XSLPgetstrcontrol
XSLPsetintcontrol XSLPsetdblcontrol XSLPsetstrcontrol

All the controls as listed in this chapter are prefixed with XSLP_. It is possible to use the above functions with control parameters for the Xpress Optimizer (controls prefixed with XPRS_). For details of the Optimizer controls, see the Optimizer manual.

Example of the usage of the functions:

XSLPgetintcontrol(Prob, XSLP_PRESOLVE, &presolve);
printf("The value of PRESOLVE was %d\n", presolve);
XSLPsetintcontrol(Prob, XSLP_PRESOLVE, 1-presolve);
printf("The value of PRESOLVE is now %d\n", 1-presolve);

The following is a list of all the Xpress-SLP controls:

XSLP_ALGORITHM
Bit map describing the SLP algorithm(s) to be used
XSLP_ATOL_A
Absolute delta convergence tolerance
XSLP_ATOL_R
Relative delta convergence tolerance
XSLP_AUGMENTATION
Bit map describing the SLP augmentation method(s) to be used
XSLP_AUTOSAVE
Frequency with which to save the model
XSLP_BARLIMIT
Number of initial SLP iterations using the barrier method
XSLP_CASCADE
Bit map describing the cascading to be used
XSLP_CASCADENLIMIT
Maximum number of iterations for cascading with non-linear determining rows
XSLP_CASCADETOL_PA
Absolute cascading print tolerance
XSLP_CASCADETOL_PR
Relative cascading print tolerance
XSLP_CONTROL
Bit map describing which Xpress-SLP functions also activate the corresponding Optimizer Library function
XSLP_CTOL
Closure convergence tolerance
XSLP_CVNAME
Name of the set of character variables to be used
XSLP_DAMP
Damping factor for updating values of variables
XSLP_DAMPEXPAND
Multiplier to increase damping factor during dynamic damping
XSLP_DAMPMAX
Maximum value for the damping factor of a variable during dynamic damping
XSLP_DAMPMIN
Minimum value for the damping factor of a variable during dynamic damping
XSLP_DAMPSHRINK
Multiplier to decrease damping factor during dynamic damping
XSLP_DAMPSTART
SLP iteration at which damping is activated
XSLP_DCLIMIT
Default iteration delay for delayed constraints
XSLP_DEFAULTIV
Default initial value for an SLP variable if none is explicitly given
XSLP_DEFAULTSTEPBOUND
Minimum initial value for the step bound of an SLP variable if none is explicitly given
XSLP_DELAYUPDATEROWS
Number of SLP iterations before update rows are fully activated
XSLP_DELTA_A
Absolute perturbation of values for calculating numerical derivatives
XSLP_DELTA_R
Relative perturbation of values for calculating numerical derivatives
XSLP_DELTA_X
Minimum absolute value of delta coefficients to be retained
XSLP_DELTA_Z
Zero tolerance used when calculating numerical derivatives
XSLP_DELTACOST
Initial penalty cost multiplier for penalty delta vectors
XSLP_DELTACOSTFACTOR
Factor for increasing cost multiplier on total penalty delta vectors
XSLP_DELTAFORMAT
Formatting string for creation of names for SLP delta vectors
XSLP_DELTAMAXCOST
Maximum penalty cost multiplier for penalty delta vectors
XSLP_DELTAOFFSET
Position of first character of SLP variable name used to create name of delta vector
XSLP_DELTAZLIMIT
Number of SLP iterations during which to apply XSLP_DELTA_Z
XSLP_DERIVATIVES
Method of calculating derivatives
XSLP_DJTOL
Tolerance on DJ value for determining if a variable is at its step bound
XSLP_ECFCHECK
Check feasibility at the point of linearization for extended convergence criteria
XSLP_ECFTOL_A
Absolute tolerance on testing feasibility at the point of linearization
XSLP_ECFTOL_R
Relative tolerance on testing feasibility at the point of linearization
XSLP_EQTOL_A
Absolute tolerance on equality testing in logical functions
XSLP_EQTOL_R
Relative tolerance on equality testing in logical functions
XSLP_ERRORCOST
Initial penalty cost multiplier for penalty error vectors
XSLP_ERRORCOSTFACTOR
Factor for increasing cost multiplier on total penalty error vectors
XSLP_ERRORMAXCOST
Maximum penalty cost multiplier for penalty error vectors
XSLP_ERROROFFSET
Position of first character of constraint name used to create name of penalty error vectors
XSLP_ERRORTOL_A
Absolute tolerance for error vectors
XSLP_ERRORTOL_P
Absolute tolerance for printing error vectors
XSLP_ESCALATION
Factor for increasing cost multiplier on individual penalty error vectors
XSLP_ETOL_A
Absolute tolerance on penalty vectors
XSLP_ETOL_R
Relative tolerance on penalty vectors
XSLP_EVALUATE
Evaluation strategy for user functions
XSLP_EVTOL_A
Absolute tolerance on total penalty costs
XSLP_EVTOL_R
Relative tolerance on total penalty costs
XSLP_EXCELVISIBLE
Display of Excel when evaluating user functions written in Excel
XSLP_EXPAND
Multiplier to increase a step bound
XSLP_EXTRACVS
Expansion number for character variables
XSLP_EXTRAUFS
Expansion number for user functions
XSLP_EXTRAXVITEMS
Expansion number for XV items
XSLP_EXTRAXVS
Expansion number for XVs
XSLP_FUNCEVAL
Bit map for determining the method of evaluating user functions and their derivatives
XSLP_GRANULARITY
Base for calculating penalty costs
XSLP_INFEASLIMIT
The maximum number of consecutive infeasible SLP iterations which can occur before Xpress-SLP terminates
XSLP_INFINITY
Value returned by a divide-by-zero in a formula
XSLP_ITERLIMIT
The maximum number of SLP iterations
XSLP_ITOL_A
Absolute impact convergence tolerance
XSLP_ITOL_R
Relative impact convergence tolerance
XSLP_IVNAME
Name of the set of initial values to be used
XSLP_LOG
Level of printing during SLP iterations
XSLP_MAXTIME
The maximum time in seconds that the SLP optimization will run before it terminates
XSLP_MAXWEIGHT
Maximum penalty weight for delta or error vectors
XSLP_MEM_CALCSTACK
Memory allocation for formula calculations
XSLP_MEM_COEF
Memory allocation for nonlinear coefficients
XSLP_MEM_COL
Memory allocation for additional information on matrix columns
XSLP_MEM_CVAR
Memory allocation for character variables
XSLP_MEM_DERIVATIVES
Memory allocation for analytic derivatives
XSLP_MEM_EXCELDOUBLE
Memory allocation for return values from Excel user functions
XSLP_MEM_FORMULA
Memory allocation for formulae
XSLP_MEM_FORMULAHASH
Memory allocation for internal formula array
XSLP_MEM_FORMULAVALUE
Memory allocation for formula values and derivatives
XSLP_MEM_ITERLOG
Memory allocation for SLP iteration summary
XSLP_MEM_RETURNARRAY
Memory allocation for return values from multi-valued user function
XSLP_MEM_ROW
Memory allocation for additional information on matrix rows
XSLP_MEM_STACK
Memory allocation for parsed formulae, analytic derivatives
XSLP_MEM_STRING
Memory allocation for strings of all types
XSLP_MEM_TOL
Memory allocation for tolerance sets
XSLP_MEM_UF
Memory allocation for user functions
XSLP_MEM_VALSTACK
Memory allocation for intermediate values for analytic derivatives
XSLP_MEM_VAR
Memory allocation for SLP variables
XSLP_MEM_XF
Memory allocation for complicated functions
XSLP_MEM_XFNAMES
Memory allocation for complicated function input and return names
XSLP_MEM_XFVALUE
Memory allocation for complicated function values
XSLP_MEM_XROW
Memory allocation for extended row information
XSLP_MEM_XV
Memory allocation for XVs
XSLP_MEM_XVITEM
Memory allocation for individual XV entries
XSLP_MEMORYFACTOR
Factor for expanding size of dynamic arrays in memory
XSLP_MINUSDELTAFORMAT
Formatting string for creation of names for SLP negative penalty delta vectors
XSLP_MINUSERRORFORMAT
Formatting string for creation of names for SLP negative penalty error vectors
XSLP_MINWEIGHT
Minimum penalty weight for delta or error vectors
XSLP_MIPALGORITHM
Bitmap describing the MISLP algorithms to be used
XSLP_MIPCUTOFF_A
Absolute objective function cutoff for MIP termination
XSLP_MIPCUTOFF_R
Absolute objective function cutoff for MIP termination
XSLP_MIPCUTOFFCOUNT
Number of SLP iterations to check when considering a node for cutting off
XSLP_MIPCUTOFFLIMIT
Number of SLP iterations to check when considering a node for cutting off
XSLP_MIPDEFAULTALGORITHM
Default algorithm to be used during the global search in MISLP
XSLP_MIPFIXSTEPBOUNDS
Bitmap describing the step-bound fixing strategy during MISLP
XSLP_MIPITERLIMIT
Maximum number of SLP iterations at each node
XSLP_MIPLOG
Frequency with which MIP status is printed
XSLP_MIPOCOUNT
Number of SLP iterations at each node over which to measure objective function variation
XSLP_MIPOTOL_A
Absolute objective function tolerance for MIP termination
XSLP_MIPOTOL_R
Relative objective function tolerance for MIP termination
XSLP_MIPRELAXSTEPBOUNDS
Bitmap describing the step-bound relaxation strategy during MISLP
XSLP_MTOL_A
Absolute effective matrix element convergence tolerance
XSLP_MTOL_R
Relative effective matrix element convergence tolerance
XSLP_MVTOL
Marginal value tolerance for determining if a constraint is slack
XSLP_OBJSENSE
Objective function sense
XSLP_OBJTOPENALTYCOST
Factor to estimate initial penalty costs from objective function
XSLP_OCOUNT
Number of SLP iterations over which to measure objective function variation for static objective (2) convergence criterion
XSLP_OTOL_A
Absolute static objective (2) convergence tolerance
XSLP_OTOL_R
Relative static objective (2) convergence tolerance
XSLP_PENALTYCOLFORMAT
Formatting string for creation of the names of the SLP penalty transfer vectors
XSLP_PENALTYROWFORMAT
Formatting string for creation of the names of the SLP penalty rows
XSLP_PLUSDELTAFORMAT
Formatting string for creation of names for SLP positive penalty delta vectors
XSLP_PLUSERRORFORMAT
Formatting string for creation of names for SLP positive penalty error vectors
XSLP_PRESOLVE
Bitmap indicating the SLP presolve actions to be taken
XSLP_PRESOLVEPASSLIMIT
Maximum number of passes through the problem to improve SLP bounds
XSLP_PRESOLVEZERO
Minimum absolute value for a variable which is identified as nonzero during SLP presolve
XSLP_SAMECOUNT
Number of steps reaching the step bound in the same direction before step bounds are increased
XSLP_SAMEDAMP
Number of steps in same direction before damping factor is increased
XSLP_SBLOROWFORMAT
Formatting string for creation of names for SLP lower step bound rows
XSLP_SBNAME
Name of the set of initial step bounds to be used
XSLP_SBROWOFFSET
Position of first character of SLP variable name used to create name of SLP lower and upper step bound rows
XSLP_SBSTART
SLP iteration after which step bounds are first applied
XSLP_SBUPROWFORMAT
Formatting string for creation of names for SLP upper step bound rows
XSLP_SCALE
When to re-scale the SLP problem
XSLP_SCALECOUNT
Iteration limit used in determining when to re-scale the SLP matrix
XSLP_SHRINK
Multiplier to reduce a step bound
XSLP_SLPLOG
Frequency with which SLP status is printed
XSLP_STOL_A
Absolute slack convergence tolerance
XSLP_STOL_R
Relative slack convergence tolerance
XSLP_STOPOUTOFRANGE
Stop optimization and return error code if internal function argument is out of range
XSLP_TIMEPRINT
Print additional timings during SLP optimization
XSLP_TOLNAME
Name of the set of tolerance sets to be used
XSLP_UNFINISHEDLIMIT
Number of times within one SLP iteration that an unfinished LP optimization will be continued
XSLP_UPDATEFORMAT
Formatting string for creation of names for SLP update rows
XSLP_UPDATEOFFSET
Position of first character of SLP variable name used to create name of SLP update row
XSLP_VALIDATIONTOL_A
Absolute tolerance for the XSLPvalidate procedure
XSLP_VALIDATIONTOL_R
Relative tolerance for the XSLPvalidate procedure
XSLP_VCOUNT
Number of SLP iterations over which to measure static objective (3) convergence
XSLP_VLIMIT
Number of SLP iterations after which static objective (3) convergence testing starts
XSLP_VTOL_A
Absolute static objective (3) convergence tolerance
XSLP_VTOL_R
Relative static objective (3) convergence tolerance
XSLP_WCOUNT
Number of SLP iterations over which to measure the objective for the extended convergence continuation criterion
XSLP_WTOL_A
Absolute extended convergence continuation tolerance
XSLP_WTOL_R
Relative extended convergence continuation tolerance
XSLP_XCOUNT
Number of SLP iterations over which to measure static objective (1) convergence
XSLP_XLIMIT
Number of SLP iterations up to which static objective (1) convergence testing starts
XSLP_XTOL_A
Absolute static objective function (1) tolerance
XSLP_XTOL_R
Relative static objective function (1) tolerance
XSLP_ZERO
Absolute zero tolerance

Double control parameters

Integer control parameters

Memory control parameters

Memory control parameters are integer controls which can be used to define a minimum number of items for which space should be provided. For example, to allow space for at least 5000 coefficients, set XSLP_MEM_COEF to 5000.

Normally, Xpress-SLP will expand the memory required for items as the number grows. However, this process can be inefficient in the use of available memory and can, in any case, take time. If the system runs out of memory, then an error message will be produced and normally a list of current memory requirements will be printed. Alternatively, the library function XSLPuprintmemory can be used to print the memory currently in use. The following is an example of the information produced:

Arrays and dimensions:
Array    Item      Used      Max   Allocated   Memory
         Size     Items     Items     Memory   Control
MemList    28       103       129         4K
String      1    206891    219888       215K   XSLP_MEM_STRING
Xv         16      1282      2000        32K   XSLP_MEM_XV
Xvitem     48      1382      1600        75K   XSLP_MEM_XVITEM
UserFunc   80         2      1000        79K   XSLP_MEM_UF
IntlFunc   80        45        48         4K
Vars      136      1685      2000       266K   XSLP_MEM_VAR
Coef       40      4631      4633       181K   XSLP_MEM_COEF
Formula    48      1415      2000        94K   XSLP_MEM_FORMULA
ToknStak   16     10830     13107       205K   XSLP_MEM_STACK
Cols       48      8163      8192       384K   XSLP_MEM_COL
Rows       40      4596      5120       200K   XSLP_MEM_ROW
Xrows      48      1607      2000        94K   XSLP_MEM_XROW
FormValu   16      3182      3184        50K   XSLP_MEM_FORMULAVALUE
XPRSrow     4     12883     13155        52K
XPRScol     4     12883     13155        52K
XPRScoef    8     12883     13155       103K
XPRSetyp    1     12883     13155        13K
CalcStak   24         1      1000        24K   XSLP_MEM_CALCSTACK
XPRSrhrw    4      1492      1494         6K
XPRSrhel    8      1492      1494        12K

Used Items is the number of items actually in use; Max Items is the number currently allocated, which is reflected in the Allocated Memory figure. Where there is an option to change the size of the allocation, the name of the memory control parameter is given. So, for example, to set the initial size of the Xrows array to 1650, use the following:

XSLPsetintcontrol(Prob, XSLP_MEM_XROW, 1650);

This will have two effects: the array will be allocated from the start with 1650 items, so there will be no need to expand the array as items are loaded or created; the array will be large enough to hold the items required but will have less unused space, so there will be more memory available for other arrays if necessary.

The following is a list of the memory control parameters that can be set with an indication of the type of array for which they are used. The current value can be retrieved using XSLPgetintcontrol, or the full set can be listed using XSLPuprintmemory.

String control parameters



If you have any comments or suggestions about these pages, please send mail to docs@dashoptimization.com.