Skip to content

Commit b44b36e

Browse files
committed
Merge remote-tracking branch 'origin/v9-minor'
2 parents 70a1a68 + ac9bea9 commit b44b36e

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ Fixed bugs
118118
- enable parameter limits/restarts by allowing to reach the restart limit in restartAllowed()
119119
- handle normalizing linear constraints in presolving with more caution to avoid numerical difficulties for integer variables with large coefficients
120120
- use quad precision to calculate residual activity bounds to reduce numerical errors for large variable bounds in cons_linear.c
121+
- in SCIPsolveProbingLP() when objective has been changed do not return cutoff due to exceeding the cutoff bound
122+
- set probing LP to be a relaxation only when objective has not been changed
121123

122124
Miscellaneous
123125
-------------

src/scip/scip_probing.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,8 @@ SCIP_RETCODE solveProbingLP(
745745
/* load the LP state (if necessary) */
746746
SCIP_CALL( SCIPtreeLoadProbingLPState(scip->tree, scip->mem->probmem, scip->set, scip->transprob, scip->eventqueue, scip->lp) );
747747

748-
SCIPlpSetIsRelax(scip->lp, TRUE);
748+
/* the LP is a relaxation if and only if the objective has not been changed */
749+
SCIPlpSetIsRelax(scip->lp, !scip->tree->probingobjchanged);
749750

750751
/* solve probing LP */
751752
SCIP_CALL( SCIPlpSolveAndEval(scip->lp, scip->set, scip->messagehdlr, scip->mem->probmem, scip->stat,
@@ -785,7 +786,7 @@ SCIP_RETCODE solveProbingLP(
785786
/* the LP is infeasible or the objective limit was reached */
786787
if( !(*lperror) && (SCIPlpGetSolstat(scip->lp) == SCIP_LPSOLSTAT_INFEASIBLE
787788
|| SCIPlpGetSolstat(scip->lp) == SCIP_LPSOLSTAT_OBJLIMIT ||
788-
(SCIPlpGetSolstat(scip->lp) == SCIP_LPSOLSTAT_OPTIMAL
789+
(SCIPlpGetSolstat(scip->lp) == SCIP_LPSOLSTAT_OPTIMAL && !scip->tree->probingobjchanged
789790
&& SCIPisGE(scip, SCIPgetLPObjval(scip), SCIPgetCutoffbound(scip)))) )
790791
{
791792
/* analyze the infeasible LP (only if all columns are in the LP and no external pricers exist) */

0 commit comments

Comments
 (0)