[SCIP] delaying pricing

James Cussens james.cussens at york.ac.uk
Tue Jul 21 14:43:55 CEST 2020


Hi Stephen,

Thanks for that. I was looking for a non-hacky way of doing this and I
think your first option is the neatest. Thanks for pointing out that the
last separation round before pricing kicks in must add at least one cut - I
would have missed that. One way of deciding that a sufficient number of
cuts have been added is to observe that my constraint handler has not
generated any in a separation round. So in this case I guess I will have to
throw in a dummy cut to ensure that pricing happens.

James

On Mon, 20 Jul 2020 at 07:44, Maher, Stephen <S.J.Maher at exeter.ac.uk> wrote:

> Hi James,
>
> There is no way within the default SCIP methods that will enable you to
> achieve what you want. However, it is easily possible to delay the pricing
> until you have added a sufficient number of cuts.
>
> The most "SCIP" way of achieving this is the following:
>
> First, you should define a new boolean variable in your pricer data
> "pricingactive" to indicate whether the pricing should be performed. This
> will be a parameter for your pricer, which you add to the SCIP parameters
> using the function "SCIPaddBoolParam", with the default value FALSE. In
> pricerredcost, while pricingactive is FALSE, then exit the pricing with the
> result SCIP_SUCCESS. This will indicate that the LP is solved and
> separation can be performed.
>
> Second, in you constraint handler, when you have reached a sufficient
> number of cuts, then you set the parameter for "pricingactive" to TRUE. It
> is important that you change this parameter in a call to the separation
> routine that adds at least one cut. The addition of a cut will ensure that
> the LP is resolved and the pricing loop is performed.
>
> The less "SCIP" way would not use a new parameter. You still need the
> variable "pricingactive" in your pricer data, but you can write a public
> function in your pricer that changes this variable value. You would then
> include the header for your pricer in your constraint handler. The second
> step from above is still required, but using your new public function.
>
> Cheers,
>
> Steve
>
> ------------------------------
> *From:* Scip <scip-bounces at zib.de> on behalf of James Cussens <
> james.cussens at york.ac.uk>
> *Sent:* 17 July 2020 17:58
> *To:* scip at zib.de <scip at zib.de>
> *Subject:* [SCIP] delaying pricing
>
> CAUTION: This email originated from outside of the organisation. Do not
> click links or open attachments unless you recognise the sender and know
> the content is safe.
>
> Hi SCIPers,
>
> I am working on a branch-cut-and-price SCIP project. I have a constraint
> handler that adds lots of cuts (using a fairly large initial set of
> variables). I would like to delay pricing until quite a few rounds of
> cutting have taken place since I use the dual values of these cuts in
> pricing and I suspect that having lots of cuts in place will both speed up
> the pricing process and reduce the number of potential variables with
> negative reduced cost.
>
> In short I don't want to use the initial LP for pricing but the LP I get
> after adding many useful valid inequalities (my cuts).
>
> Is there a way of controlling when pricing happens in this way?
>
> James
>
> --
> James Cussens
> Room CSE/239
> Dept of Computer Science
> University of York
> York YO10 5GE, UK
> Tel    +44 (0)1904 325371
> http://www.cs.york.ac.uk/~jc
> <https://eur03.safelinks.protection.outlook.com/?url=http:%2F%2Fwww.cs.york.ac.uk%2F~jc&data=02%7C01%7CS.J.Maher%40exeter.ac.uk%7C02541c5985234fb9ee5c08d82a733ad7%7C912a5d77fb984eeeaf321334d8f04a53%7C0%7C1%7C637306021680169041&sdata=dzDrDmws17YVZJqa0bV%2BtoIn7u87EjMNwKpdiezAIZY%3D&reserved=0>
> http://www.york.ac.uk/docs/disclaimer/email.htm
> <https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.york.ac.uk%2Fdocs%2Fdisclaimer%2Femail.htm&data=02%7C01%7CS.J.Maher%40exeter.ac.uk%7C02541c5985234fb9ee5c08d82a733ad7%7C912a5d77fb984eeeaf321334d8f04a53%7C0%7C1%7C637306021680179037&sdata=ZaSWCmToqx5bfcLCzHmA88CXDRTBCtO2OUNC9xjCSAY%3D&reserved=0>
>


-- 
James Cussens
Room CSE/239
Dept of Computer Science
University of York
York YO10 5GE, UK
Tel    +44 (0)1904 325371
http://www.cs.york.ac.uk/~jc
http://www.york.ac.uk/docs/disclaimer/email.htm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20200721/e64649f4/attachment.html>


More information about the Scip mailing list