[Scip] Early Branching issues

Jose L Walteros jl.walteros at gmail.com
Thu Feb 7 19:56:51 MET 2013


Hi Stefan,

Yesterday I gave up with the pricer deactivation and tried to continue
through the (*result= SCIP_SUCCESS) path.


This is the piece of the code I have:
if(nconsstree>EARLY_BRANCHING_LIMIT){
(*success) = TRUE;
for(s=0;s<n;s++)
{
for(i=0;i<m;i++)
{
SCIP_CALL( SCIPsetConsModifiable(scip, conss[s][i], FALSE) );
}
}
SCIP_CALL( SCIPsetSeparating(scip, SCIP_PARAMSETTING_AGGRESSIVE, TRUE) );
return SCIP_OKAY;
}

I am positive that the constraints I am using are the transformed ones
because those are the ones present in the pricer's data structure and as
far as I know those have to be the transformed ones, otherwise I would not
be able to update them with new columns.

To make sure they are the transformed ones I also tried:

SCIP_CONS* cons;
if(nnodes>EARLY_BRANCHING_LIMIT){
(*success) = TRUE;
for(s=0;s<n;s++)
{
for(i=0;i<m;i++)
{
SCIP_CALL( SCIPgetTransformedCons(scip, conss[s][i], &cons ));
SCIP_CALL( SCIPsetConsModifiable(scip, cons, FALSE) );
}
}
SCIP_CALL( SCIPsetSeparating(scip, SCIP_PARAMSETTING_AGGRESSIVE, TRUE) );
return SCIP_OKAY;
}

but no cuts are generated. I am stuck here, I will appreciate some help

Thank for your help


On Thu, Feb 7, 2013 at 5:32 AM, Stefan Heinz <heinz at zib.de> wrote:

> Hi Jose,
>
>
>
> On 02/07/13 04:32, Jose L Walteros wrote:
>
>> Hi Stefan,
>>
>> I was originally setting a flag inside of the pricer that acivates when
>> the number of nodes was above a given threshold k.
>> Then, once the flag was activated, I was calling:
>>
>> pricer = SCIPfindPricer(scip, PRICER_NAME);
>> SCIP_CALL( SCIPdeactivatePricer(scip, pricer) );
>> SCIP_CALL(SCIPrestartSolve(**scip) );
>>
>> for(s=0;s<n;s++)
>> {
>> for(i=0;i<m;i++)
>> {
>> SCIP_CALL( SCIPsetConsModifiable(scip, conss[s][i], FALSE) );
>> }
>> }
>> SCIP_CALL( SCIPsetSeparating(scip, SCIP_PARAMSETTING_AGGRESSIVE, TRUE) );
>>
>>
>> I was getting the following error, which I thought i was because the call
>> was inside the pricer:
>> cannot call method <SCIPdeactivatePricer> in solving stage
>>
> Instead of deactivation the pricer, just return within your pricer without
> doing anything and pretend that all columns/variables are generated
> (*result = SCIP_SUCCESS). If you are not pretending that all
> columns/variables are there and force an early branching, then the LP is
> officially not solved to optimality. Meaning that all separators are not
> starting since they need an optimal basis.
>
>
>
>
>> Then, What I tried to do then was to code an event handler that catches
>> and SCIP_EVENTTYPE_NODEFOCUSED
>>
>> and then deactivates the pricer. Unfortunately, I'm still getting the
>> same error.
>>
>> I checked the reference file and it seems that deactivate pricer can only
>> be called in the stages:
>> SCIP_STAGE_PROBLEM
>> SCIP_STAGE_EXITSOLVE
>>
>>
>> Also, If I just use in the event handler:
>>
>> for(s=0;s<n;s++)
>> {
>> for(i=0;i<m;i++)
>> {
>> SCIP_CALL( SCIPsetConsModifiable(scip, conss[s][i], FALSE) );
>> }
>> }
>> SCIP_CALL( SCIPsetSeparating(scip, SCIP_PARAMSETTING_AGGRESSIVE, TRUE) );
>>
> Regarding the modifiable flag. Please make sure that you change the flags
> of the transformed constraints and not of the original once.
>
> Best Stefan
>
>>
>> It does not generate any cuts.
>>
>> Thanks for your help
>>
>> -Jose
>>
>>
>> On Wed, Feb 6, 2013 at 6:31 PM, Stefan Heinz <heinz at zib.de <mailto:
>> heinz at zib.de>> wrote:
>>
>>     Hi Jose,
>>
>>
>>     On 02/07/2013 12:20 AM, Jose L Walteros wrote:
>>
>>         Hi Stefan,
>>
>>         Thanks for your quick response,  I changed the code as you
>>         suggested (I am
>>         also changing some other parameters and I guess I confused the
>>         TRUE
>>         parameter as the way to do it, thanks for the clarification)
>>         but still no
>>         additional cut are generated.
>>
>>         I am using now:
>>
>>         SCIP_CALL( SCIPsetSeparating(scip,
>>         SCIP_PARAMSETTING_AGGRESSIVE, TRUE) );
>>
>>         I also tried the default.
>>
>>         For this formulation all the constraints of the master problem
>>         are Set
>>         Partitioning constraints defined as:
>>
>>         SCIP_CALL( SCIPcreateConsBasicSetpart(**scip, &(conss[s][i]),
>>         name, 0, NULL)
>>         );
>>         SCIP_CALL( SCIPsetConsModifiable(scip, conss[s][i], TRUE) );
>>
>>     One think, if you stop generating new variables completely, you
>>     should change the "modifiable" flag of the constraints to FALSE.
>>     Additionally you could turn off your pricer(s) and force a
>>     restart. That would run presolving for example again. Check the
>>     method SCIPrestartSolve():
>>
>>     http://scip.zib.de/doc/html/**scip_8h.shtml#**
>> a08e665c374c599f96c4968ce8cf10**8ba<http://scip.zib.de/doc/html/scip_8h.shtml#a08e665c374c599f96c4968ce8cf108ba>
>>
>>     I am not sure but the modifiable issue can be the/a reason for not
>>     executing the separation. Try it and if does not work, I will
>>     check the code (during the day tomorrow).
>>
>>     Best and good night Stefan
>>
>>
>>
>>         I know  that no separators are called because in the execution
>>         summary the
>>         number of calls to all separators is zero.
>>
>>         Is there anything I am missing?
>>
>>         Thanks
>>
>>         -Jose
>>
>>
>>
>>
>>
>>
>>         On Wed, Feb 6, 2013 at 5:53 PM, Stefan Heinz <heinz at zib.de
>>         <mailto:heinz at zib.de>> wrote:
>>
>>             Hi Jose,
>>
>>             It should be possible to turn on the separation. The bool
>>             parameter you
>>             changed from TRUE to FALSE has nothing to with turning on
>>             or off the "OFF"
>>             mode.
>>
>>             http://scip.zib.de/doc/html/****scip_8h.shtml#**<http://scip.zib.de/doc/html/**scip_8h.shtml#**>
>>             af91abf95639f1bf2022c11d13a032****b10<http://scip.zib.de/doc/
>> **html/scip_8h.shtml#**af91abf95639f1bf2022c11d13a032**b10<http://scip.zib.de/doc/html/scip_8h.shtml#af91abf95639f1bf2022c11d13a032b10>
>> >
>>
>>
>>
>>             It does the parameter change "quite" or not. Meaning with
>>             or without an
>>             output via the message handler. You need to change the
>>             second parameter to
>>             one of the followings:
>>
>>             * SCIP_PARAMSETTING_DEFAULT which are the default values
>>             of all separating
>>             parameters
>>
>>             * SCIP_PARAMSETTING_FAST such that the time spend for
>>             separating is
>>             decreased
>>
>>             * SCIP_PARAMSETTING_AGGRESSIVE such that the separating is
>>             done more
>>             aggregative
>>
>>             * SCIP_PARAMSETTING_OFF which turn off all separating
>>
>>             Probably you want to try SCIP_PARAMSETTING_DEFAULT first.
>>
>>             Best Stefan
>>
>>
>>             On 02/06/2013 09:59 PM, Jose L Walteros wrote:
>>
>>                 Hi all,
>>
>>                 I am solving a problem via Branch and Price. For one
>>                 of my experiments, I
>>                 am interested in stopping the pricing at a certain
>>                 point in the B&B tree
>>                 to
>>                 heuristically obtain a good solution. Since I am no
>>                 longer pricing new
>>                 variables, I am wondering if it is possible to
>>                 activate the separate
>>                 algorithms to add default SCIP cutting planes after no
>>                 more columns are
>>                 generated.
>>
>>                 I tried to play with SCIP_CALL( SCIPsetSeparating(scip,
>>                 SCIP_PARAMSETTING_OFF, TRUE) ); changing it from TRUE
>>                 to FALSE but I did
>>                 not get the expected beheavior.
>>
>>                 Tanks
>>
>>                 -Jose
>>
>>
>>
>>                 ______________________________****_________________
>>                 Scip mailing list
>>                 Scip at zib.de <mailto:Scip at zib.de>
>>                 http://listserv.zib.de/****mailman/listinfo/scip<http://listserv.zib.de/**mailman/listinfo/scip>
>> <http://**listserv.zib.de/mailman/**listinfo/scip<http://listserv.zib.de/mailman/listinfo/scip>
>> >
>>
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserv.zib.de/mailman/private/scip/attachments/20130207/d232af2b/attachment.html


More information about the Scip mailing list