Integer Programming Formulations for Minimum Spanning Forest Problem Mehdi Golari Systems and Industrial Engineering Department The University of Arizona Math 543 November 19, 2015 Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 1 / 19 Outline 1 Introduction 2 Minimum Spanning Tree IP Formulations 3 Minimum Spanning Forest IP Formulations 4 Conclusion Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 2 / 19 Introduction Outline 1 Introduction 2 Minimum Spanning Tree IP Formulations 3 Minimum Spanning Forest IP Formulations 4 Conclusion Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 3 / 19 Introduction Goals for this talk Introduce mathematical programming as a general framework to solve decision making problems Introduce mathematical programming formulations for minimum spanning tree and minimum spanning forest problems Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 4 / 19 Introduction Operations Research: science of decision making, science of better Some of the mathematical tools to approach decision making? Mathematical Programming Control Theory Decision Analysis Game Theory Queuing Theory Simulation Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 5 / 19 Introduction Mathematical Programming Definition A general mathematical program has the form min f (x) x s.t x ∈ X where x is the vector of decision variables, f (x) is the objective function, X is the constraint set, {x ∈ X } is the feasible region. Different assumptions on f (x) and X results in different classes of mathematical programs Linear Programming (LP): f (x) = cx, X = {Ax ≥ b}, x ∈ Rn , c ∈ Rn , b ∈ Rm . Nonlinear Programming (NLP): f (x) nonlinear in x, and/or X a nonlinear set. Integer Linear Programming (ILP): Same assumptions as LP, except x ∈ Zn Mixed Integer LP (MILP): Same assumptions as LP, except x ∈ Rn1 × Zn2 Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 6 / 19 Introduction Mathematical Programming Definition A general mathematical program has the form min f (x) x s.t x ∈ X where x is the vector of decision variables, f (x) is the objective function, X is the constraint set, {x ∈ X } is the feasible region. Different assumptions on f (x) and X results in different classes of mathematical programs Linear Programming (LP): f (x) = cx, X = {Ax ≥ b}, x ∈ Rn , c ∈ Rn , b ∈ Rm . Nonlinear Programming (NLP): f (x) nonlinear in x, and/or X a nonlinear set. Integer Linear Programming (ILP): Same assumptions as LP, except x ∈ Zn Mixed Integer LP (MILP): Same assumptions as LP, except x ∈ Rn1 × Zn2 Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 6 / 19 Introduction Mathematical Programming Definition A general mathematical program has the form min f (x) x s.t x ∈ X where x is the vector of decision variables, f (x) is the objective function, X is the constraint set, {x ∈ X } is the feasible region. Different assumptions on f (x) and X results in different classes of mathematical programs Linear Programming (LP): f (x) = cx, X = {Ax ≥ b}, x ∈ Rn , c ∈ Rn , b ∈ Rm . Nonlinear Programming (NLP): f (x) nonlinear in x, and/or X a nonlinear set. Integer Linear Programming (ILP): Same assumptions as LP, except x ∈ Zn Mixed Integer LP (MILP): Same assumptions as LP, except x ∈ Rn1 × Zn2 Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 6 / 19 Introduction Mathematical Programming Definition A general mathematical program has the form min f (x) x s.t x ∈ X where x is the vector of decision variables, f (x) is the objective function, X is the constraint set, {x ∈ X } is the feasible region. Different assumptions on f (x) and X results in different classes of mathematical programs Linear Programming (LP): f (x) = cx, X = {Ax ≥ b}, x ∈ Rn , c ∈ Rn , b ∈ Rm . Nonlinear Programming (NLP): f (x) nonlinear in x, and/or X a nonlinear set. Integer Linear Programming (ILP): Same assumptions as LP, except x ∈ Zn Mixed Integer LP (MILP): Same assumptions as LP, except x ∈ Rn1 × Zn2 Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 6 / 19 Introduction Mathematical Programming Definition A general mathematical program has the form min f (x) x s.t x ∈ X where x is the vector of decision variables, f (x) is the objective function, X is the constraint set, {x ∈ X } is the feasible region. Different assumptions on f (x) and X results in different classes of mathematical programs Linear Programming (LP): f (x) = cx, X = {Ax ≥ b}, x ∈ Rn , c ∈ Rn , b ∈ Rm . Nonlinear Programming (NLP): f (x) nonlinear in x, and/or X a nonlinear set. Integer Linear Programming (ILP): Same assumptions as LP, except x ∈ Zn Mixed Integer LP (MILP): Same assumptions as LP, except x ∈ Rn1 × Zn2 Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 6 / 19 Introduction Mathematical Programming Definition A general mathematical program has the form min f (x) x s.t x ∈ X where x is the vector of decision variables, f (x) is the objective function, X is the constraint set, {x ∈ X } is the feasible region. Different assumptions on f (x) and X results in different classes of mathematical programs Linear Programming (LP): f (x) = cx, X = {Ax ≥ b}, x ∈ Rn , c ∈ Rn , b ∈ Rm . Nonlinear Programming (NLP): f (x) nonlinear in x, and/or X a nonlinear set. Integer Linear Programming (ILP): Same assumptions as LP, except x ∈ Zn Mixed Integer LP (MILP): Same assumptions as LP, except x ∈ Rn1 × Zn2 Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 6 / 19 Minimum Spanning Tree IP Formulations Outline 1 Introduction 2 Minimum Spanning Tree IP Formulations 3 Minimum Spanning Forest IP Formulations 4 Conclusion Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 7 / 19 Minimum Spanning Tree IP Formulations Recall: Minimum Spanning Tree Given a network (G , φ) , we can define the weight of a subgraph H ⊂ G as X φ (H) = φ (e) . e∈E (H) Definition In a connected graph G , a minimal spanning tree T is a tree with minimum value. MST problem in mathematical programming form: X φ (e) min H(T ) = T e∈E (T ) s.t T is a tree in G How to characterize the set of constraints and objective function explicitly? Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 8 / 19 Minimum Spanning Tree IP Formulations Recall: Minimum Spanning Tree Given a network (G , φ) , we can define the weight of a subgraph H ⊂ G as X φ (H) = φ (e) . e∈E (H) Definition In a connected graph G , a minimal spanning tree T is a tree with minimum value. MST problem in mathematical programming form: X φ (e) min H(T ) = T e∈E (T ) s.t T is a tree in G How to characterize the set of constraints and objective function explicitly? Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 8 / 19 Minimum Spanning Tree IP Formulations Recall: Minimum Spanning Tree Given a network (G , φ) , we can define the weight of a subgraph H ⊂ G as X φ (H) = φ (e) . e∈E (H) Definition In a connected graph G , a minimal spanning tree T is a tree with minimum value. MST problem in mathematical programming form: X φ (e) min H(T ) = T e∈E (T ) s.t T is a tree in G How to characterize the set of constraints and objective function explicitly? Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 8 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Subtour Elimination Formulation ( Let xij = 1 0 if edge(i, j) is in tree otherwise Let x denote the vector formed by xij ’s for all (i, j) ∈ E . The MST found by optimal x ∗ , denoted T ∗ , will be a subgraph T ∗ = (V , E ∗ ), where E ∗ = {(i, j) ∈ E : xij∗ = 1} denotes the selected edge into the spanning tree. Subtour elimination formulation is based on the fact that T has no simple cycles and has n − 1 edges X φij xij [MST1] min x (i,j)∈E P P(i,j)∈E xij = n − 1 s.t. (i,j)∈E (S) xij ≤ |S| − 1, ∀S ⊂ V , S 6= V , S 6= ∅ xij ∈ {0, 1}, ∀(i, j) ∈ E where E (S) ⊂ E is a subset of edges with both ends in subset S ⊂ V . Constraint P (i,j)∈E (S) xij ≤ |S| − 1 ensures that there is no cycles in subset S. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 9 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Subtour Elimination Formulation ( Let xij = 1 0 if edge(i, j) is in tree otherwise Let x denote the vector formed by xij ’s for all (i, j) ∈ E . The MST found by optimal x ∗ , denoted T ∗ , will be a subgraph T ∗ = (V , E ∗ ), where E ∗ = {(i, j) ∈ E : xij∗ = 1} denotes the selected edge into the spanning tree. Subtour elimination formulation is based on the fact that T has no simple cycles and has n − 1 edges X φij xij [MST1] min x (i,j)∈E P P(i,j)∈E xij = n − 1 s.t. (i,j)∈E (S) xij ≤ |S| − 1, ∀S ⊂ V , S 6= V , S 6= ∅ xij ∈ {0, 1}, ∀(i, j) ∈ E where E (S) ⊂ E is a subset of edges with both ends in subset S ⊂ V . Constraint P (i,j)∈E (S) xij ≤ |S| − 1 ensures that there is no cycles in subset S. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 9 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Subtour Elimination Formulation ( Let xij = 1 0 if edge(i, j) is in tree otherwise Let x denote the vector formed by xij ’s for all (i, j) ∈ E . The MST found by optimal x ∗ , denoted T ∗ , will be a subgraph T ∗ = (V , E ∗ ), where E ∗ = {(i, j) ∈ E : xij∗ = 1} denotes the selected edge into the spanning tree. Subtour elimination formulation is based on the fact that T has no simple cycles and has n − 1 edges X φij xij [MST1] min x (i,j)∈E P P(i,j)∈E xij = n − 1 s.t. (i,j)∈E (S) xij ≤ |S| − 1, ∀S ⊂ V , S 6= V , S 6= ∅ xij ∈ {0, 1}, ∀(i, j) ∈ E where E (S) ⊂ E is a subset of edges with both ends in subset S ⊂ V . Constraint P (i,j)∈E (S) xij ≤ |S| − 1 ensures that there is no cycles in subset S. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 9 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Cutset Formulation Cutset formulation is based on the fact that T is connected and has n − 1 edges X [MST2] min φij xij x (i,j)∈E P P(i,j)∈E xij = n − 1 s.t. (i,j)∈δ(S) xij ≥ 1, ∀S ⊂ V , S 6= V , S 6= ∅ xij ∈ {0, 1}, ∀(i, j) ∈ E where the cutset δ(S) P ⊂ E is a subset of edges with one end in S and the other end in V \ S. Constraints (i,j)∈δ(S) xij ≥ 1 ensures that subsets S and V \ S are connected. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 10 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Martin’s formulation [MST4] min X x,y φij xij (i,j)∈E P (i,j)∈E xij = n − 1 y k + y k = x , ∀(i, j) ∈ E , k ∈ V ij ij ji s.t. P j y \{i,j} ik + xij = 1, ∀(i, j) ∈ E k∈V xij , yijk , yjik ∈ {0, 1}, ∀(i, j) ∈ E , k ∈ V yijk ∈ {0, 1} denotes that edge (i, j) is in the spanning tree and vertex k is on the side of j The second constraint for (i, j) ∈ E , k ∈ V guarantees that if (i, j) ∈ E is selected into the tree (xij = 1), any vertex k ∈ V must be either on the side of j (yijk = 1) or on the side of i (yjik = 1). If (i, j) ∈ E is not in the tree (xij = 0), any vertex k cannot be on the side of j nor i (yijk = yjik = 0) The third constraint for (i, j) ∈ E ensures that If (i, j) ∈ E is in the tree (xij = 1), edges (i, k) who connects i are on the side of i If (i, j) ∈ E is not in the tree (xij = 0), there must be an edge (i, k) such that j is on the side of k (yikj = 1 for some k). Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 11 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Martin’s formulation [MST4] min X x,y φij xij (i,j)∈E P (i,j)∈E xij = n − 1 y k + y k = x , ∀(i, j) ∈ E , k ∈ V ij ij ji s.t. P j y \{i,j} ik + xij = 1, ∀(i, j) ∈ E k∈V xij , yijk , yjik ∈ {0, 1}, ∀(i, j) ∈ E , k ∈ V yijk ∈ {0, 1} denotes that edge (i, j) is in the spanning tree and vertex k is on the side of j The second constraint for (i, j) ∈ E , k ∈ V guarantees that if (i, j) ∈ E is selected into the tree (xij = 1), any vertex k ∈ V must be either on the side of j (yijk = 1) or on the side of i (yjik = 1). If (i, j) ∈ E is not in the tree (xij = 0), any vertex k cannot be on the side of j nor i (yijk = yjik = 0) The third constraint for (i, j) ∈ E ensures that If (i, j) ∈ E is in the tree (xij = 1), edges (i, k) who connects i are on the side of i If (i, j) ∈ E is not in the tree (xij = 0), there must be an edge (i, k) such that j is on the side of k (yikj = 1 for some k). Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 11 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Martin’s formulation [MST4] min X x,y φij xij (i,j)∈E P (i,j)∈E xij = n − 1 y k + y k = x , ∀(i, j) ∈ E , k ∈ V ij ij ji s.t. P j y \{i,j} ik + xij = 1, ∀(i, j) ∈ E k∈V xij , yijk , yjik ∈ {0, 1}, ∀(i, j) ∈ E , k ∈ V yijk ∈ {0, 1} denotes that edge (i, j) is in the spanning tree and vertex k is on the side of j The second constraint for (i, j) ∈ E , k ∈ V guarantees that if (i, j) ∈ E is selected into the tree (xij = 1), any vertex k ∈ V must be either on the side of j (yijk = 1) or on the side of i (yjik = 1). If (i, j) ∈ E is not in the tree (xij = 0), any vertex k cannot be on the side of j nor i (yijk = yjik = 0) The third constraint for (i, j) ∈ E ensures that If (i, j) ∈ E is in the tree (xij = 1), edges (i, k) who connects i are on the side of i If (i, j) ∈ E is not in the tree (xij = 0), there must be an edge (i, k) such that j is on the side of k (yikj = 1 for some k). Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 11 / 19 Minimum Spanning Tree IP Formulations Minimum Spanning Tree: Martin’s formulation [MST4] min X x,y φij xij (i,j)∈E P (i,j)∈E xij = n − 1 y k + y k = x , ∀(i, j) ∈ E , k ∈ V ij ij ji s.t. P j y \{i,j} ik + xij = 1, ∀(i, j) ∈ E k∈V xij , yijk , yjik ∈ {0, 1}, ∀(i, j) ∈ E , k ∈ V yijk ∈ {0, 1} denotes that edge (i, j) is in the spanning tree and vertex k is on the side of j The second constraint for (i, j) ∈ E , k ∈ V guarantees that if (i, j) ∈ E is selected into the tree (xij = 1), any vertex k ∈ V must be either on the side of j (yijk = 1) or on the side of i (yjik = 1). If (i, j) ∈ E is not in the tree (xij = 0), any vertex k cannot be on the side of j nor i (yijk = yjik = 0) The third constraint for (i, j) ∈ E ensures that If (i, j) ∈ E is in the tree (xij = 1), edges (i, k) who connects i are on the side of i If (i, j) ∈ E is not in the tree (xij = 0), there must be an edge (i, k) such that j is on the side of k (yikj = 1 for some k). Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 11 / 19 Minimum Spanning Forest IP Formulations Outline 1 Introduction 2 Minimum Spanning Tree IP Formulations 3 Minimum Spanning Forest IP Formulations 4 Conclusion Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 12 / 19 Minimum Spanning Forest IP Formulations Minimum Spanning Forest Consider a graph G with m connected components Assume that the m connected components of G have vertex sets as V1 , V2 · · · , Vm Also assume Ei is the edge set induced by vertices in Vi from graph G Thus, each connected component of G can be considered as a subgraph Gi = (Vi , Ei ) of G . Proposition For the graph G with m connected components, denoted by G1 , G2 , · · · , Gm , the forest F ∗ , consisting of spanning trees T1∗ , T2∗ , · · · , Tm∗ , is a minimum spanning forest of G if and only if each Ti∗ is a minimum spanning tree for subgraph Gi (i = 1, 2, · · · , m). Furthermore, the number of edges in a spanning forest of G is n − m. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 13 / 19 Minimum Spanning Forest IP Formulations Minimum Spanning Forest Consider a graph G with m connected components Assume that the m connected components of G have vertex sets as V1 , V2 · · · , Vm Also assume Ei is the edge set induced by vertices in Vi from graph G Thus, each connected component of G can be considered as a subgraph Gi = (Vi , Ei ) of G . Proposition For the graph G with m connected components, denoted by G1 , G2 , · · · , Gm , the forest F ∗ , consisting of spanning trees T1∗ , T2∗ , · · · , Tm∗ , is a minimum spanning forest of G if and only if each Ti∗ is a minimum spanning tree for subgraph Gi (i = 1, 2, · · · , m). Furthermore, the number of edges in a spanning forest of G is n − m. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 13 / 19 Minimum Spanning Forest IP Formulations Adapting Subtour Elimination and Cutset Formulations for MSF Considering S ⊂ V , S 6= ∅, S 6= V , there are three cases for the subtour elimination constraints and cutset constraints: (i) if S ⊂ Vi , P (i,j)∈E (S) xij ≤ |S| − 1; P i∈S,j∈V \S xij ≥ 1; (ii) P if S ⊂ Vi1 ∪ Vi2 ∪ · · · ∪ VP ik (2 ≤ k ≤ m) and S ∩ Vi1 6= ∅, · · · , S ∩ Vik 6= ∅, x ≤ |S| − k; ij (i,j)∈E (S) i∈S,j∈V \S xij ≥ k; (iii) if S = Vi1 ∪ Vi2 ∪ · · · ∪ Vik (1 ≤ k < m), Golari (SIE@UA) () P (i,j)∈E (S) IP Formulations for MSFP xij ≤ |S| − k; P i∈S,j∈V \S xij ≥ 0 Nov 19, 2015 14 / 19 Minimum Spanning Forest IP Formulations Adapting Subtour Elimination and Cutset Formulations for MSF Considering S ⊂ V , S 6= ∅, S 6= V , there are three cases for the subtour elimination constraints and cutset constraints: (i) if S ⊂ Vi , P (i,j)∈E (S) xij ≤ |S| − 1; P i∈S,j∈V \S xij ≥ 1; (ii) P if S ⊂ Vi1 ∪ Vi2 ∪ · · · ∪ VP ik (2 ≤ k ≤ m) and S ∩ Vi1 6= ∅, · · · , S ∩ Vik 6= ∅, x ≤ |S| − k; ij (i,j)∈E (S) i∈S,j∈V \S xij ≥ k; (iii) if S = Vi1 ∪ Vi2 ∪ · · · ∪ Vik (1 ≤ k < m), Golari (SIE@UA) () P (i,j)∈E (S) IP Formulations for MSFP xij ≤ |S| − k; P i∈S,j∈V \S xij ≥ 0 Nov 19, 2015 14 / 19 Minimum Spanning Forest IP Formulations Adapting Subtour Elimination and Cutset Formulations for MSF Considering S ⊂ V , S 6= ∅, S 6= V , there are three cases for the subtour elimination constraints and cutset constraints: (i) if S ⊂ Vi , P (i,j)∈E (S) xij ≤ |S| − 1; P i∈S,j∈V \S xij ≥ 1; (ii) P if S ⊂ Vi1 ∪ Vi2 ∪ · · · ∪ VP ik (2 ≤ k ≤ m) and S ∩ Vi1 6= ∅, · · · , S ∩ Vik 6= ∅, x ≤ |S| − k; ij (i,j)∈E (S) i∈S,j∈V \S xij ≥ k; (iii) if S = Vi1 ∪ Vi2 ∪ · · · ∪ Vik (1 ≤ k < m), Golari (SIE@UA) () P (i,j)∈E (S) IP Formulations for MSFP xij ≤ |S| − k; P i∈S,j∈V \S xij ≥ 0 Nov 19, 2015 14 / 19 Minimum Spanning Forest IP Formulations Adapting Subtour Elimination and Cutset Formulations for MSF Considering S ⊂ V , S 6= ∅, S 6= V , there are three cases for the subtour elimination constraints and cutset constraints: (i) if S ⊂ Vi , P (i,j)∈E (S) xij ≤ |S| − 1; P i∈S,j∈V \S xij ≥ 1; (ii) P if S ⊂ Vi1 ∪ Vi2 ∪ · · · ∪ VP ik (2 ≤ k ≤ m) and S ∩ Vi1 6= ∅, · · · , S ∩ Vik 6= ∅, x ≤ |S| − k; ij (i,j)∈E (S) i∈S,j∈V \S xij ≥ k; (iii) if S = Vi1 ∪ Vi2 ∪ · · · ∪ Vik (1 ≤ k < m), Golari (SIE@UA) () P (i,j)∈E (S) IP Formulations for MSFP xij ≤ |S| − k; P i∈S,j∈V \S xij ≥ 0 Nov 19, 2015 14 / 19 Minimum Spanning Forest IP Formulations Minimum Spanning Forest: Subtour Elimination Formulations [MSF1] min X φij xij (i,j)∈E s.t. X xij = n − m (i,j)∈E X xij ≤ |S| − 1, ∀S ⊂ V , S 6= V , S 6= ∅ (i,j)∈E (S) xij ∈ {0, 1}, ∀(i, j) ∈ E where the first constraint ensures that there are n − m edges in the spanning forest. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 15 / 19 Minimum Spanning Forest IP Formulations Minimum Spanning Forest: Cutset Formulations [MSF2] min X φij xij (i,j)∈E s.t. X xij = n − m (i,j)∈E X i∈S,j∈V \S,(i,j)∈E xij ≥ max i∈S,j∈V \S 1{(i,j)∈E } , ∀S ⊂ V , S 6= V , S 6= ∅ xij ∈ {0, 1}, ∀(i, j) ∈ E where the first constraint ensures that there are n − m edges in the spanning forest. Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 16 / 19 Conclusion Outline 1 Introduction 2 Minimum Spanning Tree IP Formulations 3 Minimum Spanning Forest IP Formulations 4 Conclusion Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 17 / 19 Conclusion Conclusion Covered: Introduced mathematical programming IP formulations for MST and MSF Not covered: How to solve these problems? Polyhedral study and comparison of the formulations! Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 18 / 19 Conclusion Conclusion Covered: Introduced mathematical programming IP formulations for MST and MSF Not covered: How to solve these problems? Polyhedral study and comparison of the formulations! Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 18 / 19 Conclusion Questions? Golari (SIE@UA) () IP Formulations for MSFP Nov 19, 2015 19 / 19