Solving Steiner Triple Covering Problems Jeff Linderoth Dept. of - - PowerPoint PPT Presentation

solving steiner triple covering problems
SMART_READER_LITE
LIVE PREVIEW

Solving Steiner Triple Covering Problems Jeff Linderoth Dept. of - - PowerPoint PPT Presentation

Solving Steiner Triple Covering Problems Jeff Linderoth Dept. of Industrial and Systems Engineering Univ. of Wisconsin-Madison linderoth@wisc.edu Jim Ostrowski University of Waterloo Fabrizio Rossi Stefano Smriglio Universit` a di


slide-1
SLIDE 1

Solving Steiner Triple Covering Problems

Jeff Linderoth

  • Dept. of Industrial and Systems Engineering
  • Univ. of Wisconsin-Madison

linderoth@wisc.edu Jim Ostrowski University of Waterloo Fabrizio Rossi Stefano Smriglio Universit` a di L’Aquila

14th Combinatorial Optimization Workshop Aussois, France January, 2010

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 1 / 22

slide-2
SLIDE 2

Introduction Steiner Triple Covering

Steiner Triple Covering

A Steiner Triple System of order v (STS(v)) Set S with v elements Collection B of triples of S Each pair of elements in S appears together in a unique triple of B.

Partition the edges of Kv into triangles

A covering of a STS is a subset C of the elements of S such that C ∩ T = ∅ for each triple T ∈ B. The incidence width of a STS is its smallest-size covering. A Very Good Question Why do we care?

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 2 / 22

slide-3
SLIDE 3

Introduction Steiner Triple Covering

Because George Said So!

Fulkerson, Nemhauser, and Trotter (’74) suggested that computing the incidence width of a STS(v) may be a difficult IP min

x∈{0,1}v{eTx | Avx ≥ 1},

where Av ∈ {0, 1}|B|×v is the incidence matrix of the STS(v). They created instances based on STS of orders v ∈ {9, 15, 27, 45}, and posed these instances as a challenge to the integer programming community. The instance STS(45) was not solved until five years later by Don Ratliff Instances STS(3v) created from STS(v) by a well-known “tripling” procedure.

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 3 / 22

slide-4
SLIDE 4

Introduction Steiner Triple Covering

Steiner Triple Incidence Matrices

A9 =                      1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1                      A3n =       An An An I I I G1

n

G2

n

G3

n

     

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 4 / 22

slide-5
SLIDE 5

Introduction Steiner Triple Covering

Upper Bounds

z∗(STS15) = 9 (Fulkerson, Nemhauser, Trotter, ’74) z∗(STS27) = 18 (Fulkerson, Nemhauser, Trotter, ’74) z∗(STS45) = 30 (Ratliff, ’79) z∗(STS81) = 61 (Mannino, Sassano, ’95) z∗(STS135) ≤ 103 (Odijk and Maaren, ’98) z∗(STS243) ≤ 198 (Odijk and Maaren, ’98) STS(81) is also easily solved by the isomorphism pruning (Margot) and orbital branching (Ostrowski et al.) Our Challenge! STS(135) and STS(243) remain unsolved Neither isomorphism pruning nor orbital branching can solve them

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 5 / 22

slide-6
SLIDE 6

Introduction Symmetry

Symmetry

π ∈ Πn is a symmetry of IP if...

1

x feasible ⇔ π(x) feasible

2

cTx = cTπ(x)

The set of symmetries of IP (with composition of permutations) forms the symmetry group of IP G(IP) = {π ∈ Πn | π(x) ∈ F, cTx = cTπ(x) ∀x ∈ F}, where F = {x ∈ {0, 1}n | Ax ≥ b} is the set of feasible solutions G(IP) is a property of the feasible region: F = ∅ ⇒ G(IP) = Πn For our methods, we can work with any subgroup Γ ⊂ G(IP) If c = e, b = e, we can use the symmetry group of the matrix A: G(A) def = {π ∈ Πn | ∃σ ∈ Πm such that PσAPπ = A}

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 6 / 22

slide-7
SLIDE 7

Introduction Symmetry

Orbits and Inequalities

For a point z ∈ Rn, the orbit of z under the action of the group G is the set of all elements of Rn to which z can be sent by permutations in G, i.e. orb(G, z) def = {π(z) | π ∈ G}. If π ∈ G, then imposing the constraint λTx ≤ λ0 is “equivalent” to imposing the constraint π(λ)Tx ≤ λ0 If orb(G, λ) = {λ, µ1, µ2, . . . , µK}, then the inequalities µT

j x ≤ λ0 are

all equivalent to (symmetric with) λTx ≤ λ0 Constraint Orbital Branching: branches on symmetric inequalities

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 7 / 22

slide-8
SLIDE 8

Introduction Exploiting Symmetry in Disjunction

Constraint Orbital Branching

Branch with following disjunction:  

  • µj∈orb(G,λ)

µT

j x ≤ λ0

  ∨  

  • µj∈orb(G,λ)

µT

j x ≥ λ0 + 1

  But all of the µT

j x ≤ λ0 are equivalent by symmetry

So branch on two-node disjunction (λTx ≤ λ0) ∨  

  • µj∈orb(G,λ)

µT

j x ≥ λ0 + 1

  The orbital branching method is a special case of constraint orbital branching for (λ, λ0) = (−ek, −1).

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 8 / 22

slide-9
SLIDE 9

Introduction Finding Good Disjunctions

Branching Disjunctions in Constraint Orbital Branching

We would like to find branching disjunction (λ, λ0) such that

1 | orb(G, λ)| is large. This will move the LP bound a lot on the right

branch.

2 Solving the left branch (λTx ≤ λ0) is “easy”

We so far have not thought of good ways doing this in general. We have for certain problem classes identified good disjunctions

STS(3v): Branch using optimal solution to STS(v) Covering Design: Branch on Sch¨

  • nheim Inequalities

Using these disjunctions has enabled us to solve instances that variable orbital branching cannot

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 9 / 22

slide-10
SLIDE 10

Solving STS(135) and STS(243) The Disjunction

Back to STS135: The Branching Disjunction

Let λ = (e45, 090)T be the characteristic vector of the first 45 components 12 vectors µj share an orbit with λ (shown in blocks of size 15)

µ1 µ2 µ3 µ4 µ5 µ6 µ7 µ8 µ9 µ10 µ11 µ12 = e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e e

STS(n) Incidence Matrix A3n =       An An An I I I G1

n

G2

n

G3

n

      STS(243): 363 vectors share an orbit with λ = (e81, 0162).

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 10 / 22

slide-11
SLIDE 11

Solving STS(135) and STS(243) The Disjunction

Solving STS(135) and STS(243)

z∗(STS(45)) = 30, z∗(STS(81)) = 61. ⇒ λTx ≥ 30 for any feasible solution to STS(135) ⇒ λTx ≥ 61 for any feasible solution to STS(243) Idea: Constraint orbital branching disjunction (λTx ≤ 30) ∨ (µTx ≥ 31) ∀µ ∈ orb(G, λ) for STS(135) (λTx ≤ 61) ∨ (µTx ≥ 62) ∀µ ∈ orb(G, λ) for STS(243) In fact, we can continue this branching for a few levels. Sometimes we also branch on σTx = [en/9, 08n/9]x ≤ K, exploiting known optimality of solutions to STS(n/9).

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 11 / 22

slide-12
SLIDE 12

Solving STS(135) and STS(243) Enumerating Solutions

STS(135) Branching Tree

A λT x ≤ 30 B λT x ≤ 31 C λT x ≤ 32 D σT x ≤ 9 E λT x ≤ 33 F σT x ≤ 11 G µT x ≥ 12 ∀µ ∈ orb(G,σ) µT x ≥ 34 ∀µ ∈ orb(G,λ) µT x ≥ 10 ∀µ ∈ orb(G,σ) µT x ≥ 33 ∀µ ∈ orb(G,λ) µT x ≥ 32 ∀µ ∈ orb(G,λ) µT x ≥ 31 ∀µ ∈ orb(G,λ)

zLP(D) = 105, zLP(F) = 103, zLP(G) = 108

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 12 / 22

slide-13
SLIDE 13

Solving STS(135) and STS(243) Enumerating Solutions

STS(243) Branching Tree

A λT x ≤ 61 B λT x ≤ 62 C σT x ≤ 18 D λT x ≤ 63 E σT x ≤ 19 F λT x ≤ 64 G σT x ≤ 21 H µT x ≥ 22 ∀µ ∈ orb(G,σ) µT x ≥ 65 ∀µ ∈ orb(G,λ) µT x ≥ 20 ∀µ ∈ orb(G,σ) µT x ≥ 64 ∀µ ∈ orb(G,λ) µT x ≥ 19 ∀µ ∈ orb(G,σ) µT x ≥ 63 ∀µ ∈ orb(G,λ) µT x ≥ 62 ∀µ ∈ orb(G,σ)

zLP(C) = 198, zLP(E) = 199, zLP(H) = 198

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 13 / 22

slide-14
SLIDE 14

Solving STS(135) and STS(243) Enumerating Solutions

Solving STS(135) in 4 Nodes, STS(243) in 5 Nodes

Sadly, “evaluating” the unpruned nodes is a non-trivial task. Smart Things We Tried CPLEX Isomorphism pruning Orbital Branching Generating MIR/Split closures Running “on the grid” Dumb Things We Tried Instead, we resorted to something far less intelligent: enumeration

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 14 / 22

slide-15
SLIDE 15

Solving STS(135) and STS(243) Enumerating Solutions

Enumerative Solving

Consider all solutions (SK) to STS(45) (STS(81)) of value ≤ K A solution to STS(135) (STS(243)) must have its first 45 (81) components be an element of SK Node Evaluation Procedure

1 Enumerate SK 2 For each solution y in SK

Fix the first 45 (81) components of STS135 (STS243) MIP to y Solve the (reduced) 90 (162) variable MIP

Two Reasons Why This Might Work

1 At many nodes, we have the “right-branch” orbital branching

disjunction that greatly improves the lower bound.

2 We need only enumerate non-isomorphic solutions in Sk L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 15 / 22

slide-16
SLIDE 16

Solving STS(135) and STS(243) Enumerating Solutions

Enumerating Solutions

Enumerating all solutions can be done with a procedure like suggested by Danna, Fenelon, Gu, and Wunderling (2007). The algorithm must continuing branching on integer-valued solutions until all variables are fixed or until it is pruned You can still prune based on bound or symmetry, since we need only enumerate non-isomorphic solutions for our procedure. We use a (flexible) variant of the isomorphism pruning procedure of Margot to generate all non-isomorphic solutions of given value.

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 16 / 22

slide-17
SLIDE 17

Solving STS(135) and STS(243) Solving It

STS(135) Branching Tree

A λT x ≤ 30 B λT x ≤ 31 C λT x ≤ 32 D σT x ≤ 9 E λT x ≤ 33 F σT x ≤ 11 G µT x ≥ 12 ∀µ ∈ orb(G,σ) µT x ≥ 34 ∀µ ∈ orb(G,λ) µT x ≥ 10 ∀µ ∈ orb(G,σ) µT x ≥ 33 ∀µ ∈ orb(G,λ) µT x ≥ 32 ∀µ ∈ orb(G,λ) µT x ≥ 31 ∀µ ∈ orb(G,λ)

zLP(D) = 105, zLP(F) = 103, zLP(G) = 108

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 17 / 22

slide-18
SLIDE 18

Solving STS(135) and STS(243) Solving It

Solutions to STS(45)

Node K # Sol A 30 1 B 31 56 C 32 2023 E 33 16849 18929

Enumeration time – 5556 seconds. 780120 nodes in enumeration tree The Good News Solving these 18929 integer programs is equivalent to solving STS(135) Most instances solved quickly by the orbital branching code of Ostrowski et al. The Bad News There are still 18929 instances to solve

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 18 / 22

slide-19
SLIDE 19

Solving STS(135) and STS(243) Solving It

z∗(STS(135)) = 103

Good News Run in parallel! Run on ≈ 500 Linux machines (idle cycles provided by Condor system)

Computation Statistics Node # Sol Nodes CPU Time A 1 10041 13m 37s B 56 2738242 2d 2h 26m 8s C 2023 40634479 30d 9h 41m 40s D zroot = 105 E 16849 114346449 93d 16h 52m 0s F zroot = 103 G zroot = 108 18929 157,629,211 126d 5h 13m 25s

“Only” about 126 CPU days, < 2 wall-clock days

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 19 / 22

slide-20
SLIDE 20

Solving STS(135) and STS(243) Solving It

STS(243) Branching Tree

A λT x ≤ 61 B λT x ≤ 62 C σT x ≤ 18 D λT x ≤ 63 E σT x ≤ 19 F λT x ≤ 64 G σT x ≤ 21 H µT x ≥ 22 ∀µ ∈ orb(G,σ) µT x ≥ 65 ∀µ ∈ orb(G,λ) µT x ≥ 20 ∀µ ∈ orb(G,σ) µT x ≥ 64 ∀µ ∈ orb(G,λ) µT x ≥ 19 ∀µ ∈ orb(G,σ) µT x ≥ 63 ∀µ ∈ orb(G,λ) µT x ≥ 62 ∀µ ∈ orb(G,σ)

zLP(C) = 198, zLP(E) = 199, zLP(H) = 198

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 20 / 22

slide-21
SLIDE 21

Solving STS(135) and STS(243) Solving It

z∗(STS(243)) = 198

STS243 Computation

Node # Sol Nodes CPU Time A 1 33575 17h 47m 31s B 1 46145 1d 4h 10m 25s C zroot = 198 D 2 2428 2h 38m 58s E zroot = 199 F N/A 379 11m 27s G N/A 59 11m 51s H zroot = 198 4 82586 2d 1h 0m 12s

Enumerating solutions took 1021 seconds, 2420 nodes Nodes F and G were solved by orbital branching (without) fixing first 81 components IPs for nodes A, B, and D were solved by (flexible) isomorphism pruning code of Ostrowski, Linderoth, Margot.

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 21 / 22

slide-22
SLIDE 22

The End

The “Big” News z∗(STS(135)) “=” 103 z∗(STS(243)) “=” 198 Woo Hoo! Take Away Message Combining constraint orbital branching with intelligent enumeration can increase the scope of the symmetric IPs we can solve. Future Work Solving STS405 and STS729? Exploiting structure to solve more symmetric IPs

Covering Design (Coding Theory Applications) YOUR SYMMETRIC IP APPLICATION HERE!

L., Ostrowski, Rossi, Smriglio (UW ISyE) Solving Steiner Triple Covering Problems Aussois XIV 22 / 22