$************************************************************* $ MILP Transshipment Model for the Minimum Number of Matches $ for Heat Exchanger Network Synthesis $ $ C. A. Floudas, "Nonlinear and Mixed-Integer Optimization: $ Fundamentals and Applications", Oxford University Press, $ 1995, p. 280. $ $ Optimal Solution: 8 $************************************************************* DECLARATION {{ INDEX {i,j,s,w,k,l}; SET I = |1:4|; #hot process SET J = |1:2|; #cold process SET S = |1:3|; #hot util SET W = |1|; #cold util SET K = |1:6|; #interval set SET L = |1:7|; #interval set #hot process loads PARA hpload(I,K) = {2000, 1800, 1000, 800, 0, 0, 0, 3600, 2000, 2000, 2000, 2000, 0, 0, 0, 3500, 3500, 3500, 0, 0, 0, 0, 0, 4700}; #hot utility loads PARA huload(S,K) = {3900, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #cold process loads PARA cpload(J,K) = {3000, 4500, 2500, 2500, 2500, 0, 0, 0, 0, 0, 9000, 9000}; #cold utility loads PARA cuload(W,K) = { 0, 0, 0, 0, 0, 3800}; PARA qhpsum(I) = > >; PARA qhusum(S) = > >; PARA qcpsum(J) = > >; PARA qcusum(W) = > >; PARA hpcpup(I,J) = >; PARA hpcuup(I,W) = >; PARA hucpup(S,J) = >; PARA hpcplo(I,J) = >; PARA hpculo(I,W) = >; PARA hucplo(S,J) = >; XVAR {rp(I,L), ru(S,L), rtot(L), qhpcp(I,J,K), qhpcu(I,W,K), qhucp(S,J,K), qhpcptot(I,J), qhpcutot(I,W), qhucptot(S,J), yhpcp(I,J), yhpcu(I,W), yhucp(S,J)}; BINA {yhpcp(I,J), yhpcu(I,W), yhucp(S,J)}; POSI {rp(I,L), ru(S,L), rtot(L), qhpcp(I,J,K), qhpcu(I,W,K), qhucp(S,J,K), qhpcptot(I,J), qhpcutot(I,W), qhucptot(S,J)}; UBDS rtot(L) = {0,-,-,-,-,-,0}; }} MODEL {{ MIN: << i E I| << j E J| yhpcp(i,j) >> >> + <> >> + <> >>; hpr(i E I,k E K): rp(i,k+1) - rp(i,k) + <> + << w E W| qhpcu(i,w,k) >> =e= hpload(i,k); hur(s E S, k E K): ru(s,k+1) - ru(s,k) + <> =e= huload(s,k); cpr(j E J, k E K): <> + <> =e= cpload(j,k); cur(w E W, k E K): <> =e= cuload(w,k); res(l E K): rtot(l) =e= <> + << s E S| ru(s,l) >>; qpp(i E I, j E J): qhpcptot(i,j) =e= << k E K| qhpcp(i,j,k) >>; qpu(i E I, w E W): qhpcutot(i,w) =e= << k E K| qhpcu(i,w,k) >>; qup(s E S, j E J): qhucptot(s,j) =e= << k E K| qhucp(s,j,k) >>; hpcplo(i E I, j E J): qhpcptot(i,j) =g= hpcplo(i,j)*yhpcp(i,j); hpculo(i E I, w E W): qhpcutot(i,w) =g= hpculo(i,w)*yhpcu(i,w); hucplo(s E S, j E J): qhucptot(s,j) =g= hucplo(s,j)*yhucp(s,j); hpcpup(i E I, j E J): qhpcptot(i,j) =l= hpcpup(i,j)*yhpcp(i,j); hpcuup(i E I, w E W): qhpcutot(i,w) =l= hpcuup(i,w)*yhpcu(i,w); hucpup(s E S, j E J): qhucptot(s,j) =l= hucpup(s,j)*yhucp(s,j); qbd(k E K): qhpcp(1,1,k) =e= 0; ybd: yhpcp(1,1) =e= 0; }}