$ondollar title Pfizer Lot Sizing (NLP) Example 14.4 of Rardin (1998) $offsymxref offsymlist offuelxref offuellist offupper option limrow = 0, limcol = 0; sets k "process steps" /0*2/, j "product numbers" /1*4/; parameter d(j) "annual demand for j (batches)" /1 150, 2 220, 3 55, 4 90/; table t(j,k) "changeover time for product j, stage k (weeks)" 1 2 1 0.5 0.7 2 1.3 2.0 3 0.3 0.2 4 0.9 1.8; table p(j,k) "process times for product j, stage k (weeks)" 1 2 1 1.5 3.2 2 4.0 1.5 3 2.5 4.2 4 2.0 3.5; table v(j,k) "value of product j and end of stage k (000)" 0 1 2 1 10 14 27 2 50 70 110 3 18 29 40 4 43 69 178; scalar i "inventory holding cost per week" /.005/, c "changeover activities cost" /12/; free variable anncost "average annual cost"; positive variable x(j) "number of batches per campaign of j"; x.lo(j) = 1.0e-3; equations obj "minimize total annual cost", cap "production time capacity"; obj.. anncost =e= sum(j, ( d(j)/x(j) ) * ( c * sum(k$(ord(k) gt 1), t(j,k)) + i * ( sum(k$(ord(k) gt 1), 0.5*p(j,k)*(v(j,k-1) + v(j,k))*sqr(x(j)) ) + ( 52*v(j,'2') ) / ( 2 * d(j) ) * sqr(x(j)) ) ) ); cap.. sum(j, (d(j)/x(j)) * ( sum(k$(ord(k) gt 1), t(j,k) + p(j,k)*x(j)) ) ) =l= 3000; model pfizer /all/; x.l(j) = 1.0; solve pfizer using nlp minimizing anncost;