[Scip] scipoptsuite-3.0.0 and ziboptsuite2.1.1 give different results
Stefan Heinz
heinz at zib.de
Fri Nov 30 10:00:39 MET 2012
Hi everybody,
find attached a patch which fixes that issue. Thanks again, to those who
point out that issue to us.
All the best
Stefan
On 11/30/12 09:51, Timo Berthold wrote:
> tl;dr: Known bug in SCIP 3.0 with ranged rows which are parallel to
> objective function
>
> Dear Hélène,
>
> > I have recently upgraded my ziboptsuite version from 2.1.1 to 3.0.0.. I run
> a column generation program using version 2.1.1 and version 3.0.0. and
> I obtained
> > different results (I have changed nothing in my code).
>
> I think that is a known bug of SCIP 3.0.
>
> What happens is that in presolving, the sub-problem gets reduced to
> min -y20-y21-y24
> s.t.
> 1 <= y20+y21+y24 <= 2
>
> The SCIP 3.0 release has a known problem with instances for which the
> objective function is parallel to a ranged row.
>
> @Stefan: Could you send Hélène a patch for this?
>
> Actually, the output LP-file was wrong for the same reason (the
> constraint is incorrectly marked as "unnecessary").
>
> Best regards
> Gregor and Timo
>
> Am 29.11.2012 13:58, schrieb Hélène Toussaint:
>>
>> Dear all,
>>
>> I have recently upgraded my ziboptsuite version from 2.1.1 to 3.0.0..
>> I run a column generation program using version 2.1.1 and version
>> 3.0.0. and I obtained different results (I have changed nothing in my
>> code).
>>
>> During the column generation, I have written one of my pricing
>> problems into a file (before SCIPsolve) using SCIPwriteOrigProblem
>> and the transformed sub problem (after SCIPsolve()) using
>> SCIPwriteTransProblem. I have obtained the enclosed files subPb.lp
>> and subPbTrans.lp. In the transformed sub problem the constraints
>> have disappeared and so the solution found by SCIP (in solSubPb.txt)
>> does not respect the original constraints (all variables are set to 1).
>>
>> If I use SCIPreadProb to read the file written by
>> SCIPwriteOrigProblem and solve it with SCIPsolve then scip give me
>> the exact result !!
>>
>> Could you please help me to understand what happens ?
>>
>> Best regards,
>>
>> Hélène
>>
>>
>>
>> _______________________________________________
>> Scip mailing list
>> Scip at zib.de
>> http://listserv.zib.de/mailman/listinfo/scip
>
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> http://listserv.zib.de/mailman/listinfo/scip
-------------- next part --------------
--- a/src/scip/cons_linear.c
+++ b/src/scip/cons_linear.c
@@ -6533,11 +6530,22 @@ SCIP_RETCODE updateCutoffbound(
}
else
{
- /* in case the cutoff bound is worse then currently known one we avoid additionaly enforcement and
- * propagation
+ SCIP_CONSDATA* consdata;
+
+ consdata = SCIPconsGetData(cons);
+ assert(consdata != NULL);
+
+ /* we cannot disable the enforcement and propagation on ranged rows, because the cutoffbound could only have
+ * resulted from one side
*/
- SCIP_CALL( SCIPsetConsEnforced(scip, cons, FALSE) );
- SCIP_CALL( SCIPsetConsPropagated(scip, cons, FALSE) );
+ if( SCIPisInfinity(scip, -consdata->lhs) || SCIPisInfinity(scip, consdata->rhs) )
+ {
+ /* in case the cutoff bound is worse then the currently known one, we additionally avoid enforcement and
+ * propagation
+ */
+ SCIP_CALL( SCIPsetConsEnforced(scip, cons, FALSE) );
+ SCIP_CALL( SCIPsetConsPropagated(scip, cons, FALSE) );
+ }
}
return SCIP_OKAY;
More information about the Scip
mailing list