***************************************************************** *** Chapter 8 *** Section: Batch Plant Design Under Uncertainty *** Test Problem 3 *** *** Single-Product Campaign (5 products, 6 stages, 1 scenario) ***************************************************************** SET i products /1*5/ j equipment /1*6/ q1 quadrature index /1*5/ q2 quadrature index /1*5/ q3 quadrature index /1*5/ q4 quadrature index /1*5/ q5 quadrature index /1*5/ p periods /1*1/; **************************************************************************** * c = penalty parameter * d, a(j), beta(j) = equipment cost parameters * omega(p) = weighting parameter for scenario p * pr(i) = price of product i * v#(q#), W#(q#) = Gaussian quadrature parameters * k(q1,q2) = joint probability for quadrature point * S(i,j,p) = size parameter * t(i,j,p) = processing time parameter * H = planning time horizon * theta(i,q1,q2) = demand for product i at quadrature point * tlow(i,p) = time limiting step for product i in scenario p * mean#, sigma# = statistics for demand distribution * units(j) = number of identical units at stage j PARAMETERS d, c, a(j), beta(j), units(j), omega(p), pr(i), v1(q1), v2(q2), v3(q3), v4(q4), v5(q5), W1(q1), W2(q2), W3(q3), W4(q4), W5(q5), k(q1,q2,q3,q4,q5), S(i,j,p), theta(i,q1,q2,q3,q4,q5), H, t(i,j,p), tlow(i,p), sigma1, sigma2, sigma3, sigma4, sigma5, mean1, mean2, mean3, mean4, mean5, t1max, t1min, t2max, t2min, t3max, t3min, t4max, t4min, t5max, t5min, PI; PI = 3.1415927; mean1 = 250; mean2 = 150; mean3 = 180; mean4 = 160; mean5 = 120; sigma1 = 10; sigma2 = 8; sigma3 = 9; sigma4 = 6; sigma5 = 3; t1max=mean1+4*sigma1; t1min=mean1-4*sigma1; t2max=mean2+4*sigma2; t2min=mean2-4*sigma2; t3max=mean3+4*sigma3; t3min=mean3-4*sigma3; t4max=mean4+4*sigma4; t4min=mean4-4*sigma4; t5max=mean5+4*sigma5; t5min=mean5-4*sigma5; v1('1')=-0.9061798459; W1('1') = 0.23692885; v1('2')=-0.5384693101; W1('2') = 0.4786286705; v1('3')=0; W1('3') = 0.56888889; v1('4')=0.5384693101; W1('4') = 0.4786286705; v1('5')=0.9061798459; W1('5') = 0.23692885; v2('1')=-0.9061798459; W2('1') = 0.23692885; v2('2')=-0.5384693101; W2('2') = 0.4786286705; v2('3')=0; W2('3') = 0.56888889; v2('4')=0.5384693101; W2('4') = 0.4786286705; v2('5')=0.9061798459; W2('5') = 0.23692885; v3('1')=-0.9061798459; W3('1') = 0.23692885; v3('2')=-0.5384693101; W3('2') = 0.4786286705; v3('3')=0; W3('3') = 0.56888889; v3('4')=0.5384693101; W3('4') = 0.4786286705; v3('5')=0.9061798459; W3('5') = 0.23692885; v4('1')=-0.9061798459; W4('1') = 0.23692885; v4('2')=-0.5384693101; W4('2') = 0.4786286705; v4('3')=0; W4('3') = 0.56888889; v4('4')=0.5384693101; W4('4') = 0.4786286705; v4('5')=0.9061798459; W4('5') = 0.23692885; v5('1')=-0.9061798459; W5('1') = 0.23692885; v5('2')=-0.5384693101; W5('2') = 0.4786286705; v5('3')=0; W5('3') = 0.56888889; v5('4')=0.5384693101; W5('4') = 0.4786286705; v5('5')=0.9061798459; W5('5') = 0.23692885; theta('1',q1,q2,q3,q4,q5) = 0.5*(t1max*(1+v1(q1))+t1min*(1-v1(q1))); theta('2',q1,q2,q3,q4,q5) = 0.5*(t2max*(1+v2(q2))+t2min*(1-v2(q2))); theta('3',q1,q2,q3,q4,q5) = 0.5*(t3max*(1+v3(q3))+t3min*(1-v3(q3))); theta('4',q1,q2,q3,q4,q5) = 0.5*(t4max*(1+v4(q4))+t4min*(1-v4(q4))); theta('5',q1,q2,q3,q4,q5) = 0.5*(t5max*(1+v5(q5))+t5min*(1-v5(q5))); k(q1,q2,q3,q4,q5) = EXP(-0.5*( ((theta('1',q1,q2,q3,q4,q5)-mean1) *(theta('1',q1,q2,q3,q4,q5)-mean1)) /(sigma1*sigma1) +((theta('2',q1,q2,q3,q4,q5)-mean2) *(theta('2',q1,q2,q3,q4,q5)-mean2)) /(sigma2*sigma2) +((theta('3',q1,q2,q3,q4,q5)-mean3) *(theta('3',q1,q2,q3,q4,q5)-mean3)) /(sigma3*sigma3) +((theta('4',q1,q2,q3,q4,q5)-mean4) *(theta('4',q1,q2,q3,q4,q5)-mean4)) /(sigma4*sigma4) +((theta('5',q1,q2,q3,q4,q5)-mean5) *(theta('5',q1,q2,q3,q4,q5)-mean5)) /(sigma5*sigma5) ) )/(2*PI*2*PI*((2*PI)**0.5)*sigma1*sigma2*sigma3*sigma4*sigma5); d = 0.3; c = 0; a(j) = 250/1000; beta(j) = 0.6; omega(p) = 1; H = 6; pr('1') = 3.5; pr('2') = 4; pr('3') = 3; pr('4') = 2; pr('5') = 4.5; units('1') = 3; units('2') = 2; units('3') = 3; units('4') = 2; units('5') = 1; units('6') = 2; S('1','1','1') = 7.9; S('1','2','1') = 2.0; S('1','3','1') = 5.2; S('1','4','1') = 4.9; S('1','5','1') = 6.1; S('1','6','1') = 4.2; S('2','1','1') = 0.7; S('2','2','1') = 0.8; S('2','3','1') = 0.9; S('2','4','1') = 3.4; S('2','5','1') = 2.1; S('2','6','1') = 2.5; S('3','1','1') = 0.7; S('3','2','1') = 2.6; S('3','3','1') = 1.6; S('3','4','1') = 3.6; S('3','5','1') = 3.2; S('3','6','1') = 2.9; S('4','1','1') = 4.7; S('4','2','1') = 2.3; S('4','3','1') = 1.6; S('4','4','1') = 2.7; S('4','5','1') = 1.2; S('4','6','1') = 2.5; S('5','1','1') = 1.2; S('5','2','1') = 3.6; S('5','3','1') = 2.4; S('5','4','1') = 4.5; S('5','5','1') = 1.6; S('5','6','1') = 2.1; tlow('1','1') = LOG(2.7667); tlow('2','1') = LOG(3.2); tlow('3','1') = LOG(5.95); tlow('4','1') = LOG(2.8); tlow('5','1') = LOG(3.7); *********************************************************************** **** Variable bounds PARAMETERS vubd(j), vlbd(j), blbd(i), bubd(i), Qlbd(i,q1,q2,q3,q4,q5,p), Qubd(i,q1,q2,q3,q4,q5,p); Qlbd('1',q1,q2,q3,q4,q5,p) = t1min; Qlbd('2',q1,q2,q3,q4,q5,p) = t2min; Qlbd('3',q1,q2,q3,q4,q5,p) = t3min; Qlbd('4',q1,q2,q3,q4,q5,p) = t4min; Qlbd('5',q1,q2,q3,q4,q5,p) = t5min; Qubd(i,q1,q2,q3,q4,q5,p) = theta(i,q1,q2,q3,q4,q5); vlbd(j) = LOG(500); vubd(j) = LOG(4500); blbd('1') = LOG(500/8.3); blbd('2') = LOG(500/3.4); blbd('3') = LOG(500/3.6); blbd('4') = LOG(500/4.7); blbd('5') = LOG(500/4.5); bubd('1') = LOG(4500/8); bubd('2') = LOG(4500/3.4); bubd('3') = LOG(4500/3.6); bubd('4') = LOG(4500/4.7); bubd('5') = LOG(4500/4.5); ****************************************************************** * z = objective value * v(j) = capacity of equipment j (volume) * b(i) = batch size of produce i * Q(i,q1,q2,q3,q4,q5,p) = production of i at quadrature point (q1,q2) * for scenario p VARIABLES z, v(j), Q(i,q1,q2,q3,q4,q5,p), b(i); ****************************************************************** * obj = objective function * con1 = equipment size constraint * con2 = planning horizon constraint EQUATIONS obj Convex objective function con1(i,j,p) Convex Inequality con2(q1,q2,q3,q4,q5,p) Nonconvex Inequality; *-------------------------------------------------------------------- obj.. z =e= d*SUM(j,a(j)*units(j)*EXP(beta(j)*v(j))) -SUM(p, SUM(q1, SUM(q2, SUM(q3, SUM(q4, SUM(q5, SUM(i, (c+1)*((t1max-t1min)/2)*((t2max-t2min)/2) *((t3max-t3min)/2)*((t4max-t4min)/2) *((t5max-t5min)/2) *omega(p)*W1(q1)*W2(q2)*W3(q3)*W4(q4)*W5(q5) *k(q1,q2,q3,q4,q5)*pr(i)*Q(i,q1,q2,q3,q4,q5,p) -c*((t1max-t1min)/2)*((t2max-t2min)/2) *((t3max-t3min)/2)*((t4max-t4min)/2) *((t5max-t5min)/2) *omega(p)*W1(q1)*W2(q2)*W3(q3)*W4(q4)*W5(q5) *k(q1,q2,q3,q4,q5)*pr(i)*theta(i,q1,q2,q3,q4,q5) ) ) ) ) ) ) ); con1(i,j,p).. v(j) - b(i) =g= LOG(S(i,j,p)); con2(q1,q2,q3,q4,q5,p).. SUM(i, Q(i,q1,q2,q3,q4,q5,p) *EXP(tlow(i,p)-b(i))) =l= H; *------------------------------------------------------- MODEL spc / all /; *------------------------------------------------------