pub unsafe extern "C" fn SCIPcleanupRowprep(
scip: *mut SCIP,
rowprep: *mut SCIP_ROWPREP,
sol: *mut SCIP_SOL,
minviol: f64,
viol: *mut f64,
success: *mut c_uint,
) -> SCIP_RETCODEExpand description
Cleans up and attempts to improve rowprep
Drops small or large coefficients if their ratio is beyond separating/maxcoefratiofacrowprep / numerics/feastol, if this can be done by relaxing the row. Scales coefficients up to reach minimal violation, if possible. Scaling is omitted if violation is very small (\ref ROWPREP_SCALEUP_VIOLNONZERO) or maximal coefficient would become huge (\ref ROWPREP_SCALEUP_MAXMAXCOEF). Scales coefficients and side down if they are large and if the minimal violation is still reached. Rounds coefficients close to integral values to integrals, if this can be done by relaxing the row. Rounds side within epsilon of 0 to 0.0 or +/-1.1*epsilon, whichever relaxes the row least.
After return, the terms in the rowprep will be sorted by absolute value of coefficient, in decreasing order.
Thus, the coefratio can be obtained via REALABS(rowprep->coefs[0]) / REALABS(rowprep->coefs[rowprep->nvars-1]) (if nvars>0).
success is set to TRUE if and only if the rowprep satisfies the following:
- the coefratio is below separating/maxcoefratiofacrowprep / numerics/feastol
- the violation is at least
minviol - the violation is reliable or
minviol= 0 - the absolute value of coefficients are below SCIPinfinity()
- the absolute value of the side is below SCIPinfinity()