***************************************************************** *** Chapter 8 *** Section: Batch Plant Design Under Uncertainty *** Test Problem 2 *** *** Single-Product Campaign (4 products, 6 stages, 3 scenarios) ***************************************************************** SET i products /1*4/ j equipment /1*6/ q1 quadrature index /1*5/ q2 quadrature index /1*5/ q3 quadrature index /1*5/ q4 quadrature index /1*5/ p periods /1*3/; **************************************************************************** * 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 PARAMETERS d, c, a(j), beta(j), omega(p), pr(i), v1(q1), v2(q2), v3(q3), v4(q4), W1(q1), W2(q2), W3(q3), W4(q4), k(q1,q2,q3,q4), S(i,j,p), theta(i,q1,q2,q3,q4), H, t(i,j,p), tlow(i,p), sigma1, sigma2, sigma3, sigma4, mean1, mean2, mean3, mean4, t1max, t1min, t2max, t2min, t3max, t3min, t4max, t4min, PI; PI = 3.1415927; mean1 = 150; mean2 = 150; mean3 = 180; mean4 = 160; sigma1 = 10; sigma2 = 8; sigma3 = 9; sigma4 = 10; 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; 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; theta('1',q1,q2,q3,q4) = 0.5*(t1max*(1+v1(q1))+t1min*(1-v1(q1))); theta('2',q1,q2,q3,q4) = 0.5*(t2max*(1+v2(q2))+t2min*(1-v2(q2))); theta('3',q1,q2,q3,q4) = 0.5*(t3max*(1+v3(q3))+t3min*(1-v3(q3))); theta('4',q1,q2,q3,q4) = 0.5*(t4max*(1+v4(q4))+t4min*(1-v4(q4))); k(q1,q2,q3,q4) = EXP(-0.5*( ((theta('1',q1,q2,q3,q4)-mean1) *(theta('1',q1,q2,q3,q4)-mean1)) /(sigma1*sigma1) +((theta('2',q1,q2,q3,q4)-mean2) *(theta('2',q1,q2,q3,q4)-mean2)) /(sigma2*sigma2) +((theta('3',q1,q2,q3,q4)-mean3) *(theta('3',q1,q2,q3,q4)-mean3)) /(sigma3*sigma3) +((theta('4',q1,q2,q3,q4)-mean4) *(theta('4',q1,q2,q3,q4)-mean4)) /(sigma4*sigma4) ) )/(2*PI*2*PI*sigma1*sigma2*sigma3*sigma4); d = 0.3; c = 0; a(j) = 10; beta(j) = 0.6; omega(p) = 1/3; H = 8; pr('1') = 3.5; pr('2') = 4; pr('3') = 3; pr('4') = 2; S('1','1','1') = 8; S('1','2','1') = 2; 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.8; 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.4; 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('1','1','2') = 8.5; S('1','2','2') = 2.5; S('1','3','2') = 5.7; S('1','4','2') = 5.4; S('1','5','2') = 6.6; S('1','6','2') = 4.7; S('2','1','2') = 1.2; S('2','2','2') = 1.3; S('2','3','2') = 1.4; S('2','4','2') = 4.3; S('2','5','2') = 2.6; S('2','6','2') = 3.0; S('3','1','2') = 1.2; S('3','2','2') = 3.1; S('3','3','2') = 2.1; S('3','4','2') = 3.9; S('3','5','2') = 3.7; S('3','6','2') = 3.4; S('4','1','2') = 5.2; S('4','2','2') = 2.8; S('4','3','2') = 2.1; S('4','4','2') = 3.2; S('4','5','2') = 1.7; S('4','6','2') = 3.0; S('1','1','3') = 7.5; S('1','2','3') = 1.5; S('1','3','3') = 4.7; S('1','4','3') = 4.4; S('1','5','3') = 5.6; S('1','6','3') = 3.7; S('2','1','3') = 0.2; S('2','2','3') = 0.3; S('2','3','3') = 0.4; S('2','4','3') = 3.3; S('2','5','3') = 1.6; S('2','6','3') = 2.0; S('3','1','3') = 0.2; S('3','2','3') = 2.1; S('3','3','3') = 1.1; S('3','4','3') = 2.9; S('3','5','3') = 2.7; S('3','6','3') = 2.4; S('4','1','3') = 4.2; S('4','2','3') = 1.8; S('4','3','3') = 1.1; S('4','4','3') = 2.2; S('4','5','3') = 0.7; S('4','6','3') = 2.0; t('1','1','1') = LOG(7.0); t('1','2','1') = LOG(8.3); t('1','3','1') = LOG(6.0); t('1','4','1') = LOG(7.0); t('1','5','1') = LOG(6.5); t('1','6','1') = LOG(8.0); t('2','1','1') = LOG(6.8); t('2','2','1') = LOG(5.0); t('2','3','1') = LOG(6.0); t('2','4','1') = LOG(4.8); t('2','5','1') = LOG(5.5); t('2','6','1') = LOG(5.8); t('3','1','1') = LOG(4.0); t('3','2','1') = LOG(5.9); t('3','3','1') = LOG(5.0); t('3','4','1') = LOG(6.0); t('3','5','1') = LOG(5.5); t('3','6','1') = LOG(4.5); t('4','1','1') = LOG(2.4); t('4','2','1') = LOG(3.0); t('4','3','1') = LOG(3.5); t('4','4','1') = LOG(2.5); t('4','5','1') = LOG(3.0); t('4','6','1') = LOG(2.8); t('1','1','2') = LOG(6.0); t('1','2','2') = LOG(7.3); t('1','3','2') = LOG(5.0); t('1','4','2') = LOG(6.0); t('1','5','2') = LOG(5.5); t('1','6','2') = LOG(7.0); t('2','1','2') = LOG(5.8); t('2','2','2') = LOG(4.0); t('2','3','2') = LOG(5.0); t('2','4','2') = LOG(3.8); t('2','5','2') = LOG(4.5); t('2','6','2') = LOG(4.8); t('3','1','2') = LOG(3.0); t('3','2','2') = LOG(4.9); t('3','3','2') = LOG(4.0); t('3','4','2') = LOG(5.0); t('3','5','2') = LOG(4.5); t('3','6','2') = LOG(3.5); t('4','1','2') = LOG(1.4); t('4','2','2') = LOG(2.0); t('4','3','2') = LOG(2.5); t('4','4','2') = LOG(1.5); t('4','5','2') = LOG(2.0); t('4','6','2') = LOG(1.8); t('1','1','3') = LOG(8.0); t('1','2','3') = LOG(9.3); t('1','3','3') = LOG(7.0); t('1','4','3') = LOG(8.0); t('1','5','3') = LOG(7.5); t('1','6','3') = LOG(9.0); t('2','1','3') = LOG(7.8); t('2','2','3') = LOG(6.0); t('2','3','3') = LOG(7.0); t('2','4','3') = LOG(5.8); t('2','5','3') = LOG(6.5); t('2','6','3') = LOG(6.8); t('3','1','3') = LOG(5.0); t('3','2','3') = LOG(6.9); t('3','3','3') = LOG(6.0); t('3','4','3') = LOG(7.0); t('3','5','3') = LOG(6.5); t('3','6','3') = LOG(5.5); t('4','1','3') = LOG(3.4); t('4','2','3') = LOG(4.0); t('4','3','3') = LOG(4.5); t('4','4','3') = LOG(3.5); t('4','5','3') = LOG(4.0); t('4','6','3') = LOG(3.8); tlow('1','1') = LOG(8.3); tlow('1','2') = LOG(7.3); tlow('1','3') = LOG(9.3); tlow('2','1') = LOG(6.8); tlow('2','2') = LOG(5.8); tlow('2','3') = LOG(7.8); tlow('3','1') = LOG(6.0); tlow('3','2') = LOG(5.0); tlow('3','3') = LOG(7.0); tlow('4','1') = LOG(3.5); tlow('4','2') = LOG(2.5); tlow('4','3') = LOG(4.5); ******************************************************************************** **** Variable bounds PARAMETERS vubd(j), vlbd(j), blbd(i), bubd(i), Qlbd(i,q1,q2,q3,q4,p), Qubd(i,q1,q2,q3,q4,p); **** Original bounds Qlbd('1',q1,q2,q3,q4,p) = t1min; Qlbd('2',q1,q2,q3,q4,p) = t2min; Qlbd('3',q1,q2,q3,q4,p) = t3min; Qlbd('4',q1,q2,q3,q4,p) = t4min; Qubd(i,q1,q2,q3,q4,p) = theta(i,q1,q2,q3,q4); vlbd(j) = LOG(500); vubd(j) = LOG(4500); blbd('1') = LOG(500/8.5); blbd('2') = LOG(500/4.3); blbd('3') = LOG(500/3.9); blbd('4') = LOG(500/5.2); bubd('1') = LOG(4500/8.5); bubd('2') = LOG(4500/4.3); bubd('3') = LOG(4500/3.9); bubd('4') = LOG(4500/5.2); ****************************************************************** * z = objective value * v(j) = capacity of equipment j (volume) * b(i) = batch size of produce i * Q(i,q1,q2,q3,q4,p) = production of i at quadrature point (q1,q2) * for scenario p VARIABLES z, v(j), Q(i,q1,q2,q3,q4,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,p) Nonconvex Inequality; *-------------------------------------------------------------------- obj.. z =e= d*SUM(j,a(j)*EXP(beta(j)*v(j))) -SUM(p, SUM(q1, SUM(q2, SUM(q3, SUM(q4, SUM(i, (c+1)*((t1max-t1min)/2)*((t2max-t2min)/2) *((t3max-t3min)/2)*((t4max-t4min)/2) *omega(p)*W1(q1)*W2(q2)*W3(q3)*W4(q4) *k(q1,q2,q3,q4)*pr(i)*Q(i,q1,q2,q3,q4,p) -c*((t1max-t1min)/2)*((t2max-t2min)/2) *((t3max-t3min)/2)*((t4max-t4min)/2) *omega(p)*W1(q1)*W2(q2)*W3(q3)*W4(q4) *k(q1,q2,q3,q4)*pr(i)*theta(i,q1,q2,q3,q4) ) ) ) ) ) ); con1(i,j,p).. v(j) - b(i) =g= LOG(S(i,j,p)); con2(q1,q2,q3,q4,p).. SUM(i, Q(i,q1,q2,q3,q4,p)*EXP(tlow(i,p)-b(i))) =l= H; *------------------------------------------------------- MODEL spc / all /; *------------------------------------------------------