SCIPcleanupRowprep2

Function SCIPcleanupRowprep2 

Source
pub unsafe extern "C" fn SCIPcleanupRowprep2(
    scip: *mut SCIP,
    rowprep: *mut SCIP_ROWPREP,
    sol: *mut SCIP_SOL,
    maxcoefbound: f64,
    success: *mut c_uint,
) -> SCIP_RETCODE
Expand description

Cleans up and attempts to improve rowprep without regard for violation

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 and side to have maximal coefficient in [1/maxcoefbound,maxcoefbound]. 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 absolute value of coefficients are below SCIPinfinity()
  • the absolute value of the side is below SCIPinfinity()

In difference to SCIPcleanupRowprep(), this function does not scale up the row to increase the absolute violation.