[SCIP] Upgrading of linear constraints to a "special" constraint handler?

Franzen, Christian franzen at or.rwth-aachen.de
Tue Aug 18 19:38:53 CEST 2020


Hi Stefan.


Thanks for the insigths. Of course all my constraints are modifiable and it makes perfectly sense that SCIP has no chance to detect any structure for a modifiable constraint. I will use the type-specific method.


Regards

Christian


________________________________
Von: Stefan Vigerske <svigerske at gams.com>
Gesendet: Mittwoch, 12. August 2020 10:44
An: Franzen, Christian; scip at zib.de
Betreff: Re: [SCIP] Upgrading of linear constraints to a "special" constraint handler?

Hi,

also constraints that are created via the C-API during problem creation
stage are upgraded to SetPPC or Knapsack, if possible. The LP file
reader and the SCIP shell also just use the C-API.
The upgrade happens during presolve and only in the transformed problem
(the internal problem representation that SCIP works on and feels free
to modify) and only if constraint isn't marked as do-not-upgrade or
modifiable. Maybe some other flags are relevant, too; if you use
SCIPcreateConsBasicLinear, then flags should be set automatically such
that upgrades should happen if the structure of the constraint allows.

Using the type-specific methods has little performance advantage, since
the structure detection and upgrade can be skipped. But those are quite
cheap, too.
But if your constraints are modifiable, but you know that your
modifications will preserve the constraint type, my guess is that you
should create them with the specialized type in the beginning, since
otherwise the upgrade would be skipped (cons_linear doesn't know what
modifications are planned).

The specialized constraint handlers may also do propagation and presolve
a bit faster. There might be more, others know that better.

Stefan


On 8/11/20 9:20 PM, Franzen, Christian wrote:
> Hi SCIP-Team.
>
>
> When solving a MIP using SCIP's console and just reading from an LP file, I see in the statistics that constraints are automatically detected to be of some special type like SetPPC or Knapsack. However, when using the C-API to create my problem and adding constraints via SCIPcreateConsLinear() these constraints will not be automatically upgraded to SetPPC or Knapsack constraints. Is this by intention or do I miss something?
>
>
> Would it be beneficial within a branch-and-price-and-cut solver to use the type specific create methods like SCIPcreateConsKnapsack() or SCIPcreateConsSetcover()? My understanding is that the type specific constraint handlers offer separation of cuts, but that is something that can not be used within in a branch-and-price method. Are there any other benefits of the more specific constraints compared to the general linear constraints?
>
>
> Regards
>
> Christian
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20200818/088252ba/attachment.html>


More information about the Scip mailing list