ࡱ> TER( 4) = OBJECTIVE; @POINTER( 5) = @STATUS(); ENDDATA END MODEL: SETS: DAYS / MON TUE WED THU FRI SAT SUN/: NEEDS, START, ONDUTY; ENDSETS [OBJECTIVE] MIN = @SUM( DAYS( I): START( I)); @FOR( DAYS( TODAY): ! Calculate number on duty; ONDUTY( TODAY) = @SUM( DAYS( D)| D #LE# 5: START( @WRAP( TODAY - D + 1, @SIZE( DAYS)))); ! Enforce staffing requirement; ONDUTY( TODAY) >= NEEDS( TODAY); @GIN( START); ); DATA: NEEDS = @POINTER( 1); @POINTER( 2) = START; @POINTER( 3) = ONDUTY; @POINRoot EntryDCONTENTSD Root Entry*0_^@P_e Contentss  ar \cf1 @POINTER\cf2 ( 5) = \cf1 @STATUS\cf2 (); \par \cf1 ENDDATA\cf2 \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 : \par DAYS / MON TUE WED THU FRI SAT SUN/: \par NEEDS, START, ONDUTY; \par \cf1 ENDSETS\cf2 \par \par [OBJECTIVE] \cf1 MIN\cf2 = \cf1 @SUM\cf2 ( DAYS( I): START( I)); \par \par \cf1 @FOR\cf2 ( DAYS( TODAY): \par \par \cf3 ! Calculate number on duty;\cf2 \par ONDUTY( TODAY) = \par \cf1 @SUM\cf2 ( DAYS( D)| D #LE# 5: \par START( \cf1 @WRAP\cf2 ( TODAY - D + 1, \cf1 @SIZE\cf2 ( DAYS)))); \par \par \cf3 ! Enforce staffing requirement;\cf2 \par ONDUTY( TODAY) >= NEEDS( TODAY); \par \par \cf1 @GIN\cf2 ( START); \par ); \par \par \cf1 DATA\cf2 : \par NEEDS = \cf1 @POINTER\cf2 ( 1); \par \cf1 @POINTER\cf2 ( 2) = START; \par \cf1 @POINTER\cf2 ( 3) = ONDUTY; \par \cf1 @POINTER\cf2 ( 4) = OBJECTIVE; \p