ÐÏࡱá>þÿ  þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! Fraction of demands satisfied by production in period I for demands in S through T; VC, ! Variable cost of getting an item from S to T; TP; ! Total production in the batch: (I,S,T); ENDSETS DATA: CAP = 200; ! Capacity each period; ST = 0 0; ! Setup time for each product; PT = 1 1; ! Production time/unit for each product; D = 40 60 100 40 100 200 20 30 40 30 25 35; K = 100 100 150 150 205 200 30 40 30 55 45 45; H = 1 1 2 2 3 2 2 1 1 2 1 2; C = 5 6 7 8 9 10 2 4 4 5 5 5; ENDDATA !------------------------------------------------------; @FOR( PXT( I, S): VC( I, S, S) = C( I, S); TP( I, S, S) = D( I, S); ); @FOR( PXTXT( I, S, T) | S #LT# T: ! Variable cost of getting product I from S to T; VC( I, S, T) = VC( I, S, T-1) + H( I, T - 1); ! Total demand for I over S to T; TP( I, S, T) = TP( I, S, T-1) + D( I, T); ); MIN = @SUM( PXT( I, T): K( I, T) * Y( I, T)) + @SUM( PXTXT( I, S, T): X( I, S, T) * @SUM( PXT( I, J) | S #LE# J #AND# J #LE# T: D( I, J) * VC( I, S, J))); ! Capacity constraints; @FOR( TIME( S): @SUM( PXT( I, S): ST( I) * Y( I, S)) + @SUM( PXTXT( I, S, T): TP( I, S, T) * PT( I) * X( I, S, T)) <= CAP;); ! Demand constraints; @FOR( PROD( I): ! First period must be covered; @SUM( PXTXT( I, S, T)| S #EQ# 1: X( I, 1, T)) = 1; ! For subsequent periods, if a run ended in S-1, then we must start a run in S; @FOR( TIME( S)| S #GT# 1: @SUM( PXT( I, J)| J #LT# S: X( I, J, S - 1)) = @SUM( PXTXT( I, S, J): X( I, S, J)); ); ); ! Setup forcing constraints; @FOR( PXT( I, S): @BIN( Y( I, S)); Y( I, S) >= @SUM( PXTXT( I, S, T): @SIGN( TP( I, S, T)) * X( I, S, T)); ); ! Compute amount made in each period; @FOR( PXT( I, S): @FREE( MAKE( I, S)); MAKE( I, S) = @SUM( PXTXT( I, S, T): TP( I, S, T) * X( I, S, T)); ); END MODEL: SETS: ! Multiproduct capacitated lotsizing; TIME/1..6/: ; PROD/ A, B/: ST, ! Setup time for product I; PT; ! Production time/unit for product I; PXT( PROD, TIME): D, ! Demand for prod I in period S; K, ! Setup cost for prod I in period S; C, ! Cost/unit for prod I in period S; H, ! Holding cost/unit for prod I, end of period S; MAKE, ! Amount to make of I in period S; Y; ! = 1 if produce I in period S, else 0; PXTXT( PROD, TIME, TIME)| &2 #LE# &3: X, þÿÿÿýÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ¸ CONTENTSÿÿÿÿÿÿÿÿÿÿÿÿ¸ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ*0_šîÏ»òÀð^° öKfþÄ Contentsÿÿÿÿÿÿÿÿÿÿÿÿï ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿýÿÿÿþÿÿÿ þÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  !"#$%&'()*+,-./01234567þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿS, T): \par TP( I, S, T) * PT( I) * X( I, S, T)) <= CAP;); \par \cf3 ! Demand constraints;\cf2 \par \cf1 @FOR\cf2 ( PROD( I): \par \cf3 ! First period must be covered;\cf2 \par \cf1 @SUM\cf2 ( PXTXT( I, S, T)| S #EQ# 1: X( I, 1, T)) = 1; \par \cf3 ! For subsequent periods, if a run ended in S-1, then we must start a run in S;\cf2 \par \cf1 @FOR\cf2 ( TIME( S)| S #GT# 1: \par \cf1 @SUM\cf2 ( PXT( I, J)| J #LT# S: X( I, J, S - 1)) = \par \cf1 @SUM\cf2 ( PXTXT( I, S, J): X( I, S, J)); \par ); ); \par \cf3 ! Setup forcing constraints;\cf2 \par \cf1 @FOR\cf2 ( PXT( I, S): \par \cf1 @BIN\cf2 ( Y( I, S)); \par Y( I, S) >= \cf1 @SUM\cf2 ( PXTXT( I, S, T): \par \cf1 @SIGN\cf2 ( TP( I, S, T)) * X( I, S, T)); \par ); \par \cf3 ! Compute amount made in each period;\cf2 \par \cf1 @FOR\cf2 ( PXT( I, S): \par \cf1 @FREE\cf2 ( MAKE( I, S)); \par MAKE( I, S) = \par \cf1 @SUM\cf2 ( PXTXT( I, S, T): TP( I, S, T) * X( I, S, T)); \par ); \par \cf1 END\cf2 \par \par } ì‹{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Courier New;}} {\colortbl ;\red0\green0\blue255;\red0\green0\blue0;\red0\green175\blue0;} \viewkind4\uc1\pard\cf1\f0\fs20 MODEL\cf2 : \par \cf1 SETS\cf2 : \cf3 ! Multiproduct capacitated lotsizing;\cf2 \par TIME/1..6/: ; \par PROD/ A, B/: ST, \cf3 ! Setup time for product I;\cf2 \par PT; \cf3 ! Production time/unit for product I;\cf2 \par PXT( PROD, TIME): \par D, \cf3 ! Demand for prod I in period S;\cf2 \par K, \cf3 ! Setup cost for prod I in period S;\cf2 \par C, \cf3 ! Cost/unit for prod I in period S;\cf2 \par H, \cf3 ! Holding cost/unit for prod I, end of period S;\cf2 \par MAKE, \cf3 ! Amount to make of I in period S;\cf2 \par Y; \cf3 ! = 1 if produce I in period S, else 0;\cf2 \par PXTXT( PROD, TIME, TIME)| &2 #LE# &3: \par X, \cf3 ! Fraction of demands satisfied by production in period I for demands in S through T;\cf2 \par VC, \cf3 ! Variable cost of getting an item from S to T;\cf2 \par TP; \cf3 ! Total production in the batch: (I,S,T);\cf2 \par \cf1 ENDSETS\cf2 \par \cf1 DATA\cf2 : \par CAP = 200; \cf3 ! Capacity each period;\cf2 \par ST = 0 0; \cf3 ! Setup time for each product;\cf2 \par PT = 1 1; \cf3 ! Production time/unit for each product;\cf2 \par D = 40 60 100 40 100 200 \par 20 30 40 30 25 35; \par K = 100 100 150 150 205 200 \par 30 40 30 55 45 45; \par H = 1 1 2 2 3 2 \par 2 1 1 2 1 2; \par C = 5 6 7 8 9 10 \par 2 4 4 5 5 5; \par \cf1 ENDDATA\cf2 \par \cf3 !------------------------------------------------------;\cf2 \par \cf1 @FOR\cf2 ( PXT( I, S): \par VC( I, S, S) = C( I, S); \par TP( I, S, S) = D( I, S); \par ); \par \cf1 @FOR\cf2 ( PXTXT( I, S, T) | S #LT# T: \par \cf3 ! Variable cost of getting product I from S to T;\cf2 \par VC( I, S, T) = VC( I, S, T-1) + H( I, T - 1); \par \cf3 ! Total demand for I over S to T;\cf2 \par TP( I, S, T) = TP( I, S, T-1) + D( I, T); \par ); \par \cf1 MIN\cf2 = \cf1 @SUM\cf2 ( PXT( I, T): K( I, T) * Y( I, T)) \par + \cf1 @SUM\cf2 ( PXTXT( I, S, T): \par X( I, S, T) * \par \cf1 @SUM\cf2 ( PXT( I, J) | S #LE# J #AND# J #LE# T: \par D( I, J) * VC( I, S, J))); \par \cf3 ! Capacity constraints;\cf2 \par \cf1 @FOR\cf2 ( TIME( S): \par \cf1 @SUM\cf2 ( PXT( I, S): ST( I) * Y( I, S)) + \par \cf1 @SUM\cf2 ( PXTXT( I,