[SCIP] Question on symmetry handling with additional plugins

Christopher Hojny c.hojny at tue.nl
Sun Feb 25 20:21:21 CET 2024


Hi Matheus,

You are right, you should set p = |V| and q = k. The matrix M, however, 
is given by your x-variables, i.e., entry (v,i) is the SCIP variable 
x_{v, i}, and not 1.

Within the function SCIPcreateConsBasicOrbitope(), you thus should set

vars: your x-matrix with entries x_{v, i}
orbtitopeype: SCIP_ORBITOPETYPE_PARTITIONING
nspcons: |V|
nblocks: k
usedynamicprop: can be either TRUE or FALSE, you needed to check which 
works better for your application
resolveprop: TRUE or FALSE (reasoning as before)
ismodelcons: FALSE if you "only" want to handle symmetries or TRUE if 
you are really interested in a solution with sorted columns; I guess 
FALSE is what you are looking for
mayinteract: FALSE

Best regards,
Christopher


On 25-02-2024 19:45, Matheus Ota wrote:
> 	
> You don't often get email from matheusota at gmail.com. Learn why this is 
> important <https://aka.ms/LearnAboutSenderIdentification>
> 	
> 
> Hi Christopher and Marc,
> 
> Thanks for the reply! Could you please give more details on how to 
> construct the matrix for the orbitope plugin? I have essentially the 
> same setting as in the paper "Mixed-integer programming techniques for 
> the connected max-k-cut problem" by Hojny, Joormann, Lüthen & Schmidt. 
> In other words, I have a graph G = (V, E) and I want to partition the 
> vertices into k sets V_1, ..., V_k. My formulation has binary variables 
> x_{v, i} that indicate if vertex v belongs to V_i or not. I'm a bit 
> confused on how to construct the (p x q)-matrix M in this case. Should I 
> set p = |V|, q = k, and set M to be the all-ones matrix?
> 
> Thanks for your time!
> Matheus
> 
> On Fri, Feb 23, 2024 at 3:01 PM Marc Pfetsch 
> <pfetsch at mathematik.tu-darmstadt.de 
> <mailto:pfetsch at mathematik.tu-darmstadt.de>> wrote:
> 
> 
> 
>     Hi Matheus,
> 
>     the crucial point is whether and how symmetries are detected. This
>     depends on the SCIP version:
> 
>     - Beginning with the upcoming SCIP 9 your constraint handler needs to
>     implement callbacks that give information about the symmetries of your
>     constraints to SCIP. Then symmetries can be handled automatically.
> 
>     - In the "older" SCIP versiosn, your new constraint handler will
>     disable
>     symmetry detection, because SCIP does not have any symmetry information
>     about your constraint. Thus you would need to add orbitope constraints.
>     I do not think that there is an example, but you need a matrix of
>     binary
>     variables on which a full symmetry group acts by permuting the columns.
> 
>     Best
> 
>     Marc
> 
> 
> 
> 
>     On 23/02/2024 15:43, Matheus Ota wrote:
>      > Dear SCIP team,
>      >
>      > I've implemented in SCIP/C++ a branch-and-cut algorithm where the
>      > cutting-planes are separated via a constraint handler. I want to add
>      > symmetry handling methods on top of this algorithm (like shifted
>     column
>      > inequalities). So this leads me to the following question.
>      >
>      >   - Looking at the documentation I can see that I may be able to
>     do this
>      > easily by just activating a flag
>      > (https://www.scipopt.org/doc/html/SYMMETRY.php
>     <https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.scipopt.org%2Fdoc%2Fhtml%2FSYMMETRY.php&data=05%7C02%7C%7Cae86bc6d067e47c42fca08dc3632aa40%7Ccc7df24760ce4a0f9d75704cf60efc64%7C0%7C0%7C638444838445198056%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=xK64I0vxxYYp6gc%2FjcAcQY6OEjCata%2FD4k1dQfsrISQ%3D&reserved=0>
>      > <https://www.scipopt.org/doc/html/SYMMETRY.php
>     <https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.scipopt.org%2Fdoc%2Fhtml%2FSYMMETRY.php&data=05%7C02%7C%7Cae86bc6d067e47c42fca08dc3632aa40%7Ccc7df24760ce4a0f9d75704cf60efc64%7C0%7C0%7C638444838445207614%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=eXG0kcuC2RJ9yvM9YEenHu4L1NQAGU1a9URk39ZpJn0%3D&reserved=0>>). However I wonder if
>      > the additional cutting planes that I add iteratively will affect the
>      > symmetry handling. Do I need to manually include the orbitope
>     plugin?
>      > And if so, how do I do that? Is there any example?
>      >
>      > Thank you for your time,
>      > Matheus
>      >
>      > _______________________________________________
>      > Scip mailing list
>      > Scip at zib.de <mailto:Scip at zib.de>
>      > https://listserv.zib.de/mailman/listinfo/scip
>     <https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flistserv.zib.de%2Fmailman%2Flistinfo%2Fscip&data=05%7C02%7C%7Cae86bc6d067e47c42fca08dc3632aa40%7Ccc7df24760ce4a0f9d75704cf60efc64%7C0%7C0%7C638444838445215422%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=uY60Z1b7BMi5LjRUJXv41aVOe0l9UpfpkNie%2FAwoNco%3D&reserved=0>
>     _______________________________________________
>     Scip mailing list
>     Scip at zib.de <mailto:Scip at zib.de>
>     https://listserv.zib.de/mailman/listinfo/scip
>     <https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flistserv.zib.de%2Fmailman%2Flistinfo%2Fscip&data=05%7C02%7C%7Cae86bc6d067e47c42fca08dc3632aa40%7Ccc7df24760ce4a0f9d75704cf60efc64%7C0%7C0%7C638444838445221762%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=hMS%2FF4xGOt12RRXdYVU7j9ja6Pvxz2JhpRXiqqIIguI%3D&reserved=0>
> 
> 
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip


More information about the Scip mailing list