Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Break symmetry for k-clustering #27

Open
phspo opened this issue Apr 25, 2018 · 1 comment
Open

Break symmetry for k-clustering #27

phspo opened this issue Apr 25, 2018 · 1 comment

Comments

@phspo
Copy link
Contributor

phspo commented Apr 25, 2018

Any permutation of cluster assignment is an "equivalent" valid solution, therefore forcing one "fixed" cluster labeling could decrease the solution space. (For instance force node 1 to always be in cluster 1)

@schrins
Copy link
Collaborator

schrins commented Apr 25, 2018

The problem for such optimizations are, that we do not know anything about the internals of CPLEX. I had a similar issue with direct haplotype phasing via CPLEX and the whole thing ended up way slower after I added symmetrie breaking inequalities. The reason for this was that CPLEX was doing a lot of branching while searching for better solutions, but the majority of the branches ran into the problem of violating the symmetry breaking inequalities. However, in order to violate these inequalities, a lot of fixed variables were needed (i.e. a deep branching depth), because the inqualities could be easily fooled with fractional solutions.

For example: With 6 clusters, you have 720 equivalent optimal solutions. The symmetry breaking inequalities make 719 of them infeasable, allowing only one of them. CPLEX might now come close to any of those 719 solutions, but has to drop the progress, because the inequalities become violated once too close the optimal solutions. You would then have to wait until CPLEX finds the 720th solution by chance.

phspo added a commit that referenced this issue Apr 25, 2018
phspo added a commit that referenced this issue Apr 25, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants