The Xpress-SLP Log
The Xpress-SLP log consists of log lines of two different types: the output of the underlying XPRS optimizer, and the log of XSLP itself.
Output is sent to the screen (stdout) by default, but may be intercepted by a user function using the user output callback; see XSLPsetcbmessage. However, under Windows, no output from the Optimizer DLL is sent to the screen. The user must define a callback function and print messages to the screen them self if they wish output to be displayed.
Logging controls
General SLP logging
XPRS_OUTPUTLOG | Logging level of the underlying XPRS problem |
XPRS_LPLOG | Logging frequency for solving the linearization |
XPRS_MIPLOG | Logging frequency for the MIP solver |
Logging for the underlying XPRS problem
XSLP_LOG | Level of SLP logging (iteration, penalty, convergence) |
XSLP_SLPLOG | Logging frequency for SLP iterations |
XSLP_MIPLOG | MI-SLP specific logging |
Special logging settings
XPRS_DCLOG | Logging of delayed constraint activation |
XSLP_ERRORTOL_P | Absolute tolerance for printing error vectors |
The structure of the log
The typical log with the default settings starts with statistics about the problem sizes. On the Polygon1.mps example, using the XSLP console program this looks like
[xpress mps] readprob Polygon1.mps Reading Problem Polygon Problem Statistics 11 ( 0 spare) rows 10 ( 4 spare) structural columns 8 ( 0 spare) non-zero elements Global Statistics 0 entities 0 sets 0 set members PV: 0 DC: 0 DR: 0 EC: 0 IV: 0 RX: 0 TX: 0 SB: 0 UF: 0 WT: 0 XV: 0 Total: 0 Xpress-SLP Statistics: 7 coefficients 9 SLP variables
The standard XPRS optimizer problem loading statistics is extended with a report about the special structures possibly present in the problem, including DC (delayed constraints), DR (determining rows), EC (enforced constraints), IV (initial values), RX/TX (relative and absolute tolerances), SB (initial step bounds), UF (user functions), WT (initial row weights), followed by a statistics about the number of SLP coefficients and variables.
----------------------------------------------------------------- SLP iteration 1, 0s Minimizing LP Polygon Original problem has: 20 rows 27 cols 68 elements Presolved problem has: 0 rows 0 cols 0 elements Its Obj Value S Ninf Nneg Sum Inf Time 0 828864.7136 D 0 0 .000000 0 Uncrunching matrix 0 828864.7136 D 0 0 .000000 0 Optimal solution found 8 unconverged values (at least 1 in active constraints) Total feasibility error costs 829100.765742 Penalty Error Vectors - Penalties scaled by 200 Variable Activity Penalty BE-V1V4 1381.836001 1.000000 BE-V2V4 1381.834610 1.000000 BE-V3V4 1381.833218 1.000000 Total: 4145.503829 Error Costs: 829100.765742 Penalty Delta Costs: 0.000000 Net Objective: -236.052107 ----------------------------------------------------------------- SLP iteration 2, 0s Minimizing LP Polygon Original problem has: 20 rows 27 cols 73 elements Presolved problem has: 0 rows 0 cols 0 elements Its Obj Value S Ninf Nneg Sum Inf Time 0 -3.13860E-05 D 0 0 .000000 0 Uncrunching matrix 0 -3.13860E-05 D 0 0 .000000 0 Optimal solution found 4 unconverged values (at least 1 in active constraints) ----------------------------------------------------------------- SLP iteration 3, 0s Minimizing LP Polygon Original problem has: 20 rows 27 cols 72 elements Presolved problem has: 0 rows 0 cols 0 elements Its Obj Value S Ninf Nneg Sum Inf Time 0 -1.56933E-05 D 0 0 .000000 0 Uncrunching matrix 0 -1.56933E-05 D 0 0 .000000 0 Optimal solution found
The default solution log consists of the optimizer output of solving the linearizations, followed by statistics of the nonlinear infeasibilities, the penalty and the objective, and the convergence status.
----------------------------------------------------------------- Iteration summary Itr. LPS NetObj ErrorSum ErrorCost Unconv. Extended Action 1 O -236.052107 4145.503829 829100.7657 8 0 2 O -3.13860E-05 .000000 .000000 4 0 3 O -1.56932E-05 .000000 .000000 0 0 Xpress-SLP stopped after 3 iterations. 0 unconverged items No unconverged values in active constraints
The final iteration summary contains the following fields:
Itr: The iteration number.
LPS: The LP status of the linearization, which can take the following values:
O | Linearization is optimal |
I | Linearization is infeasible |
U | Linearization is unbounded |
X | Solving the linearization was interupted |
NetObj: The net objective of the SLP iteration.
ErrorSum: Sum of the error delta variables. A measure of infeasibility.
ErrorCost: The value of the weighted error delta variables in the objective. A measure of the effort needed to push the model towards feasiblity.
Unconv: The number of SLP variables that are not converged.
Extended: The number of SLP variables that are converged, but only by extended criteria
Action: The special actions that happened in the iteration. These can be
0 | Failed line search (non-improving) |
B | Enforcing step bounds |
E | Some infeasible rows were enforced |
G | Global variables were fixed |
P | The solution needed polishing, postsolve instability |
P! | Solution polishing failed |
R | Penalty error vectors were removed |
V | Feasiblity validation induces further iterations |
K | Optimality validation induces further iterations |
The presence of a P! suggests that the problem is particularly hard to solve without postsolve, and the model might benefit from setting XSLP_NOLPPOLISHING on XSLP_ALGORITHM (please note, that this should only be considered if the solution polishing features is very slow or fails, as the numerical inaccuracies it aims to remove can cause other problems to the solution process).