[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