%!PS-Adobe-2.0 %%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software %%Title: ampl.dvi %%Pages: 64 -1 %%BoundingBox: 0 0 612 792 %%EndComments %%BeginProcSet: texc.pro /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10 N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{ /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{ statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail} B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}bind{ adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc X nd}bind{1 add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}bind]N /D{ /cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval (Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{ /SS save N}B /eos{clear SS restore}B end %%EndProcSet TeXDict begin 1000 300 300 @start /Fa 12 90 df<1303497EA3497EA2EB1BE0A3EB31F0 A2EB60F8A2EBE0FCEBC07CA248487EEBFFFE487FEB001FA20006EB0F80A2000E14C039FFC07FFC A21E1A7F9921>65 D68 DI<90381FE0209038FFFCE03803F80F3807C003381F800190C7FC123E007E1460127C00FC1400 A6ECFFFCA2007CEB03E0127E123E7E1380EA07C03803F8073800FFFC90381FF0601E1A7E9923> 71 D73 D<39FF800FFC13C0390FE000C07F120D EA0CF8137C7F133F7FEB0F80EB07C0EB03E014F01301EB00F8147C143E143F141F140F14071403 A238FFC00114001E1A7E9923>78 DII82 D<3807F040381FFDC0EA3C0FEA7803EA 700112F01300A26C1300B4FCEA7FF86CB4FC6C13806C13C0000113E0EA000FEB03F01301EAC000 A36C13E0EAF00138FC03C038EFFF803883FE00141A7E9919>I<007FB51280A238781F07007013 030060130100E014C000C01300A300001400AF3807FFFCA21A1A7E991F>I<39FFF007FCA2390F C000C00007130101E013803903F0030000015BEBF8066C6C5AEB7E1C14186D5AEB1FF06D5A5C13 07A9EB7FFCA21E1A7F9921>89 D E /Fb 4 118 df111 DI116 DI E /Fc 34 123 df<126012F0A2126004047D830B>46 D48 D<12035AB4FC1207B3A2EAFFF00C187D9713>III<1330A21370 13F0A2EA0170120312021204120C1208121012301220124012C0B5FCEA0070A6EA07FF10187F97 13>III<1240EA7FFE13FCA2EA4008EA8010A21320EA0040A213801201A213005AA45AA612020F 197E9813>III<130CA3131EA2133F1327A2EB4380A3EB81C0A348C67EA213 FF38020070A20006137800041338A2487FA2001C131EB4EBFFC01A1A7F991D>65 D73 D76 DI<38FE01FF380F00381410EA 0B80A2EA09C0EA08E0A21370A21338131CA2130EA21307EB0390A2EB01D0A2EB00F01470A21430 121C38FF8010181A7E991D>I<137F3801C1C038070070000E7F487F003C131E0038130E007813 0F00707F00F01480A80078EB0F00A20038130E003C131E001C131C6C5B6C5B3801C1C0D8007FC7 FC191A7E991E>II83 D97 D<12FC121CA913F8EA1F0EEA1E07381C0380130114C0A6EB03801400EA1E07EA1B 0CEA10F0121A7F9915>II<137E130EA9EA03CEEA0C3EEA380E1230127012E0A612601270EA381EEA1C 2E3807CFC0121A7F9915>II<1218123CA21218C7FCA612FC121CAEEAFF80091A8099 0A>105 D<12FC121CB3A6EAFF80091A80990A>108 D<38FC7C1F391D8E6380391E0781C0A2001C 1301AB39FF9FE7F81D107F8F20>II I114 DI<1204A3 120CA2121C123CEAFFC0EA1C00A81320A5EA0E40EA03800B177F960F>I<39FF3F9F80393C0E07 0000381306381C16041317001E130C380E23081488000F13983807419014D03803C1E01380A200 015BEB004019107F8F1C>119 D122 D E /Fd 5 57 df48 D<12035AB4FC1207B1EA7FF00C157E9412>III56 D E /Fe 45 123 df<126012F0A212701210A31220A312401280040C7B830D>44 D<126012F0A2126004047B830D>46 D<1303A3497EA2497E130BA2EB11E0A3EB20F0A2497E1478 A2497EA33801FFFEEB001E0002131F80A248EB0780A2120C001E14C039FF803FFC1E1D7E9C22> 65 DI<90380FE02090387018603801C00439030003 E000061301000E13004814605A15201278127000F01400A80070142012781238A26C14407E0006 14806CEB01003801C00638007018EB0FE01B1E7D9C21>II< B6FC380F000F140380A215801400A214801500A3130113FF13011300A3154014001580A31401A2 EC0300140FB6FC1A1C7D9B1F>II<90381FC04090387030C03801C00C3803000300 0E1301120C001C13005A15401278127000F01400A6EC7FF8EC07C00070130312781238A27E120C 120E000313053801C008390070304090381FC0001D1E7D9C23>I<39FFF0FFF0390F000F00AC90 B5FCEB000FAD39FFF0FFF01C1C7D9B22>II<380FFF80 38007C00133CB3127012F8A21338EA7078EA4070EA30E0EA0F80111D7D9B18>I<39FFF00FF839 0F0007C0EC030014025C5C5C1460148049C7FC13021307497E1317EB23C0EB43E01381EB00F080 14788080141F80EC078015C015E039FFF03FFC1E1C7D9B23>III79 DI82 D<3803E080EA0C19EA1005EA3003EA600112E01300A36C13007E127EEA7FE0EA3FFC6CB4FC0007 1380EA007FEB07C0EB03E0130113007EA36C13C0A238E0018038D00300EACE06EA81F8131E7D9C 19>I<007FB512C038700F010060130000401440A200C014201280A300001400B1497E3803FFFC 1B1C7D9B21>I<39FFE003FC001FC712F06C1440A26C6C1380A27F0003EB0100A23801E002A2EB F00600001304A2EB7808A2EB7C18EB3C10A26D5AA2EB1F60EB0F40A26D5AA36DC7FCA21E1D7E9B 22>86 D<3BFFE07FF03FC03B1F000F800F00ED00066CEC8004A213800007496C5A1413A23A03C0 33E0101421A23A01E061F0201440A2D800F06D5AEC8078A20178EB7C80903879003CA2013D013F C7FC013E7FA2011E131E011C130EA2010C130C010813042A1D7E9B2E>I<13201370A313B8A3EA 011CA3EA020EA2487EA2EA07FF38080380A3381801C0EA380338FE0FF815157F9419>97 D99 DIIII<38FF8FF8381C01C0A9EA1FFFEA1C01A938FF8FF815157F9419> III<38FF83F8381C01E01480140013025B5B5B1330137013B8EA1D1C121EEA1C0E7F148013 03EB01C014E014F038FF83FC16157F941A>II<00FEEB0FE0001E140000171317A338138027A23811C047A33810E087A2EB7107A3 133AA2131CA2123839FE083FE01B157F941F>I<38FC03F8381E00E014401217EA138013C01211 EA10E01370A21338131CA2130E130714C0130313011300123800FE134015157F9419>III114 DI<387FFFF03860703000401310A200801308A300001300ADEA07FF15157F9419>I<38FF 83F8381C00E01440AE000C13C0000E138038060100EA0386EA00FC15157F9419>I<38FF01F838 3C00F0001C1340A2001E13C0000E1380A238070100A21383EA0382A2EA01C4A213E4EA00E8A213 70A3132015157F9419>I<39FF0FF87E393C01E03C0038EBC018391C02E010A3390E047020A339 07083840A33903901C80A33901E00F00A33800C006A31F157F9423>I<38FF80FE381E0078000E 1320000F13407E3803808013C100011300EA00E2A21374137C1338A848B4FC1715809419>121 DI E /Ff 71 126 df35 D<13E01201EA0380EA0700120E5AA2 5AA25AA35AA91270A37EA27EA27E7EEA0380EA01E012000B217A9C16>40 D<12C07E12707E7E7EA27EA2EA0380A3EA01C0A9EA0380A3EA0700A2120EA25A5A5A5A5A0A217B 9C16>III<1238127C127EA212 3E120E121E121C127812F01260070B798416>II<127012F8A312700505 788416>IIIIII53 D<12E0B51280A338E00F00131EEA001C5B137813705BA2485AA3 485AA448C7FCA7111A7E9916>55 DI<127012F8A312701200A8127012F8A312700512789116>58 D60 DI<12C012F012FC123EEA0F806C7EEA01F06C7E133EEB1F801307131FEB3E0013F8485A EA07C0485A003EC7FC12FC12F012C011157E9616>I<13E0487EA213B0A2EA03B8A31318EA071C A5EA0E0EA2EA0FFEA2487EEA1C07A3387F1FC000FF13E0007F13C013197F9816>65 DI<3801F180EA07FBEA0FFFEA1F0FEA3C07EA3803 1270A200F0C7FC5AA77E38700380A21238383C0700EA1F0FEA0FFE6C5AEA01F011197E9816>I< EA7FF8EAFFFE6C7EEA1C0FEB0780EB03C01301A214E01300A8EB01C0A21303EB0780130F387FFF 00485AEA7FF81319809816>I<387FFFC0B5FC7EEA1C01A490C7FCA2131CA2EA1FFCA3EA1C1CA2 90C7FC14E0A5EA7FFFB5FC7E13197F9816>II<387F1FC038FFBFE0387F1FC0381C0700A7EA1FFFA3EA 1C07A9387F1FC038FFBFE0387F1FC013197F9816>72 DI76 D<38FC07E0EAFE0FA2383A0B 80EA3B1BA513BBEA39B3A413F3EA38E3A21303A538FE0FE0A313197F9816>I<387E1FC038FF3F E0387F1FC0381D07001387A313C7A2121CA213E7A31367A21377A21337A31317EA7F1FEAFF9FEA 7F0F13197F9816>III82 DI<387FFFE0B5FCA2EAE0E0A40000 1300AFEA07FC487E6C5A13197F9816>I<387F07F038FF8FF8387F07F0381C01C0B0380E0380A2 3807070013FF6C5AEA00F81519809816>I<38FC07E0EAFE0FEAFC07387001C0A300301380EA38 03A313E3EA39F3A213B300191300A61313EA1B1BEA0F1EA2EA0E0E13197F9816>87 D<387F1F80133F131F380E1E00131CEA073C1338EA03B813F012015B120012017F120313B81207 131CA2EA0E0EA2487E387F1FC000FF13E0007F13C013197F9816>I<387FFF80B5FCA238E00700 5B131E131CEA003C5B137013F0485A5B1203485A90C7FC5A381E0380121C123C12781270B5FCA3 11197E9816>90 DI93 D<1203EA0F80EA3FE0EAFDF8EAF078EA40100D067C9816>II97 D<127E12FE127E120EA4133E13FF000F1380EB83C0EB00 E0120E1470A614E0EA0F01EB83C0EBFF80000E1300EA063C1419809816>II<133F 5B7F1307A4EA03C7EA0FF748B4FCEA3C1F487EEA700712E0A6EA700FA2EA3C1F381FFFE0380FE7 F03807C7E014197F9816>II<131FEB7F8013FFEA01E7EBC30013C0 A2EA7FFFB5FCA2EA01C0ACEA3FFE487E6C5A11197F9816>I<3803E3C03807F7E0EA0FFF381C1C C038380E00A56C5AEA0FF8485AEA1BE00038C7FC1218EA1FFC13FF481380387803C038E000E0A4 387001C0EA7C07383FFF80380FFE00EA03F8131C7F9116>I<127E12FE127E120EA4133C13FEEA 0FFFEB87801303120EAA387FC7F038FFE7F8387FC7F01519809816>II<13301378A213301300A4EA1FF8A3EA00 38B3EA6070EAF0F0EAFFE0EA7FC0EA3F800D237E9916>I<127E12FE127E120EA4EB7FE0A3EB0F 00131E5B5B5B120F7F13BC131EEA0E0E7F1480387F87F0EAFFCFEA7F871419809816>II<38F9C38038FFEFC0EBFFE0EA3C78A2EA3870AA38FE7CF8A2 EB3C781512809116>IIII<38FF0F C0EB3FE0137F3807F040EBC0005BA290C7FCA8EAFFFCA313127F9116>114 DI<12035AA4EA7FFFB5FCA20007C7FCA75BEB0380A3EB87 00EA03FE6C5A6C5A11177F9616>I<387E1F80EAFE3FEA7E1FEA0E03AB130F380FFFF03807FBF8 3803E3F01512809116>I<387F1FC000FF13E0007F13C0381C0700EA1E0FEA0E0EA36C5AA4EA03 B8A3EA01F0A26C5A13127F9116>I<38FF1FE013BF131F38380380A413E33819F300A213B3EA1D B7A4EA0F1EA313127F9116>I<387F1FC0133F131F380F1C00EA073CEA03B813F012016C5A1201 7FEA03B8EA073C131CEA0E0E387F1FC038FF3FE0387F1FC013127F9116>I<387F1FC038FF9FE0 387F1FC0381C0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0A35BA3485A1279127B EA7F806CC7FC123C131B7F9116>I<383FFFC05AA238700780EB0F00131EC65A5B485A485AEA07 8048C7FC381E01C0123C1278B5FCA312127F9116>II<127CB4FC7FEA03C01201 A97F6CB4FCEB7F80A2EBFF00EA01E05BA91203B45A90C7FC127C11207E9C16>125 D E /Fg 84 126 df<124012E0A91240030B789614>13 D34 DI<13801201A2EA07E0EA1FF0EA39BCEA619CEAC18EA31384EA7180127FEA3FE0EA0FF0EA01F8 139C138EEA418612E1A3EA718CEA39B8EA1FF0EA0FC0EA0180A212000F1D7E9914>I<13C01201 EA030012065A121C5A12301270A2126012E0A712601270A2123012387E120C7E7EEA01C012000A 1D7A9914>40 D<7E7E12607E7E121C7E12061207A27E1380A713005AA21206120E5A12185A5A5A 5A091D7C9914>III<127012F812FCA212 7C120C1218123012E012C0060A798414>II<127012F8A3127005057984 14>I<1306130EA2131CA21338A21370A213E0A2EA01C0A2EA0380A3EA0700A2120EA25AA25AA2 5AA25AA25A0F1D7E9914>II<1203A25A5A123F12F712471207AEEA7FF0A20C 177C9614>III<137813F8EA01B8A2EA0338A21206120E120C121C12381230127012E0B51280A2380038 00A548B4FCA211177F9614>III<12E0EAFFFEA2EAE01C1338EA0030137013E013C0120113801203A2EA07 00A4120EA612040F187E9714>III<127012F8A312701200A6127012F8A31270051079 8F14>I<127012F8A312701200A6126012F012F8A2127812181230127012E012800515798F14>I< 130E133E137C13F0EA03E0EA07C0EA1F00123E12F85A7E123E7EEA07C0EA03E0EA00F0137C133E 130E0F137E9414>II<124012E012F8127C12 1EEA0F80EA07C0EA01F0EA00F8133E131E133E13F8EA01F0EA07C0EA0F80EA1E00127C5A12E012 400F157E9514>I65 DIIIIII<38FE3F80A238380E00A8EA3FFEA2EA380EA938FE3F80A211177F9614>IIIII<38FE0FE0 A2003E1380EA3B1BA413BBA2EA39B3A313F3EA38E3A21303A638FE0FE0A21317809614>I<38FE 3F80A2383E0E00123BA4138E1239A213CEA31238A213EE136EA4133E12FEA211177F9614>IIIIII<387FFF80B5FCEA E1C3A43801C000AFEA0FF8A211177F9614>I<38FE0FE0A238380380B0381C0700A2EA0E0EEA07 FCEA01F01317809614>I<38FC1F80A238380E00A36C5AA56C5AA4EA0630EA0770A3EA0360A213 E0A26C5A11177F9614>I<38FC1F80A238700700A6EA3006EA31C6EA3BEEA2136EA5EA1B6CA2EA 1A2CEA1E3CA311177F9614>II<38FE3F80A238380E 00EA3C1EEA1C1CEA1E3CEA0E38A26C5AA2EA036013E0A26C5AA8EA07F0A211177F9614>III93 D95 D97 D<12FCA2121CA513F8EA1D FEEA1F07EA1E03001C1380EB01C0A6EB0380001E1300EA1F0EEA1DFCEA0CF81217809614>II<137EA2130EA5EA07CEEA0FFEEA1C3EEA301EEA700E12E0A61270EA301EEA383E381FEFC0 EA07CF12177F9614>II<137C13FEEA01CEEA03841380A3EA7FFE12FFEA 0380ACEA7FFCA20F177F9614>II<12FCA2121CA51378EA1DFEEA1F86EA1E07121CAA38FF8FE0A21317809614>I<1203 EA0780A2EA0300C7FCA4EA7F80A21203ACEAFFFCA20E187D9714>I<136013F0A213601300A4EA 1FF0A2EA0070B2EA40E0EAE0C0EA7F80EA3F000C207E9714>I<12FCA2121CA5381DFF80A2381C 3C005B5BEA1DE0EA1FC0A27FEA1EF0EA1C707FA27F38FE3F80A211177F9614>III< EAFC78EAFDFEEA1F86EA1E07121CAA38FF8FE0A21310808F14>IIIIII<12035AA4EA7FFC12FFEA0700A8130EA3130CEA03FCEA00F00F157F9414>I< EAFC3FA2EA1C07AB131F380FFFE0EA03E71310808F14>I<38FE3F80A2381C1C00A46C5AA3EA06 30EA0770A36C5AA311107F8F14>I<38FF7F80A238380E00A4EA39CEA2EA19CCEA1B6CA2121AA2 EA1E7CEA0E78A211107F8F14>II<38FE3F80A2381C1C00A3120E5BA212071330A2EA03 70A26C5AA35BA3485A12730077C7FC127E123C11187F8F14>II<133E13FEEA01E0EA 0380AAEA7F0012FE127FEA0380AAEA01E0EA00FE133E0F1D7E9914>I<127812FE120FEA0380AA EA01FCEA00FEEA01FCEA0380AAEA0F0012FE12780F1D7E9914>125 D E /Fh 3 83 df50 D<3803FFC0000F13F03830E1F83860C07C00C0133C0081131C00011318A21430 EB8020144038038380EB3E00137048C7FC1206A2120E120CA25A16157F9318>80 D<3803FFF0000F7F3830E07C3860C03C00C0131C0081131812015C1420EB80C0018FC7FCEA039E 130F80EA0707380603C0ECE080390C01F100EB00FE48137819147F931D>82 D E /Fi 7 62 df<1360AAB512F0A238006000AA14167E9119>43 D<120C121C12EC120CAFEAFF C00A137D9211>49 D<121FEA60C01360EAF07013301260EA0070A2136013C012011380EA02005A EA08101210EA2020EA7FE012FF0C137E9211>II<136013E0A2EA0160 12021206120C120812101220126012C0EAFFFCEA0060A5EA03FC0E137F9211>II<387FFFE0B512F0C8FCA6B512F06C13E0140A7E8B19>61 D E /Fj 4 82 df<1306130C131813301370136013C012011380120313005A1206120E120C121CA2121812 38A312301270A65AB21270A612301238A31218121CA2120C120E120612077E1380120113C01200 1360137013301318130C13060F4A788119>16 D<12C012607E7E121C120C7E12077E1380120113 C0120013E013601370A213301338A31318131CA6130EB2131CA613181338A313301370A2136013 E013C012011380120313005A12065A121C12185A5A5A0F4A7F8119>I80 DI E /Fk 11 121 df0 D<0040132000C01360006013C03830018038180300EA0C066C5A6C5AEA01B0EA00E0A2EA01B0EA 0318EA060C487E487E38300180386000C04813600040132013147A9320>2 D15 D20 D<12C012F0123C120FEA03C0EA00F0133C130FEB03C0EB00F0143C 140FEC0380EC0F00143C14F0EB03C0010FC7FC133C13F0EA03C0000FC8FC123C127012C0C9FCA7 007FB5FCB6128019227D9920>I50 D80 D82 D<133C13E0EA01C013801203AD13005A121C12F0121C12077E1380AD120113C0EA00E0133C 0E297D9E15>102 D<12F0121C12077E1380AD120113C0EA00E0133C13E0EA01C013801203AD13 005A121C12F00E297D9E15>I<121FEA3080EA7040EA6060EAE0E0A2134013001260127012307E 121C1233EA7180EA61C012E013E0A31260EA70C01231EA1980EA07007EEA018013C0120013E012 4012E0A2EAC0C01241EA2180EA1F000B257D9C12>120 D E /Fl 61 124 df12 D<1203EA0780A213005AA3120EA4120CA4 5AA41210A2C7FCA51270A212F01260091E7C9D0C>33 D<1218123C127C12341204A21208A21210 A212601280060C799C0C>39 D<5B80A249C7FCA61306A4B612C0A2D8000CC7FCA65BA613101A1C 7C9720>43 D<12381278A212381208A21210A21220A212401280050C7D830C>II<1270A212F0126004047C830C>I<1404140C1418A21430A21460A214C0A2EB0180 EB0300A21306A25BA25BA25BA25BA25BA2485AA248C7FCA212065AA25AA25AA25AA25AA25A1629 7F9E15>I<13F8EA038EEA0606487EA2001813801238A212301270A438E00700A51306130E12C0 A2130C131C1318EA60305B6C5A001FC7FC111D7C9B15>I<13181370EA03F0EA0C701200A313E0 A6EA01C0A6EA0380A6EA07001380EAFFF80D1C7C9B15>I<137E38018380380201C0380400E0A2 120FA25AA2120EEA000114C0EB0380A2EB0700130E5B5B13605B485A3803008012063808010012 10EA3FFF485A12FF131C7E9B15>I<137CEA0187380203801204000F13C0A3000E13801200EB07 0013065B1338EA03F0EA001C7FA2130FA3127012F8A2EAF00EEAE01EEA801CEA4038EA3070EA0F C0121D7D9B15>I<133E13E138018080EA0303EA0607120C001C13000018C7FC12381230EA71F0 EA7618EA780CEAE80EEAF006A2EAE007A3130E12C0A35BEAE018EA60381330EA30C0EA0F80111D 7C9B15>54 D<120C121E121CA21200AA1270A212F0126007127C910C>58 D<142014301470A214F0A21301EB0378130213061304130CEB087CEB183C13101320A21340143E EBFFFEEB801EEA0100A21202805AA2001E5B39FF80FFF01C1D7F9C1F>65 D<380FFFFC3800F8079038F0038015C0140115E0A2D801E013C01403A2EC0780EC0F00143C3803 FFF8EBC01E80EC0780A3EA0780A4EC0F00141E48485A5CB512E01B1C7E9B1D>I<903807F01090 381C0C3090387002609038C001E03803800048C7FC000E1460A2481440123C123800781400A35A A51580EC01001270A26C13025C7E000C13186C1320380380C0D8007FC7FC1C1E7C9C1E>I<380F FFFC3900F807809038F001C0EC00E01570A2157848481338A4153C1538485A1578A3157015F048 4813E0A2EC01C0EC03801407EC0E0048485A1470B512C01E1C7E9B20>I<000FB512E03800F801 EBF0001540A4485A14401500A214C013E148B45A13C113C0A3158038078000A2EC0100A25C1406 380F000E143EB512FC1B1C7E9B1C>I<000FB512C03800F803EBF001EC0080A4485A14401500A2 14C013E148B45A13C113C0A44848C7FCA648C8FC7FEAFFF81A1C7E9B1B>I<903807F01090381C 0C3090387002609038C001E03803800048C7FC000E1460A2481440123C123800781400A35AA3EC FFF0EC0F801407EC0F001270A27EA26C5B000C131E6C136638038182D8007EC7FC1C1E7C9C21> I<380FFF803800F8005BA5485AA6485AA6485AA648C7FC7FEAFFF8111C7F9B0F>73 D<3801FFF038000F801400A5131EA65BA65BA2127012F8A2485A485AEA81C0EA4380003EC7FC14 1D7E9B15>I<380FFFC03800F8005BA5485AA6485AA51404EA0780A31408A21418380F003814F0 B5FC161C7E9B1A>76 DI<390FF807FE0000EB00F06D136001BC134013BE139EA2D801 0F1380A2EB0780A2EB03C0A2390201E100A2EB00F1A214F9147948137E143EA2141EA2140E000C 130C001E1304EAFF801F1C7E9B1F>II<380FFFFC3800F80F9038 F0038015C01401A33801E003A31580EC0700140E3803C03CEBFFE001C0C7FCA4485AA648C8FC7F EAFFF01A1C7E9B1C>II< 380FFFF83800F80E9038F00780EC03C0140115E0A23901E003C0A21580EC0700140E143C3803FF E0EBC07080143C141C141E48485AA51508D80F001310EB801CD8FFF01320C7EA07C01D1D7E9B1F >II<001FB512F0383C07C00030EB80300020142012601240A2EB0F00128000001400A413 1EA65BA65B137C381FFFE01C1C7C9B1E>I<39FFF87FE0390F800F00EB00061404A4001E5BA648 5BA6485BA300385BA25C6C48C7FCEA0C02EA070CEA01F01B1D7A9B1F>I<3BFFF0FFE0FF803B1F 001F003C006C15186E13105C5E142F1660D9804F13400007148002875BA29026810781C7FCA201 82138213C2D803C413C4140301C813C8A201D813D013D001F013E0EA01E06E5A13C05D1380A229 1D7B9B2B>87 D<3907FF87FE3900FE01F0017C13C0013C1380013E1300EB1E025CEB1F08EB0F18 1490EB07A014C0130380A28013041308497EEB3078EB207CEB403CEB803E3801001E48131F0006 7F001FEB1F8039FFC0FFF01F1C7F9B1F>I97 D<123F120F120EA65AA31378EA1D86EA1E03003C1380EA3801A214C0A338700380A314005B130E EAF00CEACC30EA83C0121D7C9C17>IIIII<1438EB3CCCEBC69C3801830800031380 EA0703A4EB0700EA0306138CEA04F090C7FC120CA2EA0FFE3807FF804813C0EA1801EA20000060 13E04813C0A23860018038200300EA180EEA07F0161C809215>II<13 C01201A21380C7FCA7EA1F8012071203EA0700A6120EA65A121EEAFF800A1D7F9C0C>I<130313 07A213061300A713FE131E130E131CA61338A61370A6EA60E012F0EAF1C0EA6380EA3E00102584 9C0D>III<391F8FC0FC39079061063903E0760738078078A2EB00 70A4000EEBE00EA64848485A001EEBE01E3AFF8FF8FF8021127F9124>I<381F8F803807B0C038 03C0E0EA0780A21300A4380E01C0A6381C0380001E13C038FF9FF014127F9117>I<13FCEA0307 380E0180001C13C0EA38001230007013E0A338E001C0A300601380130338700700EA380EEA1C18 EA07E013127E9115>I<380FC7803803D8603801E0303803C03813801418141CA338070038A314 70A214E0380F01C0380EC300133C90C7FCA35AA4B47E161A809117>I114 DI<1202A31206A25A121C123CEAFFE0EA1C00A25AA65A1340A41380A2EA3100121E0B1A7C99 10>I<38FC1F80EA3C07EA1C0338380700A6EA700EA4131EA25BEA305E381F9F8011127C9117>I< 38FF0FE0383C0380001C1300130213061304EA1E08120E5BA25B12075B13C05B90C7FC7E120213 127C9116>I<39FF3FCFE0393C0F0380D838061300EB0E02EA1C0FEB1704A2EB27081323EB4310 000E1390EB83A0A2380F03C01301000E5B1206000490C7FC1B127C911E>I<381FE3FC3807C1E0 380381803801C10013C2EA00E413EC137813707F1378139CEA011EEA020E487E120C003C138038 FE1FF016127F9116>I<380FF0FE3803C03800011330142014601440EBE0801200EBE100A213E2 13721374137C1378137013301320A25BA2EA708000F1C7FCA212E61278171A809116>I<380FFF 80380E0700EA080E1218EA101C5B5BC65A485AA2EA0382EA0702120E485A1238130CEA7038EAFF F811127F9112>II E /Fm 7 117 df<124012E012601220A31240A21280 03097D820A>59 D<381FFFF838381C18EA2038140812401410EA807000001300A35BA4485AA448 5AEA3FF81514809314>84 D<1206120712061200A41238124CA2128C12981218A2123012321262 A21264123808147F930C>105 D<1360137013601300A4EA0380EA04C01360EA08C0A21200A2EA 0180A4EA0300A4126612E65A12780C1A81930E>I<3830F87C38590C86384E0D06EA9C0EEA980C 1218A248485A15801418A23960301900140E190D7F8C1D>109 DI<12021206A35AEAFF80EA0C00A25AA45A 1231A21232A2121C09127F910D>116 D E /Fn 16 121 df<126012F0A2126004047C830C>58 D<126012F0A212701210A41220A212401280040C7C830C>I<12E01278121EEA0780EA01E0EA00 78131EEB0780EB01E0EB0078141EEC0780A2EC1E001478EB01E0EB0780011EC7FC1378EA01E0EA 0780001EC8FC127812E019187D9520>62 D77 D<001FB512F0391C03807039300700300020142012601240130E1280A2000014005BA45BA45BA4 5BA41201EA7FFF1C1C7F9B18>84 D97 D<123F1207A2120EA45AA4EA39E0EA3A30EA3C18 12381270131CA3EAE038A313301370136013C01261EA2300121E0E1D7E9C12>III 102 D105 D<1307130FA213061300A61370139CEA010C1202131C12041200A2 1338A41370A413E0A4EA01C01261EAF180EAF30012E6127C1024809B11>I115 D<13C01201A3EA0380A4EAFFF0EA0700A3120EA45AA4EA3820A21340 A2EA1880EA0F000C1A80990F>I<001CEBC080392701C1C0124714C03987038040A2120EA2391C 070080A3EC0100EA18061402EA1C0EEB0F04380E13083803E1F01A127E911E>119 D<380787803808C8403810F0C03820F1E0EBE3C03840E1803800E000A2485AA43863808012F3EB 810012E5EA84C6EA787813127E9118>I E /Fo 44 124 df<127812FCA212FEA2127A1202A212 04A21208A212301240070E7D850D>44 D<127812FCA4127806067D850D>46 D48 D<1360EA01E0120F12FF12F31203B3A2387FFF80A211 1B7D9A18>IIII<38180180381FFF005B5B5B13C00018C7FCA4EA19F8EA1E0E38 180F80EA1007000013C014E0A3127812F8A214C012F038600F8038381F00EA1FFEEA07F0131B7E 9A18>I<137EEA03FF38078180380F03C0EA1E07123CEB038048C7FCA212F813F8EAFB0E38FA07 80EAFC0314C000F813E0A41278A214C0123CEB0780381E0F00EA07FEEA03F8131B7E9A18>I<12 60387FFFE0A214C01480A238E00300EAC0065B5BC65AA25B13E0A212015B1203A41207A66C5A13 1C7D9B18>I57 D65 D<90381FE0209038FFF8E03803F80F3807C003380F800148C7FC123E1560127E127C00FC1400A8 007C1460127E123E15C07E390F8001803907C003003803F80E3800FFFCEB1FE01B1C7D9B22>67 DI70 D73 D79 DI<3807F820381FFEE0EA3C07EA7801 EA700012F01460A26C130012FEEAFFE0EA7FFE6C7E1480000F13C06C13E0EA007FEB03F0130113 0012C0A214E07E38F001C0EAFC0338EFFF00EA83FC141C7D9B1B>83 D<007FB512E0A238781F81 007013800060146000E0147000C01430A400001400B03807FFFEA21C1C7E9B21>I<3AFFFC01FF 80A23A0FC00018006C6C5BA26D1370000314606D13E000015C7F0000495AA2D97E03C7FCA2EB7F 07EB3F06148EEB1F8C14CCEB0FD8A2EB07F0A36D5AA26D5AA2211C7F9B24>86 D97 DIIII<137F3801E3803803C7C0EA0787120FEB8380EB8000A5EAFFF8A2EA0F80 AEEA7FF8A2121D809C0F>I<3803F8F0380E0F38121E381C0730003C1380A4001C1300EA1E0FEA 0E0EEA1BF80010C7FC1218A2EA1FFF14C06C13E04813F0387801F838F00078A300701370007813 F0381E03C03807FF00151B7F9118>II<121E123FA4121EC7FCA6B4FCA2121FAEEAFFE0A20B1E7F9D0E>I<1378 13FCA413781300A6EA03FCA2EA007CB2127012F8137813F0EA70E0EA1F800E26839D0F>I108 D<39FF0FC07E903831E18F3A1F40F20780D980FC13C0 A2EB00F8AB3AFFE7FF3FF8A225127F9128>I<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FF E7FFA218127F911B>II<38FF3F80EBE1E0381F80F0EB007814 7C143C143EA6143C147C1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I114 DI<1203A45AA25AA2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913>I<38FF 07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>I<38FFC1FCA2381F0060EB80E0000F 13C013C03807C180A23803E300A2EA01F6A213FE6C5AA21378A2133016127F9119>I<38FFC7FC A2381F8180EA0F833807C700EA03EEEA01FC5B1200137C13FEEA01DFEA039F38070F80380607C0 380C03E038FF07FCA216127F9119>120 D<38FFC1FCA2381F0060EB80E0000F13C013C03807C1 80A23803E300A2EA01F713F6EA00FE5BA21378A21330A21370EA706012F85BEAF9800073C7FC12 3E161A7F9119>I123 D E /Fp 29 122 df<12181238127812381208A212 10A212201240A21280050C7D830D>44 D<1230127812F0126005047C830D>46 D<1203EA0780A2EA0300C7FCAA12181238127812381208A25AA25A5AA25A091A7D910D>59 D<3801FFE038003C001338A45BA45BA4485AA438038008A31410EA07001430146014E0380E03C0 B5FC151C7D9B1A>76 D<3801FFFC38003C079038380380EC01C0A3EB7003A31580EBE007150014 0E14383801FFE001C0C7FCA3485AA448C8FCA45AEAFFE01A1C7D9B1C>80 D97 D<123F1207A2120EA45AA4EA39C0EA3E60EA3830A2EA7038A4EAE070A3136013E0 EAC0C012C1EA6180EA6300123C0D1D7B9C13>II III<13F3EA018FEA030FEA0607EA0E0E120C121CA2 EA381CA413381230A2EA187813F0EA0F701200A213E0A2EAC0C012E1EAC300127E101A7D9113> III<1306130E13061300A713F0EA01181202A2EA0438A2 1200A21370A413E0A4EA01C0A4EA0380A2EAC30012E712CE12780F24819B0D>III<393C1E078039266318C0394683A0E0384703C0008E1380A2120E A2391C0701C0A3EC0380D8380E1388A2EC0708151039701C032039300C01C01D127C9122>IIII114 DI<13C01201A3EA0380A4EAFFE0EA0700A3120EA45AA4EA3840A31380EA1900120E0B1A7D 990E>III<381E0183382703871247148338870701A2120EA2381C0E02A314 04EA180C131C1408001C1310380C26303807C3C018127C911C>III E /Fq 80 125 df6 D11 D<137E3801C180EA0301380703C0120EEB018090C7FCA5B512C0EA0E01B0387F87F8151D809C17 >II<90383F07E039 01C09C18380380F0D80701133C000E13E00100131892C7FCA5B612FC390E00E01CB03A7FC7FCFF 80211D809C23>I34 D<126012F012F812681208A31210A2122012401280050C7C9C0C>39 D<13401380EA0100120212065AA25AA25AA212701260A312E0AC1260A312701230A27EA27EA27E 12027EEA008013400A2A7D9E10>I<7E12407E7E12187EA27EA27EA213801201A313C0AC1380A3 12031300A21206A25AA25A12105A5A5A0A2A7E9E10>I<1306ADB612E0A2D80006C7FCAD1B1C7E 9720>43 D<126012F0A212701210A41220A212401280040C7C830C>II< 126012F0A2126004047C830C>I<130113031306A3130CA31318A31330A31360A213C0A3EA0180 A3EA0300A31206A25AA35AA35AA35AA35AA210297E9E15>II<1203 5A123F12C71207B3A4EA0F80EAFFF80D1C7C9B15>III<130CA2131C133CA2135C13DC139CEA011C120312021204120C1208121012301220 124012C0B512C038001C00A73801FFC0121C7F9B15>II<13F0EA030CEA0604EA0C0EEA181E1230130CEA7000A21260EAE3E0EAE430EA E818EAF00C130EEAE0061307A51260A2EA7006EA300E130CEA1818EA0C30EA03E0101D7E9B15> I<1240387FFF801400A2EA4002485AA25B485AA25B1360134013C0A212015BA21203A41207A66C C7FC111D7E9B15>III<12 6012F0A212601200AA126012F0A2126004127C910C>I<126012F0A212601200AA126012F0A212 701210A41220A212401280041A7C910C>I<007FB512C0B612E0C9FCA8B612E06C14C01B0C7E8F 20>61 D<1306A3130FA3EB1780A3EB23C0A3EB41E0A3EB80F0A200017FEB0078EBFFF83803007C 0002133CA20006133E0004131EA2000C131F121E39FF80FFF01C1D7F9C1F>65 DI<90381F8080EBE0613801801938070007000E1303 5A14015A00781300A2127000F01400A8007014801278A212386CEB0100A26C13026C5B38018008 3800E030EB1FC0191E7E9C1E>IIII<90381F8080EBE0613801801938070007000E13035A14015A00781300A212 7000F01400A6ECFFF0EC0F80007013071278A212387EA27E6C130B380180113800E06090381F80 001C1E7E9C21>I<39FFF3FFC0390F003C00ACEBFFFCEB003CAD39FFF3FFC01A1C7E9B1F>III<39FFF03FE0390F000F00140C14085C5C5C5C49C7FC13025B130E131F13 2FEB27801347EB83C0EB01E0A26D7E80147880A280141F158039FFF07FF01C1C7E9B20>IIIIII82 D<3807E080EA1C19EA3005EA7003EA600112E01300A36C13007E127CEA7FC0EA3FF8EA1FFEEA07 FFC61380130FEB07C0130313011280A300C01380A238E00300EAD002EACC0CEA83F8121E7E9C17 >I<007FB512C038700F010060130000401440A200C014201280A300001400B1497E3803FFFC1B 1C7F9B1E>I<39FFF07FC0390F000E001404B3A26C5B138000035B12016C6C5AEB70C0011FC7FC 1A1D7E9B1F>I<39FFE00FF0391F0003C06CEB018015006D5A00071302A26C6C5AA36C6C5AA213 F000005BA2EBF830EB7820A26D5AA36D5AA2131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE0FFE0 FF3A1F001F003C001E011E13186C011F1310A3D807801420EC2780A2D803C01440EC43C0A213E0 0001903881E080A33A00F100F100A3017913FA017A137AA2013E137C013C133CA301181318A328 1D7F9B2B>I<397FF0FFC0390FC03E0038078018EA03C0EBE01000015BEBF06000001340EB7880 137D013DC7FC7F131F7F80A2EB13C0EB23E01321EB41F0EBC0F8EB80783801007C48133C00027F 0006131F001FEB3F8039FFC0FFF01C1C7F9B1F>I<39FFF007FC390F8001E00007EB0080EBC001 00031400EBE002EA01F000005B13F8EB7808EB7C18EB3C106D5A131F6D5A14C06D5AABEB7FF81E 1C809B1F>I92 D97 D<12FC121CAA137CEA1D86EA1E03381C018014C0130014E0 A614C013011480381E0300EA1906EA10F8131D7F9C17>II<133F1307AAEA03E7EA0C17 EA180F487E1270126012E0A61260127012306C5AEA0C373807C7E0131D7E9C17>II<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>I I<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218123CA21218C7 FCA712FC121CB0EAFF80091D7F9C0C>I<13C0EA01E0A2EA00C01300A7EA0FE01200B3A21260EA F0C012F1EA6180EA3E000B25839C0D>I<12FC121CAAEB3FC0EB0F00130C13085B5B5B13E0121D EA1E70EA1C781338133C131C7F130F148038FF9FE0131D7F9C16>I<12FC121CB3A9EAFF80091D 7F9C0C>I<39FC7E07E0391C838838391D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F 9124>IIIIIII<1204A4120CA2121C123CEAFFE0EA1C00 A91310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3F014 127F9117>I<38FF07E0383C0380381C0100A2EA0E02A26C5AA3EA0388A213D8EA01D0A2EA00E0 A3134013127F9116>I<39FF3FCFE0393C0F0380381C07011500130B000E1382A21311000713C4 A213203803A0E8A2EBC06800011370A2EB8030000013201B127F911E>I<387F8FF0380F038014 00EA0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA060738040380381E07C0 38FF0FF81512809116>I<38FF07E0383C0380381C0100A2EA0E02A26C5AA3EA0388A213D8EA01 D0A2EA00E0A31340A25BA212F000F1C7FC12F31266123C131A7F9116>IIII E /Fr 43 123 df<1238127C12FE12FF A2127F123B1203A212071206A2120C121C12181270122008117C8610>44 D<1238127C12FEA3127C123807077C8610>46 D<13181378EA01F812FFA21201B3A7387FFFE0A2 13207C9F1C>49 DI<13FE3807FFC0380F07E0381E03F0123FEB81F8A3EA1F0314 F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8EB00FCA2003C13FE127EB4FCA314 FCEA7E01007813F8381E07F0380FFFC03801FE0017207E9F1C>I<14E013011303A21307130F13 1FA21337137713E7EA01C71387EA03071207120E120C12181238127012E0B512FEA2380007E0A7 EBFFFEA217207E9F1C>I<00101320381E01E0381FFFC0148014005B13F8EA1BC00018C7FCA4EA 19FCEA1FFF381E0FC0381807E01303000013F0A214F8A21238127C12FEA200FC13F0A2387007E0 003013C0381C1F80380FFF00EA03F815207D9F1C>II<12601278 387FFFFEA214FC14F8A214F038E0006014C038C00180EB0300A2EA00065B131C131813381378A2 5BA31201A31203A76C5A17227DA11C>I<1470A214F8A3497EA2497EA3EB06FF80010E7FEB0C3F A201187F141F01387FEB300FA201607F140701E07F90B5FCA239018001FCA200038090C7FCA200 06147FA23AFFE00FFFF8A225227EA12A>65 DIII73 D76 D78 D80 D82 D<3801FC043807FF8C381F03FC383C007C007C133C007813 1CA200F8130CA27E1400B4FC13E06CB4FC14C06C13F06C13F86C13FC000313FEEA003FEB03FFEB 007F143FA200C0131FA36C131EA26C133C12FCB413F838C7FFE00080138018227DA11F>I<007F B61280A2397E03F80F00781407007014030060140100E015C0A200C01400A400001500B3A20003 B512F8A222227EA127>I86 D97 DIII<13FE3807FF80380F87C0381E 01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3127CA2127E003E13186C1330380FC07038 03FFC0C6130015167E951A>II<3803FC1E380FFF7F381F0F8F383E07CF383C03C000 7C13E0A5003C13C0EA3E07381F0F80EBFF00EA13FC0030C7FCA21238383FFF806C13F06C13F848 13FCEA380048133E00F0131EA40078133C007C137C383F01F8380FFFE00001130018217E951C> II< 121C123E127FA3123E121CC7FCA7B4FCA2121FB2EAFFE0A20B247EA310>I107 DI<3AFF07F007F090 391FFC1FFC3A1F303E303E01401340496C487EA201001300AE3BFFE0FFE0FFE0A22B167E9530> I<38FF07E0EB1FF8381F307CEB403CEB803EA21300AE39FFE1FFC0A21A167E951F>I<13FE3807 FFC0380F83E0381E00F0003E13F848137CA300FC137EA7007C137CA26C13F8381F01F0380F83E0 3807FFC03800FE0017167E951C>I<38FF0FE0EB3FF8381FF07CEB803E497E1580A2EC0FC0A8EC 1F80A29038803F00EBC03EEBE0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F>I114 DI<487EA41203A21207A212 0F123FB5FCA2EA0F80ABEB8180A5EB8300EA07C3EA03FEEA00F811207F9F16>I<38FF01FEA238 1F003EAF147E14FE380F81BE3907FF3FC0EA01FC1A167E951F>I<3AFFE7FF07F8A23A1F007800 C0D80F80EB0180147CA23A07C07E030014DE01E05B0003EBDF06EBE18FD801F15B01F3138C9038 FB079C000014D8EBFE03017E13F0A2EB7C01013C5BEB380001185B25167F9528>119 D<39FFE07FC0A2390F801C006C6C5A6C6C5AEBF0606C6C5A3800F980137F6DC7FC7F80497E1337 EB63E0EBC1F03801C0F848487E3807007E000E133E39FF80FFE0A21B167F951E>I<387FFFF0A2 387C03E0387007C0EA600F38E01F8000C01300133E137EC65A5B485A00031330EA07E013C0380F 8070121F383F0060003E13E0EA7C03B5FCA214167E9519>122 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300 TeXDict begin %%EndSetup %%Page: 64 1 bop 144 30 a Fe(R)o(o)o(y,)24 b(A.,)e(L.S.)g(Lasdon)h(and)f(J.)f(Lordeman.)38 b Fq(1986.)32 b(Extending)19 b(Planning)f(Languages)h(to)144 80 y(Include)14 b(Optimization)e(Capabilities.)17 b Fl(Managemen)o(t)c (Science)i Fo(32,)h Fq(360{373.)144 155 y Fe(Schra)o(ge,)k(L.)f Fq(1989.)26 b Fl(User's)17 b(Man)o(ual)f(for)g(Linear,)h(In)o(teger)h(and)e (Quadratic)h(Programming)c(with)144 204 y(LINDO,)g Fq(fourth)h(edition.)k (Scien)o(ti\014c)c(Press,)h(Redw)o(o)q(o)q(d)f(Cit)o(y)m(,)e(CA.)144 279 y Fe(Schra)o(ge,)18 b(L.)f(and)h(K.)f(Cunningham.)26 b Fq(1988.)20 b(Demo)14 b(LINGO/PC:)g(Language)g(for)h(INteractiv)o(e)144 329 y(General)f(Optimization,)d(v)o(ersion)j(1.04a.)j(LINDO)d(Systems)f (Inc.,)h(Chicago.)144 404 y Fe(Simons,)19 b(R.V.)g Fq(1987.)j(Mathematical)14 b(Programming)f(Mo)q(deling)i(Using)h(MGG.)e Fl(IMA)i(Journal)g(of)144 454 y(Mathematics)d(in)h(Managemen)o(t)e Fo(1,)k Fq(267{276.)144 528 y Fe(Str)o(oustr)o(up,)f(B.)e Fq(1986.)j Fl(The)c(C++)g(Programming)c (Language.)16 b Fq(Addison-W)m(esley)m(,)11 b(Reading,)f(MA.)948 2768 y(64)p eop %%Page: 63 2 bop 144 30 a Fr(References)144 117 y Fe(Baker,)16 b(T.W.)e(and)h(D.J.)f (Biddle.)20 b Fq(1986.)d(A)12 b(Hierarc)o(hical/Relational)e(Approac)o(h)j (to)f(Mo)q(deling.)144 167 y(Chesap)q(eak)o(e)i(Decision)f(Sciences,)i(Inc.;) e(presen)o(ted)i(at)e(the)h(ORSA/TIMS)f(Join)o(t)g(National)f(Meeting,)144 217 y(Miami)f(Beac)o(h.)144 292 y Fe(Beale,)k(E.M.L.)f Fq(1970.)i(Matrix)10 b(Generators)j(and)e(Output)h(Analyzers.)18 b(In)11 b(H.W.)f(Kuhn)h(\(ed.\),) h Fl(Pro-)144 341 y(ceedings)h(of)e(the)i(Princeton)g(Symp)q(osium)c(on)j (Mathematical)e(Programmi)o(ng,)f Fq(Princeton)k(Univ)o(ersit)o(y)144 391 y(Press,)i(Princeton,)f(NJ,)g(pp.)g(25{36.)144 466 y Fe(Bisschop,)24 b(J.)e(and)h(A.)g(Meera)o(us.)42 b Fq(1982.)35 b(On)21 b(the)g(Dev)o(elopmen) o(t)d(of)i(a)g(General)g(Algebraic)144 516 y(Mo)q(deling)12 b(System)h(in)f(a)h(Strategic)g(Planning)f(En)o(vironmen)o(t.)k Fl(Mathematical)11 b(Programming)f(Study)144 566 y Fo(20,)16 b Fq(1{29.)144 640 y Fe(Br)o(ooke,)i(A.,)e(D.)h(Kendrick)f(and)h(A.)f(Meera)o (us.)23 b Fq(1988.)18 b Fl(GAMS:)13 b(A)i(User's)g(Guide.)j Fq(Scien)o(ti\014c)144 690 y(Press,)d(Redw)o(o)q(o)q(d)f(Cit)o(y)m(,)e(CA.) 144 765 y Fe(Choksi,)i(A.M.,)g(A.)f(Meera)o(us)h(and)f(A.J.)g(Stoutjesdijk.) 19 b Fq(1980.)d Fl(The)c(Planning)e(of)g(In)o(v)o(estmen)o(t)144 815 y(Programs)j(in)g(the)i(F)m(ertilizer)f(Industry)m(.)k Fq(Johns)d(Hopkins)e(Univ)o(ersit)o(y)h(Press,)h(Baltimore.)144 889 y Fe(Creegan,)j(J.B.)f Fq(1985.)k(D)o(A)m(T)m(AF)o(ORM,)13 b(a)i(Mo)q(del)g(Managemen)o(t)f(System.)21 b(Ketron,)16 b(Inc.,)f(Arling-) 144 939 y(ton,)e(V)-5 b(A.)144 1014 y Fe(Dolk,)18 b(D.R.)f Fq(1986.)g(A)d(Generalized)g(Mo)q(del)g(Managemen)o(t)f(System)h(for)f (Mathematical)g(Program-)144 1064 y(ming.)j Fl(A)o(CM)e(T)m(ransactions)g(on) f(Mathematical)f(Soft)o(w)o(are)i Fo(12,)i Fq(92{126.)144 1138 y Fe(F)o(ourer,)e(R.)g Fq(1983.)i(Mo)q(deling)11 b(Languages)g(v)o(ersus)i (Matrix)e(Generators)h(for)f(Linear)h(Programming)o(.)144 1188 y Fl(A)o(CM)i(T)m(ransactions)g(on)f(Mathematical)f(Soft)o(w)o(are)i Fo(9,)i Fq(143{183.)144 1263 y Fe(F)o(ourer,)g(R.,)h(J.B.)f(Ger)m(tler)g(and) h(H.J.)f(Simk)o(o)o(witz.)k Fq(1977.)e(Mo)q(dels)c(of)f(Railroad)g(P)o (assenger-)144 1313 y(Car)g(Requiremen)o(ts)f(in)h(the)g(Northeast)h (Corridor.)j Fl(Annals)c(of)f(Economic)g(and)g(So)q(cial)h(Measuremen)o(t)144 1363 y Fo(6,)j Fq(367{398.)144 1437 y Fe(F)o(ourer,)24 b(R.,)g(J.B.)e(Ger)m (tler)h(and)g(H.J.)e(Simk)o(o)o(witz.)39 b Fq(1978.)c(Optimal)18 b(Fleet)i(Sizing)f(and)144 1487 y(Allo)q(cation)c(for)g(Impro)o(v)o(ed)g (Rail)g(Service)i(in)e(the)i(Northeast)g(Corridor.)24 b Fl(T)m(ransp)q (ortation)16 b(Researc)o(h)144 1537 y(Record)e Fo(656,)i Fq(40{45.)144 1612 y Fe(General)i(Optimiza)m(tion,)d(Inc.)20 b Fq(1986.)d Fl(What's)d(Best!)19 b Fq(Holden-Da)o(y)m(,)12 b(Oakland,)h(CA.)144 1686 y Fe(Geoffrion,)24 b(A.M.)c Fq(1988.)31 b(SML:)18 b(A)h(Mo)q(del)f (De\014nition)g(Language)g(for)g(Structured)i(Mo)q(deling.)144 1736 y(W)m(orking)14 b(P)o(ap)q(er)i(No.)23 b(360,)14 b(W)m(estern)j (Managemen)o(t)d(Science)j(Institute,)f(Univ)o(ersit)o(y)g(of)f(California,) 144 1786 y(Los)f(Angeles.)144 1861 y Fe(Ha)l(verl)m(y)k(Systems,)e(Inc.)21 b Fq(1977.)c(MaGen.)h(Den)o(ville,)12 b(NJ.)144 1935 y Fe(Kendrick,)i(D.,)h (A.)e(Meera)o(us)h(and)g(J.S.)g(Suh.)21 b Fq(1981.)16 b(Oil)11 b(Re\014nery)h(Mo)q(deling)f(with)g(the)h(GAMS)144 1985 y(Language.)17 b(Researc)o(h)12 b(Rep)q(ort)g(No.)17 b(14,)11 b(Cen)o(ter)h(for)g(Energy)g (Studies,)g(Univ)o(ersit)o(y)f(of)g(T)m(exas,)g(Austin.)144 2060 y Fe(Kernighan,)16 b(B.W.)e(and)g(R.)h(Pike.)20 b Fq(1984.)c Fl(The)d(UNIX)f(Programming)d(En)o(vironmen)o(t.)16 b Fq(Pren)o(tice-)144 2110 y(Hall,)c(Englew)o(o)q(o)q(d)i(Cli\013s,)f(NJ.)144 2185 y Fe(Ketr)o(on,)k(Inc.)j Fq(1986.)d(P)m(AM:)d(a)f(Practitioner's)h(Approac)o (h)h(to)e(Mo)q(deling.)18 b(Arlington,)12 b(V)-5 b(A.)144 2259 y Fe(Mana)o(gement)17 b(Science)f(Systems.)23 b Fq(1970.)18 b(D)o(A)m(T)m(AF)o(ORM)13 b(Mathematical)f(Programming)f(Data)144 2309 y(Managemen)o(t)i(System:)k(User)e(Man)o(ual.)i(Ketron,)e(Inc.,)e (Arlington,)g(V)-5 b(A.)144 2384 y Fe(Mur)m(t)m(a)o(gh,)31 b(B.A.)c Fq(1981.)49 b Fl(Adv)n(anced)25 b(Linear)f(Programming:)36 b(Computation)22 b(and)i(Practice.)144 2434 y Fq(McGra)o(w-Hill,)12 b(New)i(Y)m(ork.)144 2508 y Fe(Mur)m(t)m(a)o(gh,)20 b(B.A.)f(and)g(M.A.)g(Sa) o(unders.)31 b Fq(1987.)25 b(MINOS)17 b(5.1)e(User's)j(Guide.)25 b(T)m(ec)o(hnical)16 b(Re-)144 2558 y(p)q(ort)e(SOL)g(83{20R,)e(Systems)h (Optimization)f(Lab)q(oratory)m(,)g(Departmen)o(t)i(of)f(Op)q(erations)h (Researc)o(h,)144 2608 y(Stanford)g(Univ)o(ersit)o(y)m(.)948 2768 y(63)p eop %%Page: 62 3 bop 419 30 a Fg(30)18 b(32)59 b(5.40)96 b(31)19 b(33)58 b(8.24)96 b(32)19 b(34)58 b(4.84)419 72 y(33)18 b(35)59 b(7.44)96 b(34)19 b(36)58 b(4.44)96 b(35)19 b(37)58 b(6.80)419 113 y(36)18 b(38)59 b(4.11)96 b(37)19 b(39)58 b(6.25)96 b(38)19 b(40)58 b(3.69)419 155 y(39)18 b(41)59 b(5.55)96 b(40)19 b(42)58 b(3.29)96 b(41)19 b(43)58 b(4.77)419 196 y(42)18 b(44)59 b(2.91)96 b(43)19 b(45)58 b(4.19)96 b(44)19 b(46)58 b(2.53)419 238 y(45)18 b(47)59 b(4.00)96 b(47)19 b(1)78 b(1.65)164 293 y([NY,*,BO,)o(*])36 b(10)18 b(16)59 b(1.23)96 b(12)19 b(18)58 b(3.84)96 b(14)19 b(20)58 b(4.08)419 334 y(15)18 b(21)59 b(1.47)96 b(16)19 b(22)58 b(2.96)96 b(17)19 b(23)58 b(1.60)419 376 y(18)18 b(24)59 b(2.95)96 b(19)19 b(25)58 b(1.71)96 b(20)19 b(26)58 b(2.81)419 417 y(21)18 b(27)59 b(1.77)96 b(22)19 b(28)58 b(2.87)96 b(23)19 b(29)58 b(1.84)419 459 y(24)18 b(30)59 b(2.95)96 b(25)19 b(31)58 b(1.91)96 b(26)19 b(32)58 b(3.12)419 500 y(27)18 b(33)59 b(1.93)96 b(28)19 b(34)58 b(3.31)96 b(29)19 b(35)58 b(2.00)419 542 y(30)18 b(36)59 b(3.40)96 b(31)19 b(37)58 b(2.08)96 b(32)19 b(38)58 b(3.41)419 583 y(33)18 b(39)59 b(2.69)96 b(34)19 b(40)58 b(4.45)96 b(35)19 b(41)58 b(2.32)419 625 y(36)18 b(42)59 b(3.40)96 b(37)19 b(43)58 b(1.80)96 b(38)19 b(44)58 b(2.63)419 666 y(39)18 b(45)59 b(1.52)96 b(40)19 b(46)58 b(2.23)96 b(41)19 b(47)58 b(1.25)419 708 y(42)18 b(48)59 b(1.79)96 b(43)38 b(1)79 b(.97)96 b(44)39 b(2)58 b(1.28)419 749 y(45)38 b(3)78 b(.48)97 b(46)38 b(4)79 b(.68)96 b(48)39 b(6)78 b(.08)164 805 y([BO,*,NY,)o(*])55 b(7)19 b(13)78 b(.03)117 b(9)19 b(15)58 b(1.29)96 b(11)19 b(17)58 b(4.59)419 846 y(12)18 b(18)59 b(2.56)96 b(13)19 b(19)58 b(3.92)96 b(14)19 b(20)58 b(2.37)419 888 y(15)18 b(21)59 b(3.81)96 b(16)19 b(22)58 b(2.24)96 b(17)19 b(23)58 b(3.51)419 929 y(18)18 b(24)59 b(2.13)96 b(19)19 b(25)58 b(3.28)96 b(20)19 b(26)58 b(2.05)419 971 y(21)18 b(27)59 b(3.15)96 b(22)19 b(28)58 b(1.99)96 b(23)19 b(29)58 b(3.09)419 1012 y(24)18 b(30)59 b(1.93)96 b(25)19 b(31)58 b(3.19)96 b(26)19 b(32)58 b(1.91)419 1054 y(27)18 b(33)59 b(3.21)96 b(28)19 b(34)58 b(1.85)96 b(29)19 b(35)58 b(3.21)419 1095 y(30)18 b(36)59 b(1.71)96 b(31)19 b(37)58 b(3.04)96 b(32)19 b(38)58 b(2.08)419 1137 y(33)18 b(39)59 b(3.13)96 b(34)19 b(40)58 b(1.96)96 b(35)19 b(41)58 b(2.53)419 1178 y(36)18 b(42)59 b(1.43)96 b(37)19 b(43)58 b(2.04)96 b(38)19 b(44)58 b(1.12)419 1220 y(39)18 b(45)59 b(1.71)96 b(40)19 b(46)78 b(.91)96 b(41)19 b(47)58 b(1.32)419 1261 y(43)38 b(1)59 b(1.80)96 b(45)38 b(3)59 b(1.13)96 b(47)39 b(5)78 b(.23)164 1317 y([NY,*,PH,)o(*])55 b(1)39 b(3)78 b(.04)97 b(12)19 b(14)58 b(4.68)96 b(13)19 b(15)58 b(5.61)419 1358 y(14)18 b(16)59 b(3.56)96 b(15)19 b(17)58 b(5.81)96 b(16)19 b(18)58 b(3.81)419 1400 y(17)18 b(19)59 b(6.31)96 b(18)19 b(20)58 b(4.07)96 b(19)19 b(21)58 b(7.33)419 1441 y(20)18 b(22)59 b(4.55)96 b(21)19 b(23)58 b(7.37)96 b(22)19 b(24)58 b(4.73)419 1483 y(23)18 b(25)59 b(7.61)96 b(24)19 b(26)58 b(4.92)96 b(25)19 b(27)58 b(7.91)419 1524 y(26)18 b(28)59 b(5.19)96 b(27)19 b(29)58 b(8.40)96 b(28)19 b(30)58 b(5.53)419 1566 y(29)18 b(31)59 b(9.32)96 b(30)19 b(32)58 b(5.51)96 b(31)19 b(33)39 b(10.33)419 1607 y(32)18 b(34)59 b(9.21)96 b(33)19 b(35)38 b(18.95)96 b(34)19 b(36)39 b(11.23)419 1649 y(35)18 b(37)39 b(16.85)96 b(36)19 b(38)58 b(7.29)96 b(37)19 b(39)39 b(10.89)419 1690 y(38)18 b(40)59 b(5.41)96 b(39)19 b(41)58 b(8.21)96 b(40)19 b(42)58 b(4.52)419 1732 y(41)18 b(43)59 b(6.99)96 b(42)19 b(44)58 b(3.92)96 b(43)19 b(45)58 b(6.21)419 1773 y(44)18 b(46)59 b(3.44)96 b(45)19 b(47)58 b(5.17)96 b(46)19 b(48)58 b(2.55)419 1815 y(47)38 b(1)59 b(1.24)164 1870 y([PH,*,WA,)o(*])c(1)39 b(4)78 b(.20)97 b(14)19 b(17)58 b(4.49)96 b(15)19 b(18)58 b(3.53)419 1911 y(16)18 b(19)59 b(2.67)96 b(17)19 b(20)58 b(3.83)96 b(18)19 b(21)58 b(3.01)419 1953 y(19)18 b(22)59 b(4.12)96 b(20)19 b(23)58 b(3.15)96 b(21)19 b(24)58 b(4.67)419 1994 y(22)18 b(25)59 b(3.20)96 b(23)19 b(26)58 b(4.23)96 b(24)19 b(27)58 b(2.87)419 2036 y(25)18 b(28)59 b(3.84)96 b(26)19 b(29)58 b(2.60)96 b(27)19 b(30)58 b(3.80)419 2077 y(28)18 b(31)59 b(2.77)96 b(29)19 b(32)58 b(4.31)96 b(30)19 b(33)58 b(3.16)419 2119 y(31)18 b(34)59 b(4.88)96 b(32)19 b(35)58 b(3.45)96 b(33)19 b(36)58 b(5.55)419 2160 y(34)18 b(37)59 b(3.52)96 b(35)19 b(38)58 b(6.11)96 b(36)19 b(39)58 b(3.32)419 2202 y(37)18 b(40)59 b(5.53)96 b(38)19 b(41)58 b(3.03)96 b(39)19 b(42)58 b(4.51)419 2243 y(40)18 b(43)59 b(2.53)96 b(41)19 b(44)58 b(3.39)96 b(42)19 b(45)58 b(1.93)419 2285 y(43)18 b(46)59 b(2.52)96 b(44)19 b(47)58 b(1.20)96 b(45)19 b(48)58 b(1.75)419 2326 y(46)38 b(1)78 b(.88)97 b(47)38 b(2)79 b(.87)96 b(;)144 2382 y(end;)948 2768 y Fq(62)p eop %%Page: 61 4 bop 458 30 a Fg(37)19 b(39)77 b(38)19 b(40)78 b(39)19 b(41)77 b(40)19 b(42)458 72 y(41)g(43)77 b(42)19 b(44)78 b(43)19 b(45)77 b(44)19 b(46)458 113 y(45)g(47)77 b(47)39 b(1)203 168 y(\(NY,*,BO,)o(*\))d (10)19 b(16)77 b(12)19 b(18)78 b(14)19 b(20)77 b(15)19 b(21)458 210 y(16)g(22)77 b(17)19 b(23)78 b(18)19 b(24)77 b(19)19 b(25)458 251 y(20)g(26)77 b(21)19 b(27)78 b(22)19 b(28)77 b(23)19 b(29)458 293 y(24)g(30)77 b(25)19 b(31)78 b(26)19 b(32)77 b(27)19 b(33)458 334 y(28)g(34)77 b(29)19 b(35)78 b(30)19 b(36)77 b(31)19 b(37)458 376 y(32)g(38)77 b(33)19 b(39)78 b(34)19 b(40)77 b(35)19 b(41)458 417 y(36)g(42)77 b(37)19 b(43)78 b(38)19 b(44)77 b(39)19 b(45)458 459 y(40)g(46)77 b(41)19 b(47)78 b(42)19 b(48)77 b(43)39 b(1)458 500 y(44)f(2)78 b(45)39 b(3)78 b(46)38 b(4)78 b(48)39 b(6)203 556 y(\(BO,*,NY,)o(*\))55 b(7)20 b(13)97 b(9)19 b(15)78 b(11)19 b(17)77 b(12)19 b(18)458 597 y(13)g(19)77 b(14)19 b(20)78 b(15)19 b(21)77 b(16)19 b(22)458 639 y(17)g(23)77 b(18)19 b(24)78 b(19)19 b(25)77 b(20)19 b(26)458 680 y(21)g(27)77 b(22)19 b(28)78 b(23)19 b(29)77 b(24)19 b(30)458 722 y(25)g(31)77 b(26)19 b(32)78 b(27)19 b(33)77 b(28)19 b(34)458 763 y(29)g(35)77 b(30)19 b(36)78 b(31)19 b(37)77 b(32)19 b(38)458 805 y(33)g(39)77 b(34)19 b(40)78 b(35)19 b(41)77 b(36)19 b(42)458 846 y(37)g(43)77 b(38)19 b(44)78 b(39)19 b(45)77 b(40)19 b(46)458 888 y(41)g(47)77 b(43)39 b(1)78 b(45)38 b(3)78 b(47)39 b(5)203 943 y(\(NY,*,PH,)o(*\))55 b(1)39 b(3)78 b(12)19 b(14)78 b(13)19 b(15)77 b(14)19 b(16)458 984 y(15)g(17)77 b(16)19 b(18)78 b(17)19 b(19)77 b(18)19 b(20)458 1026 y(19)g(21)77 b(20)19 b(22)78 b(21)19 b(23)77 b(22)19 b(24)458 1067 y(23)g(25)77 b(24)19 b(26)78 b(25)19 b(27)77 b(26)19 b(28)458 1109 y(27)g(29)77 b(28)19 b(30)78 b(29)19 b(31)77 b(30)19 b(32)458 1150 y(31)g(33)77 b(32)19 b(34)78 b(33)19 b(35)77 b(34)19 b(36)458 1192 y(35)g(37)77 b(36)19 b(38)78 b(37)19 b(39)77 b(38)19 b(40)458 1234 y(39)g(41)77 b(40)19 b(42)78 b(41)19 b(43)77 b(42)19 b(44)458 1275 y(43)g(45)77 b(44)19 b(46)78 b(45)19 b(47)77 b(46)19 b(48)458 1317 y(47)38 b(1)203 1372 y(\(PH,*,WA,)o(*\))55 b(1)39 b(4)78 b(14)19 b(17)78 b(15)19 b(18)77 b(16)19 b(19)458 1413 y(17)g(20)77 b(18)19 b(21)78 b(19)19 b(22)77 b(20)19 b(23)458 1455 y(21)g(24)77 b(22)19 b(25)78 b(23)19 b(26)77 b(24)19 b(27)458 1496 y(25)g(28)77 b(26)19 b(29)78 b(27)19 b(30)77 b(28)19 b(31)458 1538 y(29)g(32)77 b(30)19 b(33)78 b(31)19 b(34)77 b(32)19 b(35)458 1579 y(33)g(36)77 b(34)19 b(37)78 b(35)19 b(38)77 b(36)19 b(39)458 1621 y(37)g(40)77 b(38)19 b(41)78 b(39)19 b(42)77 b(40)19 b(43)458 1662 y(41)g(44)77 b(42)19 b(45)78 b(43)19 b(46)77 b(44)19 b(47)458 1704 y(45)g(48)77 b(46)39 b(1)78 b(47)38 b(2)78 b(;)144 1771 y(param)18 b(demand)f(:=)164 1827 y([WA,*,PH,)o(*])55 b(2)39 b(5)78 b(.55)117 b(6)38 b(9)79 b(.01)116 b(8)19 b(11)78 b(.01)419 1868 y(10)18 b(13)78 b(.13)97 b(12)19 b(15)58 b(1.59)96 b(13)19 b(16)58 b(1.69)419 1910 y(14)18 b(17)59 b(5.19)96 b(15)19 b(18)58 b(3.55)96 b(16)19 b(19)58 b(6.29)419 1951 y(17)18 b(20)59 b(4.00)96 b(18)19 b(21)58 b(5.80)96 b(19)19 b(22)58 b(3.40)419 1993 y(20)18 b(23)59 b(4.88)96 b(21)19 b(24)58 b(2.92)96 b(22)19 b(25)58 b(4.37)419 2034 y(23)18 b(26)59 b(2.80)96 b(24)19 b(27)58 b(4.23)96 b(25)19 b(28)58 b(2.88)419 2076 y(26)18 b(29)59 b(4.33)96 b(27)19 b(30)58 b(3.11)96 b(28)19 b(31)58 b(4.64)419 2117 y(29)18 b(32)59 b(3.44)96 b(30)19 b(33)58 b(4.95)96 b(31)19 b(34)58 b(3.73)419 2159 y(32)18 b(35)59 b(5.27)96 b(33)19 b(36)58 b(3.77)96 b(34)19 b(37)58 b(4.80)419 2200 y(35)18 b(38)59 b(3.31)96 b(36)19 b(39)58 b(3.89)96 b(37)19 b(40)58 b(2.65)419 2242 y(38)18 b(41)59 b(3.01)96 b(39)19 b(42)58 b(2.04)96 b(40)19 b(43)58 b(2.31)419 2283 y(41)18 b(44)59 b(1.52)96 b(42)19 b(45)58 b(1.75)96 b(44)19 b(47)58 b(1.88)419 2325 y(46)38 b(1)59 b(1.05)164 2380 y([PH,*,NY,)o(*])c(1)39 b(3)59 b(1.05)116 b(5)38 b(7)79 b(.43)116 b(9)19 b(11)78 b(.20)419 2422 y(11)18 b(13)78 b(.21)97 b(13)19 b(15)78 b(.40)96 b(14)19 b(16)58 b(6.49)419 2463 y(15)18 b(17)39 b(16.40)96 b(16)19 b(18)58 b(9.48)96 b(17)19 b(19)39 b(17.15)419 2505 y(18)18 b(20)59 b(9.31)96 b(19)19 b(21)38 b(15.20)96 b(20)19 b(22)58 b(8.21)419 2546 y(21)18 b(23)39 b(13.32)96 b(22)19 b(24)58 b(7.35)96 b(23)19 b(25)39 b(11.83)419 2588 y(24)18 b(26)59 b(6.61)96 b(25)19 b(27)38 b(10.61)96 b(26)19 b(28)58 b(6.05)419 2629 y(27)18 b(29)59 b(9.65)96 b(28)19 b(30)58 b(5.61)96 b(29)19 b(31)58 b(9.25)948 2768 y Fq(61)p eop %%Page: 60 5 bop 144 30 a Fg(###)38 b(OBJECTIVES)d(###)144 98 y(minimize)17 b(cars:)281 139 y(sum)i({c)g(in)f(cities})f(U[c,last])f(+)281 181 y(sum)j({\(c1,t1,c)o(2,t)o(2\))d(in)j(schedule:)d(t2)j(<)g(t1})f (X[c1,t1,c2,)o(t2)o(];)615 236 y(#)h(Number)e(of)i(cars)f(in)h(the)f(system:) 615 278 y(#)h(sum)f(of)h(unused)f(cars)g(and)g(cars)g(in)h(trains)e(during) 615 319 y(#)i(the)f(last)g(time)h(interval)d(of)j(the)f(day)144 374 y(minimize)f(miles:)281 416 y(sum)i({\(c1,t1,c)o(2,t)o(2\))d(in)j (schedule})d(distance[)o(c1,)o(c2])g(*)j(X[c1,t1,c2)o(,t)o(2];)615 471 y(#)g(Total)f(car-miles)e(run)i(by)h(all)g(schedule)o(d)e(trains)g(in)i (a)g(day)144 549 y(###)38 b(CONSTRAINT)o(S)e(###)144 616 y(account)17 b({c)i(in)g(cities,)e(t)i(in)g(times}:)183 671 y(U[c,t])f(=)h(U[c,)f(if)h(t)g (>)g(1)g(then)f(t-1)h(else)f(last])g(+)262 727 y(sum)g({\(c1,t1,c,)o(t\))e (in)j(schedule})d(X[c1,t1,c,)o(t])g(-)262 768 y(sum)i({\(c,t,c2,t)o(2\))e(in) j(schedule})d(X[c,t,c2,t)o(2])o(;)615 823 y(#)j(For)f(every)g(city)g(and)h (time:)615 865 y(#)g(unused)e(cars)h(in)h(the)g(present)e(interval)f(must)i (equal)615 906 y(#)h(unused)e(cars)h(in)h(the)g(previous)d(interval,)615 948 y(#)j(plus)f(cars)g(just)g(arriving)f(in)i(trains,)615 989 y(#)g(minus)f(cars)g(just)g(leaving)f(in)i(trains)144 1057 y(satisfy)e({\(c1,t1,c)o(2,t)o(2\))f(in)j(schedule})o(:)281 1112 y(low[c1,t1,)o(c2,)o(t2])d(<=)j(X[c1,t1,)o(c2,)o(t2])d(<=)j(high[c1,t)o (1,)o(c2,)o(t2)o(];)615 1168 y(#)g(For)f(each)g(scheduled)f(train:)615 1209 y(#)i(number)e(of)i(cars)f(must)g(meet)g(demand,)615 1251 y(#)h(but)f(must)g(not)h(be)g(so)g(great)e(that)h(unnecessary)615 1292 y(#)h(sections)d(are)j(run)144 1370 y(###)38 b(DATA)g(###)144 1437 y(data;)144 1493 y(set)18 b(cities)g(:=)h(BO)f(NY)h(PH)g(WA)g(;)144 1548 y(set)f(links)g(:=)h(\(BO,NY\))e(\(NY,PH\))g(\(PH,WA\))399 1589 y(\(NY,BO\))g(\(PH,NY\))g(\(WA,PH\))g(;)144 1644 y(param)h(dist_tabl)o (e)e(:=)j([*,*])38 b(BO)18 b(NY)39 b(232)674 1686 y(NY)18 b(PH)58 b(90)674 1727 y(PH)18 b(WA)39 b(135)18 b(;)144 1783 y(param)g(last)g(:=)h(48) f(;)144 1838 y(param)g(section)f(:=)h(14)h(;)144 1906 y(set)f(schedule)f(:=) 203 1961 y(\(WA,*,PH,)o(*\))55 b(2)39 b(5)98 b(6)39 b(9)97 b(8)20 b(11)77 b(10)19 b(13)458 2002 y(12)g(15)77 b(13)19 b(16)78 b(14)19 b(17)77 b(15)19 b(18)458 2044 y(16)g(19)77 b(17)19 b(20)78 b(18)19 b(21)77 b(19)19 b(22)458 2085 y(20)g(23)77 b(21)19 b(24)78 b(22)19 b(25)77 b(23)19 b(26)458 2127 y(24)g(27)77 b(25)19 b(28)78 b(26)19 b(29)77 b(27)19 b(30)458 2168 y(28)g(31)77 b(29)19 b(32)78 b(30)19 b(33)77 b(31)19 b(34)458 2210 y(32)g(35)77 b(33)19 b(36)78 b(34)19 b(37)77 b(35)19 b(38)458 2251 y(36)g(39)77 b(37)19 b(40)78 b(38)19 b(41)77 b(39)19 b(42)458 2293 y(40)g(43)77 b(41)19 b(44)78 b(42)19 b(45)77 b(44)19 b(47)458 2334 y(46)38 b(1)203 2390 y(\(PH,*,NY,)o(*\))55 b(1)39 b(3)98 b(5)39 b(7)97 b(9)20 b(11)77 b(11)19 b(13)458 2431 y(13)g(15)77 b(14)19 b(16)78 b(15)19 b(17)77 b(16)19 b(18)458 2473 y(17)g(19)77 b(18)19 b(20)78 b(19)19 b(21)77 b(20)19 b(22)458 2514 y(21)g(23)77 b(22)19 b(24)78 b(23)19 b(25)77 b(24)19 b(26)458 2556 y(25)g(27)77 b(26)19 b(28)78 b(27)19 b(29)77 b(28)19 b(30)458 2597 y(29)g(31)77 b(30)19 b(32)78 b(31)19 b(33)77 b(32)19 b(34)458 2639 y(33)g(35)77 b(34)19 b(36)78 b(35)19 b(37)77 b(36)19 b(38)948 2768 y Fq(60)p eop %%Page: 59 6 bop 144 30 a Fr(App)r(endix)18 b(D.)41 b Fa(TRAIN)p Fr(,)18 b(a)h(mo)r(del)d(of)j(railroad)f(passenger)h(car)f(allo)r(cation)206 109 y Fq(Giv)o(en)d(a)g(da)o(y's)f(sc)o(hedule,)i(this)g(mo)q(del)d(allo)q (cates)i(passenger)i(cars)f(to)f(trains)g(so)g(as)g(to)g(minimi)o(ze)144 159 y(either)20 b(the)f(n)o(um)o(b)q(er)f(of)h(cars)g(required)h(or)f(the)g (n)o(um)o(b)q(er)f(of)h(car-miles)e(run)i(\(F)m(ourer,)i(Gertler)e(and)144 209 y(Simk)o(o)o(witz)9 b(1977,)i(1978\).)17 b(The)12 b(data)f(represen)o(t)j (a)e(h)o(yp)q(othetical)f(sc)o(hedule)i(and)f(demands)f(for)h(service)144 258 y(b)q(et)o(w)o(een)j(W)m(ashington,)d(Philadelphia,)g(New)j(Y)m(ork)e (and)h(Boston.)144 358 y Fg(###)38 b(SCHEDULE)17 b(SETS)h(AND)g(PARAMETERS)35 b(###)144 425 y(set)18 b(cities;)144 480 y(set)g(links)g(within)f({c1)i(in)g (cities,)e(c2)h(in)h(cities:)e(c1)i(<>)g(c2};)615 536 y(#)g(Set)f(of)h (cities,)e(and)i(set)f(of)h(intercity)d(links)144 591 y(param)i(last)g(>)h(0) g(integer;)e(#)i(Number)e(of)i(time)f(intervals)e(in)j(a)g(day)144 646 y(set)f(times)g(:=)h(1..last;)56 b(#)19 b(Set)f(of)h(time)f(intervals)e (in)j(a)h(day)144 701 y(set)e(schedule)f(within)262 743 y({c1)h(in)h(cities,) e(t1)i(in)g(times,)281 784 y(c2)g(in)g(cities,)e(t2)i(in)g(times:)e (\(c1,c2\))g(in)i(links};)615 840 y(#)g(Member)e(\(c1,t1,c2,)o(t2\))f(of)j (this)f(set)g(represents)615 881 y(#)h(a)g(train)f(that)g(leaves)f(city)h(c1) h(at)g(time)f(t1)615 923 y(#)h(and)f(arrives)f(in)i(city)f(c2)h(at)g(time)f (t2)144 1000 y(###)38 b(DEMAND)17 b(PARAMETERS)36 b(###)144 1068 y(param)18 b(section)f(>)i(0)g(integer;)615 1123 y(#)g(Maximum)e(number) g(of)i(cars)f(in)h(one)f(section)f(of)i(a)g(train)144 1191 y(param)f(demand)f({schedule})f(>)j(0;)615 1246 y(#)g(For)f(each)g(scheduled) f(train:)615 1287 y(#)i(the)f(smallest)f(number)g(of)i(cars)f(that)615 1329 y(#)h(can)f(meet)g(demand)g(for)g(the)h(train)144 1397 y(param)f(low)g({\(c1,t1,c2)o(,t2)o(\))e(in)j(schedule})d(:=)j(ceil\(deman)o (d[c)o(1,)o(t1,)o(c2)o(,t2)o(]\);)615 1452 y(#)g(Minimum)e(number)g(of)i (cars)f(needed)f(to)i(meet)f(demand)144 1519 y(param)g(high)g({\(c1,t1,c)o (2,t)o(2\))e(in)j(schedule})203 1575 y(:=)g(max)f(\(2,)h(min)f(\(ceil\(2*de)o (ma)o(nd[)o(c1)o(,t1)o(,c2)o(,t)o(2]\))o(,)517 1616 y(section*c)o(ei)o(l\(d)o (em)o(and)o([c1)o(,t)o(1,c)o(2,)o(t2])o(/se)o(ct)o(ion)o(\))e(\)\);)615 1671 y(#)j(Maximum)e(number)g(of)i(cars)f(allowed)f(on)i(a)g(train:)615 1713 y(#)g(2)g(if)g(demand)e(is)i(for)g(less)f(than)g(one)g(car;)615 1754 y(#)h(otherwise)o(,)e(lesser)g(of)615 1796 y(#)i(number)e(of)i(cars)f (needed)f(to)i(hold)f(twice)g(the)h(demand,)d(and)615 1837 y(#)j(number)e(of)i(cars)f(in)h(minimum)e(number)g(of)i(sections)e(needed)144 1915 y(###)38 b(DISTANCE)17 b(PARAMETER)o(S)36 b(###)144 1983 y(param)18 b(dist_tabl)o(e)e({links})h(>=)i(0)g(default)e(0.0;)144 2038 y(param)h(distance)e({\(c1,c2\))h(in)i(links})e(>)i(0)203 2079 y(:=)g(if)g(dist_tab)o(le[)o(c1,)o(c2)o(])e(>)i(0)g(then)f(dist_table)o ([c)o(1,c)o(2])e(else)i(dist_table)o([c2)o(,c)o(1];)615 2135 y(#)h(Inter-cit)o(y)e(distances)o(:)f(distance[c1)o(,c)o(2])g(is)j(miles)615 2176 y(#)g(between)e(city)h(c1)h(and)f(city)g(c2)144 2254 y(###)38 b(VARIABLES)e(###)144 2321 y(var)18 b(U)i(\015cars)d(stored\015)g({cities,ti) o(mes)o(})f(>=)j(0;)615 2377 y(#)g(u[c,t])e(is)i(the)g(number)e(of)i(unused)e (cars)h(stored)615 2418 y(#)h(at)g(city)f(c)h(in)g(the)f(interval)f (beginning)f(at)j(time)f(t)144 2486 y(var)g(X)i(\015cars)d(in)i(train\015)f ({schedul)o(e})e(>=)j(0;)615 2541 y(#)g(x[c1,t1,c)o(2,t)o(2])d(is)j(the)f (number)g(of)h(cars)f(assigned)e(to)615 2583 y(#)j(the)f(scheduled)f(train)g (that)h(leaves)g(c1)g(at)h(t1)g(and)615 2624 y(#)g(arrives)e(in)i(c2)g(at)f (t2)948 2768 y Fq(59)p eop %%Page: 58 7 bop 144 30 a Fg(param)18 b(pro)g(\(tr\))g(:)340 84 y(18REG)96 b(24REG)g(24PRO)57 b(:=)183 139 y(1)216 b(0)176 b(1)g(0)183 180 y(2)216 b(0)176 b(0)g(0)183 222 y(3)216 b(0)176 b(0)g(0)183 263 y(4)216 b(1)176 b(0)g(0)183 305 y(5)216 b(0)176 b(0)g(0)183 346 y(6)216 b(0)176 b(0)g(0)183 388 y(7)216 b(0)176 b(1)g(0)183 429 y(8)216 b(0)176 b(0)g(0)183 471 y(9)216 b(0)176 b(0)g(0)164 512 y(10)215 b(1)176 b(0)g(1)164 554 y(11)215 b(0)176 b(0)g(0)164 595 y(12)215 b(0)176 b(0)g(0)164 637 y(13)215 b(0)176 b(1)g(0)164 679 y(14)215 b(0)176 b(1)g(0)58 b(;)144 746 y(end;)948 2768 y Fq(58)p eop %%Page: 57 8 bop 144 30 a Fg(ilim1)18 b(\015new-inve)o(nt)o(ory)e(limits\015)h({p)i(in)f (prd,)h(t)g(in)g(time}:)222 84 y(Inv[p,t,1])d(<=)j(Rprd[p,t])d(+)j (Oprd[p,t];)615 139 y(#)g(New)f(inventory)f(cannot)g(exceed)615 180 y(#)i(productio)o(n)e(in)i(the)f(most)g(recent)f(period)144 248 y(ilim)h(\015inventory)e(limits\015)h({p)i(in)f(prd,)g(t)i(in)f(first+1.) o(.la)o(st,)d(a)j(in)g(2..life}:)222 302 y(Inv[p,t,a])d(<=)j(Inv[p,t-1,)o(a-) o(1];)615 357 y(#)g(Inventory)d(left)i(from)g(period)g(\(t+1\)-p)615 398 y(#)h(can)f(only)g(decrease)f(as)i(time)f(goes)g(on)144 476 y(###)38 b(DATA)g(###)144 544 y(data;)144 598 y(set)18 b(prd)h(:=)g(18REG)e(24REG)h(24PRO)g(;)144 652 y(param)g(first)f(:=)39 b(1)19 b(;)144 694 y(param)f(last)37 b(:=)19 b(13)g(;)144 735 y(param)f(life)37 b(:=)i(2)19 b(;)144 790 y(param)f(cs)h(:=)f(18)h(;)144 831 y(param)f(sl)h(:=)38 b(8)19 b(;)144 873 y(param)f(iw)h(:=)38 b(8)19 b(;)144 927 y(param)f(rtr)g(:=)h(16.00)f(;)144 969 y(param)g(otr)g(:=) h(43.85)f(;)144 1010 y(param)g(rir)g(:=)39 b(0.75)18 b(;)144 1052 y(param)g(pir)g(:=)39 b(0.80)18 b(;)144 1119 y(param)g(:)176 b(pt)136 b(pc)156 b(cri)137 b(crs)116 b(iinv)57 b(:=)183 1174 y(18REG)116 b(1.194)96 b(2304.)g(0.015)g(1.100)116 b(82.0)183 1215 y(24REG)g(1.509)96 b(2920.)g(0.015)g(1.100)h(792.2)183 1257 y(24PRO)116 b(1.509)96 b(2910.)g(0.015)g(1.100)136 b(0.0)57 b(;)144 1324 y(param)18 b(:)97 b(dpp)156 b(ol)117 b(cmin)f(cmax)156 b(hc)g(lc)58 b(:=)183 1379 y(1)157 b(19.5)116 b(96.0)136 b(0.0)g(8.0)116 b(7500)g(7500)183 1420 y(2)157 b(19.0)116 b(96.0)136 b(0.0)g(8.0)116 b(7500)g(7500)183 1462 y(3)157 b(20.0)116 b(96.0)136 b(0.0)g(8.0)116 b(7500)g(7500)183 1503 y(4)157 b(19.0)116 b(96.0)136 b(0.0)g(8.0)116 b(7500)g(7500)183 1545 y(5)157 b(19.5)116 b(96.0)136 b(0.0)g(8.0)97 b(15000)f(15000)183 1586 y(6)157 b(19.0)116 b(96.0)136 b(0.0)g(8.0)97 b(15000)f(15000)183 1628 y(7)157 b(19.0)116 b(96.0)136 b(0.0)g(8.0)97 b(15000)f(15000)183 1669 y(8)157 b(20.0)116 b(96.0)136 b(0.0)g(8.0)97 b(15000)f(15000)183 1711 y(9)157 b(19.0)116 b(96.0)136 b(0.0)g(8.0)97 b(15000)f(15000)164 1752 y(10)156 b(20.0)116 b(96.0)136 b(0.0)g(8.0)97 b(15000)f(15000)164 1794 y(11)156 b(20.0)116 b(96.0)136 b(0.0)g(8.0)116 b(7500)g(7500)164 1835 y(12)156 b(18.0)116 b(96.0)136 b(0.0)g(8.0)116 b(7500)g(7500)164 1877 y(13)156 b(18.0)116 b(96.0)136 b(0.0)g(8.0)116 b(7500)g(7500)58 b(;)144 1945 y(param)18 b(dem)g(\(tr\))g(:)340 1999 y(18REG)96 b(24REG)g(24PRO)57 b(:=)183 2053 y(1)157 b(63.8)77 b(1212.0)135 b(0.0)183 2095 y(2)157 b(76.0)96 b(306.2)136 b(0.0)183 2136 y(3)157 b(88.4)96 b(319.0)136 b(0.0)183 2178 y(4)h(913.8)96 b(208.4)136 b(0.0)183 2219 y(5)h(115.0)96 b(298.0)136 b(0.0)183 2261 y(6)h(133.8)96 b(328.2)136 b(0.0)183 2302 y(7)157 b(79.6)96 b(959.6)136 b(0.0)183 2344 y(8)h(111.0)96 b(257.6)136 b(0.0)183 2385 y(9)h(121.6)96 b(335.6)136 b(0.0)164 2427 y(10)g(470.0)96 b(118.0)77 b(1102.0)164 2468 y(11)156 b(78.4)96 b(284.8)136 b(0.0)164 2510 y(12)156 b(99.4)96 b(970.0)136 b(0.0)164 2551 y(13)g(140.4)96 b(343.8)136 b(0.0)164 2593 y(14)156 b(63.8)77 b(1212.0)135 b(0.0)57 b(;)948 2768 y Fq(57)p eop %%Page: 56 9 bop 144 30 a Fg(###)38 b(OBJECTIVE)e(###)144 98 y(minimize)17 b(cost:)222 152 y(sum)i({t)g(in)g(time})e(rtr)i(*)g(sl)g(*)g(dpp[t])e(*)j(cs) e(*)i(Crews[t])c(+)222 194 y(sum)j({t)g(in)g(time})e(hc[t])h(*)h(Hire[t])e(+) 222 235 y(sum)i({t)g(in)g(time})e(lc[t])h(*)h(Layoff[t])d(+)222 277 y(sum)j({t)g(in)g(time,)e(p)j(in)e(prd})g(otr)h(*)g(cs)g(*)g(pt[p])f(*)h (Oprd[p,t])d(+)222 318 y(sum)j({t)g(in)g(time,)e(p)j(in)e(prd,)g(a)i(in)e (1..life})f(cri[p])g(*)j(pc[p])d(*)i(Inv[p,t,a])d(+)222 360 y(sum)j({t)g(in)g(time,)e(p)j(in)e(prd})g(crs[p])g(*)h(pc[p])f(*)h(Short[p,t) o(];)615 414 y(#)g(Full)f(regular)f(wages)h(for)g(all)h(crews)e(employed,)f (plus)615 456 y(#)j(penalties)d(for)j(hiring)e(and)h(layoffs,)f(plus)615 497 y(#)i(wages)f(for)g(any)h(overtime)d(worked,)h(plus)615 539 y(#)i(inventory)d(and)j(shortage)d(costs)615 593 y(#)j(\(All)f(other)g (productio)o(n)e(costs)i(are)h(assumed)615 635 y(#)g(to)g(depend)e(on)i (initial)e(inventory)f(and)i(on)h(demands,)615 676 y(#)g(and)f(so)h(are)g (not)f(included)f(explicitl)o(y.)o(\))144 754 y(###)38 b(CONSTRAINT)o(S)e (###)144 821 y(rlim)18 b(\015regular-t)o(im)o(e)f(limit\015)g({t)i(in)g (time}:)222 876 y(sum)g({p)g(in)g(prd})f(pt[p])f(*)j(Rprd[p,t)o(])d(<=)i(sl)f (*)i(dpp[t])d(*)i(Crews[t];)615 930 y(#)g(Hours)f(needed)f(to)i(accomplis)o (h)e(all)h(regular-ti)o(me)615 972 y(#)h(productio)o(n)e(in)i(a)g(period)e (must)h(not)h(exceed)615 1013 y(#)g(hours)f(available)e(on)j(all)f(shifts)144 1081 y(olim)g(\015overtime)e(limit\015)i({t)g(in)h(time}:)222 1135 y(sum)g({p)g(in)g(prd})f(pt[p])f(*)j(Oprd[p,t)o(])d(<=)i(ol[t];)615 1190 y(#)g(Hours)f(needed)f(to)i(accomplis)o(h)e(all)h(overtime)615 1231 y(#)h(productio)o(n)e(in)i(a)g(period)e(must)h(not)h(exceed)615 1273 y(#)g(the)f(specified)f(overtime)f(limit)144 1340 y(empl0)i(\015initial) e(crew)i(level\015:)37 b(Crews[fir)o(st-)o(1])16 b(=)j(iw;)615 1395 y(#)g(Use)f(given)g(initial)f(workforce)144 1462 y(empl)h(\015crew)g (levels\015)f({t)i(in)f(time}:)37 b(Crews[t])17 b(=)i(Crews[t-1])d(+)j (Hire[t])e(-)i(Layoff[t];)615 1517 y(#)g(Workforce)d(changes)h(by)i(hiring)e (or)i(layoffs)144 1584 y(emplbnd)e(\015crew)h(limits\015)f({t)h(in)h(time}:) 37 b(cmin[t])17 b(<=)i(Crews[t])d(<=)j(cmax[t];)615 1639 y(#)g(Workforce)d (must)i(remain)f(within)h(specified)e(bounds)144 1706 y(dreq1)i(\015first)f (demand)g(requiremen)o(t\015)f({p)j(in)g(prd}:)222 1761 y(Rprd[p,firs)o(t])d (+)j(Oprd[p,fir)o(st])d(+)j(Short[p,fi)o(rs)o(t])713 1802 y(-)g(Inv[p,firs)o (t,)o(1])d(=)j(dem[p,first)o(])d(less)j(iinv[p];)144 1870 y(dreq)f (\015demand)f(requiremen)o(ts)o(\015)g({p)h(in)h(prd,)f(t)i(in)e(first+1..la) o(st)o(}:)222 1924 y(Rprd[p,t])f(+)i(Oprd[p,t])d(+)j(Short[p,t])d(-)j (Short[p,t-)o(1])654 1966 y(+)g(sum)g({a)f(in)h(1..life})e(\(Inv[p,t-)o(1,a)o (])f(-)k(Inv[p,t,a)o(]\))1125 2007 y(=)f(dem[p,t])d(less)j(iil[p,t-)o(1];)615 2062 y(#)g(Productio)o(n)e(plus)h(increase)e(in)j(shortage)e(plus)615 2103 y(#)i(decrease)d(in)j(inventory)d(must)j(equal)e(demand)144 2171 y(ireq)h(\015inventory)e(requireme)o(nts)o(\015)g({p)j(in)g(prd,)f(t)h (in)g(time}:)222 2225 y(sum)g({a)g(in)g(1..life})d(Inv[p,t,a])g(+)j(iil[p,t]) e(>=)h(minv[p,t];)615 2280 y(#)h(Inventory)d(in)j(storage)e(at)i(end)f(of)h (period)e(t)615 2321 y(#)i(must)f(meet)g(specified)e(minimum)144 2389 y(izero)i(\015impossib)o(le)e(inventorie)o(s\015)g({p)j(in)g(prd,)f(v)h (in)g(1..life-1)o(,)e(a)i(in)g(v+1..life)o(}:)222 2443 y(Inv[p,first)o(+v)o (-1,)o(a])d(=)j(0;)615 2498 y(#)g(In)g(the)f(vth)h(period)e(\(starting)f (from)i(first\))615 2539 y(#)h(no)g(inventory)d(may)i(be)h(more)f(than)g(v)i (periods)d(old)615 2581 y(#)i(\(initial)d(inventories)g(are)i(handled)f (separately)o(\))948 2768 y Fq(56)p eop %%Page: 55 10 bop 144 30 a Fg(###)38 b(DEMAND)17 b(PARAMETERS)36 b(###)144 98 y(param)18 b(dem)g(\015demand\015)f({prd,firs)o(t.)o(.la)o(st)o(+1})f(>=)j (0;)615 152 y(#)g(Requireme)o(nts)d(\(in)i(1000s\))615 194 y(#)h(to)g(be)g(met)f(from)g(current)f(production)f(and)i(inventory)144 261 y(param)g(pro)g(\015promoted\015)e({prd,firs)o(t..)o(la)o(st+)o(1})g (logical;)615 316 y(#)j(true)f(if)h(product)e(will)h(be)h(the)f(subject)615 357 y(#)h(of)g(a)g(special)e(promotion)f(in)j(the)f(period)144 425 y(###)38 b(INVENTORY)16 b(AND)j(SHORTAGE)d(PARAMETERS)36 b(###)144 493 y(param)18 b(rir)g(\015regular)f(inventory)f(ratio\015)h(>=)i (0;)615 547 y(#)g(Proportio)o(n)e(of)i(non-prom)o(ote)o(d)e(demand)615 588 y(#)i(that)f(must)g(be)h(in)g(inventory)d(the)i(previous)f(period)144 656 y(param)h(pir)g(\015promotion)o(al)e(inventory)g(ratio\015)i(>=)g(0;)615 710 y(#)h(Proportio)o(n)e(of)i(promoted)d(demand)615 752 y(#)j(that)f(must)g (be)h(in)g(inventory)d(the)i(previous)f(period)144 820 y(param)h(life)g (\015inventor)o(y)f(lifetime)o(\015)g(>)i(0)g(integer;)615 874 y(#)g(Upper)f(limit)f(on)i(number)e(of)i(periods)e(that)615 916 y(#)i(any)f(product)f(may)i(sit)f(in)h(inventory)144 983 y(param)f(cri)g(\015inventory)e(cost)i(ratio\015)f({prd})h(>)h(0;)615 1038 y(#)g(Inventory)d(cost)i(per)h(1000)f(units)f(is)615 1079 y(#)i(cri)f(times)g(nominal)f(production)f(cost)144 1147 y(param)i(crs)g (\015shortage)e(cost)i(ratio\015)g({prd})f(>)j(0;)615 1201 y(#)f(Shortage)d(cost)j(per)f(1000)g(units)g(is)615 1243 y(#)h(crs)f(times)g (nominal)f(production)f(cost)144 1310 y(param)i(iinv)g(\015initial)e (inventory\015)g({prd})i(>=)h(0;)615 1365 y(#)g(Inventory)d(at)j(start)f(of)g (first)g(period;)f(age)i(unknown)144 1432 y(param)f(iil)g(\015initial)f (inventory)f(left\015)h({p)i(in)g(prd,)f(t)h(in)g(time})419 1474 y(:=)f(iinv[p])f(less)h(sum)h({v)g(in)g(first..t)o(})e(dem[p,v];)615 1528 y(#)i(Initial)e(inventory)f(still)i(available)e(for)i(allocation)615 1570 y(#)h(at)g(end)f(of)h(period)e(t)144 1637 y(param)h(minv)g(\015minimum)e (inventory\015)g({p)j(in)g(prd,)f(t)h(in)g(time})419 1679 y(:=)f(dem[p,t+1])e (*)j(\(if)g(pro[p,t+1)o(])e(then)h(pir)g(else)g(rir\);)615 1733 y(#)h(Lower)f(limit)f(on)i(inventory)d(at)j(end)g(of)f(period)g(t)144 1811 y(###)38 b(VARIABLES)e(###)144 1879 y(var)18 b(Crews{first)o(-1)o(..l)o (ast)o(})e(>=)j(0;)615 1933 y(#)g(Average)e(number)g(of)i(crews)f(employed)e (in)j(each)f(period)144 2001 y(var)g(Hire{time})e(>=)j(0;)78 b(#)19 b(Crews)f(hired)f(from)h(previous)f(to)i(current)e(period)144 2068 y(var)h(Layoff{time)o(})e(>=)j(0;)39 b(#)19 b(Crews)f(laid)g(off)g(from) g(previous)f(to)i(current)e(period)144 2136 y(var)h(Rprd)h(\015regular)d (production)o(\015)g({prd,time})g(>=)j(0;)615 2190 y(#)g(Productio)o(n)e (using)g(regular-tim)o(e)f(labor,)i(in)h(1000s)144 2258 y(var)f(Oprd)h (\015overtim)o(e)e(productio)o(n\015)f({prd,time})g(>=)j(0;)615 2312 y(#)g(Productio)o(n)e(using)g(overtime)g(labor,)g(in)i(1000s)144 2380 y(var)f(Inv)h(\015inventor)o(y\015)d({prd,time,)o(1..)o(li)o(fe})g(>=)j (0;)615 2434 y(#)g(Inv[p,t,a)o(])e(is)i(the)f(amount)f(of)i(product)e(p)i (that)f(is)615 2476 y(#)h(a)g(periods)e(old)i(--)f(produced)f(in)i(period)e (\(t+1\)-a)g(--)615 2517 y(#)i(and)f(still)g(in)h(storage)e(at)i(the)f(end)h (of)f(period)g(t)144 2585 y(var)g(Short)g(\015shortage\015)e({prd,time)o(})h (>=)h(0;)615 2639 y(#)h(Accumulat)o(ed)d(unsatisfie)o(d)h(demand)g(at)i(the)f (end)h(of)g(period)e(t)948 2768 y Fq(55)p eop %%Page: 54 11 bop 144 30 a Fr(App)r(endix)18 b(C.)42 b Fa(PR)o(OD)p Fr(,)18 b(a)h(m)n(ultip)r(erio)r(d)d(pro)r(duction)h(mo)r(del)206 109 y Fq(This)i(mo)q(del)f(determines)i(a)f(series)h(of)f(w)o(orkforce)g(lev)o (els)g(that)h(will)d(most)h(economically)f(meet)144 159 y(demands)c(and)g(in) o(v)o(en)o(tory)g(requiremen)o(ts)g(o)o(v)o(er)h(time.)i(The)e(form)o (ulation)c(is)k(motiv)n(ated)d(b)o(y)i(the)h(exp)q(e-)144 209 y(riences)k(of)e(a)g(large)g(pro)q(ducer)i(in)d(the)i(United)g(States.)26 b(The)17 b(data)f(are)h(for)f(three)i(pro)q(ducts)f(and)f(13)144 258 y(p)q(erio)q(ds.)144 358 y Fg(###)38 b(PRODUCTION)16 b(SETS)i(AND)g (PARAMETERS)36 b(###)144 426 y(set)18 b(prd)h(\015products)o(\015;)75 b(#)19 b(Members)e(of)i(the)g(product)d(group)144 493 y(param)i(pt)h (\015product)o(ion)d(time\015)i({prd})f(>)i(0;)615 548 y(#)g(Crew-hour)o(s)e (to)i(produce)d(1000)j(units)144 615 y(param)f(pc)h(\015product)o(ion)d (cost\015)i({prd})f(>)i(0;)615 670 y(#)g(Nominal)e(productio)o(n)g(cost)h (per)g(1000,)g(used)615 711 y(#)h(to)g(compute)e(inventory)f(and)i(shortage)f (costs)144 789 y(###)38 b(TIME)18 b(PERIOD)f(SETS)i(AND)f(PARAMETER)o(S)36 b(###)144 857 y(param)18 b(first)f(>)j(0)f(integer;)615 898 y(#)g(Index)f(of)g(first)g(production)e(period)h(to)i(be)g(modeled)144 966 y(param)f(last)g(>)h(first)f(integer;)615 1020 y(#)h(Index)f(of)g(last)h (producti)o(on)d(period)i(to)g(be)h(modeled)144 1088 y(set)f(time)h (\015plannin)o(g)e(horizon\015)f(:=)j(first..las)o(t;)144 1165 y(###)38 b(EMPLOYMENT)16 b(PARAMETER)o(S)36 b(###)144 1233 y(param)18 b(cs)h(\015crew)e(size\015)h(>)h(0)g(integer;)615 1287 y(#)g(Workers)e(per)h(crew)144 1355 y(param)g(sl)h(\015shift)e (length\015)g(>)i(0;)615 1410 y(#)g(Regular-t)o(ime)d(hours)i(per)g(shift)144 1477 y(param)g(rtr)g(\015regular)f(time)h(rate\015)f(>)j(0;)615 1532 y(#)f(Wage)f(per)g(hour)h(for)f(regular-ti)o(me)e(labor)144 1599 y(param)i(otr)g(\015overtime)e(rate\015)i(>)h(rtr;)615 1654 y(#)g(Wage)f(per)g(hour)h(for)f(overtime)f(labor)144 1721 y(param)h(iw)h(\015initial)d(workforce\015)g(>=)j(0)g(integer;)615 1776 y(#)g(Crews)f(employed)e(at)j(start)f(of)h(first)e(period)144 1843 y(param)h(dpp)g(\015days)g(per)g(period\015)f({time})g(>)j(0;)615 1898 y(#)f(Regular)e(working)g(days)h(in)h(a)g(productio)o(n)e(period)144 1965 y(param)h(ol)h(\015overtim)o(e)e(limit\015)g({time})g(>=)i(0;)615 2020 y(#)g(Maximum)e(crew-hour)o(s)g(of)h(overtime)f(in)i(a)g(period)144 2087 y(param)f(cmin)g(\015crew)f(minimum\015)g({time})g(>=)i(0;)615 2142 y(#)g(Lower)f(limit)f(on)i(average)e(employment)f(in)j(a)g(period)144 2209 y(param)f(cmax)g(\015crew)f(maximum\015)g({t)i(in)g(time})e(>=)i (cmin[t];)615 2264 y(#)g(Upper)f(limit)f(on)i(average)e(employment)f(in)j(a)g (period)144 2331 y(param)f(hc)h(\015hiring)d(cost\015)i({time})f(>=)i(0;)615 2386 y(#)g(Penalty)e(cost)h(of)h(hiring)e(a)i(crew)144 2454 y(param)f(lc)h(\015layoff)d(cost\015)i({time})f(>=)i(0;)615 2508 y(#)g(Penalty)e(cost)h(of)h(laying)e(off)i(a)g(crew)948 2768 y Fq(54)p eop %%Page: 53 12 bop 144 30 a Fg(param)18 b(dcap)37 b(default)17 b(0.0)38 b(:=)203 85 y([ABU_ZAAB)o(AL,)o(*])55 b(SSP)195 b(600)536 127 y(SULF_A_P)95 b(227)536 168 y(SULF_A_S)g(242)203 224 y([ASSIOUT,)o(*])114 b(SSP)195 b(600)536 265 y(SULF_A_S)95 b(250)203 320 y([ASWAN,*])153 b(AMM_ELEC)95 b(450)536 362 y(C_AMM_NITR)36 b(1100)536 403 y(NITR_ACID)75 b(800)203 458 y([HELWAN,*)o(])134 b(AMM_C_GAS)75 b(172)536 500 y(AMM_SULF)115 b(24)536 542 y(C_AMM_NITR)55 b(364)536 583 y(NITR_ACID)75 b(282)203 638 y([KAFR_EL_)o(ZT,)o(*])55 b(SSP)195 b(600)536 680 y(SULF_A_P)115 b(50)536 721 y(SULF_A_S)95 b(200)38 b(;)144 789 y(end;)948 2768 y Fq(53)p eop %%Page: 52 13 bop 203 30 a Fg([*,CAN_33)o(5])75 b(AMMONIA)154 b(-.21)497 72 y(BAGS)175 b(-23.)497 113 y(CAN_335)154 b(1.0)497 155 y(LIMESTONE)114 b(-.04)497 196 y(NITR_ACID)g(-.76)497 238 y(STEAM)194 b(-.4)497 279 y(WATER)155 b(-49.)203 334 y([*,NITR_A)o(CID)o(])36 b(AMMONIA)154 b(-.292)497 376 y(ELECTRIC)75 b(-231.)497 417 y(NITR_ACID)114 b(1.0)497 459 y(WATER)194 b(-.6)203 514 y([*,SSP_15)o(5])75 b(BAGS)175 b(-22.)497 556 y(ELECTRIC)95 b(-14.)497 597 y(PHOS_ROCK)114 b(-.62)497 639 y(SSP_155)154 b(1.0)497 680 y(SULF_ACID)114 b(-.41)497 722 y(WATER)175 b(-6.)203 777 y([*,SULF_A)o(_P])55 b(ELECTRIC)95 b(-75.)497 818 y(PYRITES)154 b(-.826)497 860 y(SULF_ACID)114 b(1.0)497 901 y(WATER)155 b(-60.)203 957 y([*,SULF_A)o(_S])55 b(ELECTRIC)95 b(-50.)497 998 y(EL_SULFUR)114 b(-.334)497 1040 y(SULF_ACID)g(1.0)497 1081 y(WATER)155 b(-20.)18 b(;)144 1159 y(param)g(util)37 b(default)17 b(0)39 b(:=)203 1214 y([*,*])57 b(SULF_A_S)16 b(SULF_A_S)76 b(1)117 b(SULF_A_P)16 b(SULF_A_P)56 b(1)360 1256 y(NITR_ACID)16 b(NITR_ACID)36 b(1)117 b(AMM_ELEC)16 b(AMM_ELEC)56 b(1)360 1297 y(AMM_C_GAS)16 b(AMM_C_GAS)36 b(1)117 b(SSP)18 b(SSP_155)174 b(1)360 1339 y(C_AMM_NIT)o(R)17 b(CAN_310)56 b(1)117 b(C_AMM_NIT)o(R)17 b(CAN_335)36 b(1)360 1380 y(AMM_SULF)16 b(AMM_SULF)76 b(1)19 b(;)144 1458 y(param)f(p_imp)37 b(default)17 b(0.0)38 b(:=)242 1513 y(PYRITES)135 b(17.5)214 b(AMM_SULF)114 b(75.)242 1554 y(EL_SULFUR)95 b(55.)234 b(DAP)195 b(175.)242 1596 y(UREA)175 b(150.)234 b(SSP_155)134 b(80.)242 1637 y(CAN_260)h(75.)234 b(C_250_55)95 b(100.)242 1679 y(CAN_310)135 b(90.)234 b(C_300_100)75 b(130.)242 1720 y(CAN_335)115 b(100.)57 b(;)144 1798 y(param)18 b(p_r)38 b(default)17 b(0.0)38 b(:=)242 1853 y(ELECTRIC)95 b(.007)242 1895 y(BF_GAS)135 b(.007)242 1936 y(WATER)155 b(.031)242 1978 y(STEAM)135 b(1.25)242 2019 y(BAGS)175 b(.28)58 b(;)144 2097 y(param)18 b(p_pr)37 b(default)17 b(0.0)38 b(:=)164 2152 y([HELWAN,C)o(OK)o(E_G)o(AS)o(])272 b(16.0)164 2194 y([ASWAN,EL)o(_A)o(SWA)o (N])310 b(1.0)164 2249 y([*,LIMEST)o(ON)o(E])114 b(ASWAN)155 b(1.2)536 2290 y(HELWAN)135 b(1.2)164 2346 y([*,PHOS_R)o(OC)o(K])114 b(ABU_ZAABAL)55 b(4.0)536 2387 y(ASSIOUT)115 b(3.5)536 2429 y(KAFR_EL_ZT)55 b(5.0)j(;)948 2768 y Fq(52)p eop %%Page: 51 14 bop 144 30 a Fg(param)18 b(road)37 b(default)17 b(0.0)38 b(:)379 85 y(ABU_KIR)17 b(ABU_ZAABAL)f(ASSIOUT)h(ASWAN)h(HELWAN)f(KAFR_EL_Z)o(T)g (SUEZ)h(TALKHA)f(:=)144 141 y(ALEXANDRIA)114 b(16)97 b(210)136 b(607)78 b(1135)57 b(244)116 b(119)97 b(362)58 b(187)144 182 y(ASSIOUT)154 b(616)97 b(420)175 b(.)98 b(518)58 b(362)116 b(504)97 b(527)58 b(518)144 224 y(ASWAN)175 b(1134)96 b(938)136 b(518)g(.)59 b(880)97 b(1022)77 b(1045)37 b(1036)144 265 y(BEHERA)194 b(76)117 b(50)136 b(547)78 b(1065)57 b(184)136 b(42)97 b(288)58 b(120)144 307 y(BENI_SUEF)114 b(359)97 b(163)136 b(257)97 b(775)58 b(105)116 b(248)97 b(270)58 b(261)144 348 y(DAKAHLIA)134 b(208)97 b(138)136 b(515)78 b(1033)57 b(152)136 b(58)97 b(219)g(3)144 390 y(DAMIETTA)134 b(267)97 b(216)136 b(596)78 b(1114)57 b(233)116 b(131)97 b(286)78 b(66)144 431 y(FAYOUM)174 b(341)97 b(145)136 b(308)97 b(826)77 b(88)117 b(230)97 b(252)58 b(243)144 473 y(GHARBIA)154 b(150)117 b(65)136 b(485)78 b(1003)57 b(122)136 b(20)97 b(226)78 b(55)144 514 y(GIZA)214 b(287)117 b(48)136 b(372)97 b(890)77 b(.9)117 b(133)97 b(169)58 b(146)144 556 y(ISMAILIA)134 b(365)97 b(142)136 b(536)78 b(1054)57 b(173)116 b(241)h(89)58 b(146)144 597 y(KAFR_EL_SH)94 b(145)j(105)136 b(525)78 b(1043)57 b(162)136 b(20)97 b(266)78 b(35)144 639 y(KALUBIA)154 b(190)117 b(97)136 b(439)97 b(957)77 b(76)137 b(66)97 b(180)78 b(81)144 680 y(MENOUFIA)134 b(157)97 b(154)136 b(472)97 b(990)58 b(109)136 b(33)97 b(213)78 b(90)144 722 y(MINIA)194 b(384)97 b(288)136 b(132)97 b(650)58 b(230)116 b(372)97 b(394)58 b(386)144 763 y(NEW_VALLEY)94 b(815)j(619)136 b(199)97 b(519)58 b(561)116 b(703)97 b(726)58 b(717)144 805 y(QUENA)194 b(858)97 b(662)136 b(242)97 b(276)58 b(604)116 b(746)97 b(769)58 b(760)144 846 y(SHARKIA)154 b(240)117 b(60)136 b(473)97 b(991)58 b(110)136 b(78)97 b(214)78 b(58)144 888 y(SOHAG)194 b(715)97 b(519)156 b(99)97 b(419)58 b(461)116 b(603)97 b(626)58 b(617)144 929 y(SUEZ)214 b(370)97 b(224)136 b(541)78 b(1059)57 b(178)116 b(246)137 b(.)58 b(298)38 b(;)144 1007 y(param)18 b(rail_half)35 b(default)17 b(0)39 b(:)419 1062 y(KAFR_EL_Z)o(T)56 b(ABU_ZAAB)o(AL)75 b(HELWAN)96 b(ASSIOUT)56 b(:=)144 1117 y(ABU_ZAABAL)173 b(85)234 b(.)216 b(.)195 b(.)144 1159 y(HELWAN)233 b(142)215 b(57)g(.)195 b(.)144 1200 y(ASSIOUT)213 b(504)195 b(420)175 b(362)195 b(.)144 1242 y(ASWAN)233 b(1022)195 b(938)175 b(880)156 b(518)97 b(;)144 1319 y(param)18 b(:)235 b(impd_barg)55 b(impd_road)16 b(:=)144 1375 y(ABU_ZAABAL)232 b(210)194 b(.1)144 1416 y(ASSIOUT)292 b(583)175 b(0)144 1458 y(ASWAN)312 b(1087)155 b(10)144 1499 y(HELWAN)312 b(183)175 b(0)144 1541 y(KAFR_EL_ZT)232 b(104)175 b(6)19 b(;)144 1618 y(param)f(io)38 b(default)17 b(0.0)38 b(:=)203 1674 y([*,AMM_C_)o(GAS)o(])e(AMMONIA)154 b(1.0)497 1715 y(BF_GAS)115 b(-609.)497 1757 y(COKE_GAS)g(-2.0)497 1798 y(ELECTRIC)56 b(-1960.)497 1840 y(STEAM)175 b(-4.)497 1881 y(WATER)135 b(-700.)203 1936 y([*,AMM_EL)o(EC])55 b(AMMONIA)154 b(1.0)497 1978 y(EL_ASWAN)95 b(-12.0)203 2033 y([*,AMM_SU)o(LF])55 b(AMMONIA)154 b(-.26)497 2075 y(AMM_SULF)134 b(1.0)497 2116 y(BAGS)175 b(-22.)497 2158 y(ELECTRIC)95 b(-19.)497 2199 y(SULF_ACID)114 b(-.76)497 2241 y(WATER)155 b(-17.)203 2296 y([*,CAN_31)o(0])75 b(AMMONIA)154 b(-.20)497 2337 y(BAGS)175 b(-23.)497 2379 y(CAN_310)154 b(1.0)497 2420 y(LIMESTONE)114 b(-.12)497 2462 y(NITR_ACID)g(-.71)497 2503 y(STEAM)194 b(-.4)497 2545 y(WATER)155 b(-49.)948 2768 y Fq(51)p eop %%Page: 50 15 bop 144 30 a Fg(param)18 b(cf75)37 b(default)17 b(0.0)38 b(:)438 85 y(CAN_260)76 b(CAN_310)g(CAN_335)f(AMM_SULF)95 b(UREA)58 b(:=)144 141 y(ALEXANDRIA)153 b(.)215 b(.)177 b(5.0)155 b(3.0)h(1.0)144 182 y(ASSIOUT)193 b(1.0)156 b(20.0)136 b(26.0)155 b(1.0)136 b(27.0)144 224 y(ASWAN)253 b(.)176 b(40.0)f(.)196 b(.)g(.)144 265 y(BEHERA)213 b(1.0)195 b(.)157 b(25.0)136 b(90.0)f(35.0)144 307 y(BENI_SUEF)153 b(1.0)195 b(.)157 b(15.0)e(1.0)136 b(20.0)144 348 y(DAKAHLIA)173 b(1.0)195 b(.)157 b(26.0)136 b(60.0)f(20.0)144 390 y(DAMIETTA)193 b(.)215 b(.)177 b(2.0)136 b(15.0)155 b(8.0)144 431 y(FAYOUM)213 b(1.0)195 b(.)157 b(20.0)e(6.0)136 b(20.0)144 473 y(GHARBIA)213 b(.)i(.)157 b(17.0)136 b(60.0)f(28.0)144 514 y(GIZA)273 b(.)215 b(.)157 b(40.0)e(6.0)h(2.0)144 556 y(ISMAILIA)193 b(.)215 b(.)177 b(4.0)155 b(6.0)h(2.0)144 597 y(KAFR_EL_SH)133 b(1.0)195 b(.)157 b(10.0)136 b(45.0)f(22.0)144 639 y(KALUBIA)213 b(.)i(.)157 b(25.0)136 b(16.0)155 b(7.0)144 680 y(MENOUFIA)173 b(1.0)195 b(.)157 b(24.0)136 b(21.0)f(30.0)144 722 y(MINIA)233 b(2.0)156 b(15.0)136 b(35.0)155 b(1.0)136 b(41.0)144 763 y(NEW_VALLEY)153 b(.)215 b(.)196 b(.)g(.)176 b(1.0)144 805 y(QUENA)253 b(.)176 b(95.0)156 b(2.0)175 b(.)h(3.0)144 846 y(SHARKIA)193 b(1.0)i(.)157 b(31.0)136 b(50.0)f(28.0)144 888 y(SOHAG)253 b(.)176 b(65.0)156 b(3.0)175 b(.)h(7.0)144 929 y(SUEZ)273 b(.)215 b(.)177 b(1.0)e(.)196 b(.)203 997 y(:)g(SSP_155)75 b(C_250_55)56 b(C_300_100)75 b(DAP)58 b(:=)144 1052 y(ALEXANDRIA)133 b(8.0)176 b(.)196 b(.)176 b(.)144 1094 y(ASSIOUT)e(35.0)155 b(5.0)176 b(.1)156 b(.)144 1135 y(ASWAN)233 b(8.0)176 b(.)196 b(.)176 b(.)144 1177 y(BEHERA)194 b(64.0)155 b(1.0)176 b(.1)156 b(.1)144 1218 y(BENI_SUEF)134 b(13.0)155 b(3.0)176 b(.)g(.)144 1260 y(DAKAHLIA)154 b(52.0)h(1.0)176 b(.)g(.)144 1301 y(DAMIETTA)d(5.0)j(.)196 b(.)176 b(.)144 1343 y(FAYOUM)194 b(17.0)155 b(1.0)176 b(.)g(.)144 1384 y(GHARBIA)e(57.0)155 b(1.0)176 b(.2)156 b(.1)144 1426 y(GIZA)234 b(14.0)155 b(1.0)176 b(.1)156 b(.)144 1467 y(ISMAILIA)173 b(4.0)j(.)196 b(.)176 b(.)144 1509 y(KAFR_EL_SH)114 b(25.0)155 b(2.0)176 b(.1)156 b(.)144 1550 y(KALUBIA)174 b(22.0)155 b(1.0)176 b(.)g(.1)144 1592 y(MENOUFIA)154 b(33.0)h(2.0)176 b(.1)156 b(.1)144 1633 y(MINIA)214 b(50.0)155 b(3.0)176 b(.2)156 b(.1)144 1675 y(NEW_VALLEY)133 b(1.0)176 b(.)196 b(.)176 b(.)144 1716 y(QUENA)233 b(8.0)176 b(.)196 b(.)176 b(.)144 1758 y(SHARKIA)e(43.0)155 b(1.0)176 b(.1)156 b(.)144 1799 y(SOHAG)214 b(20.0)155 b(1.0)176 b(.)g(.)144 1841 y(SUEZ)253 b(1.0)176 b(.)196 b(.)176 b(.)156 b(;)144 1918 y(param)18 b(fn)38 b(default)17 b(0.0)i(:)117 b(N)97 b(P205)77 b(:=)379 1974 y(AMM_SULF)135 b(.206)96 b(.)379 2015 y(CAN_260)155 b(.26)116 b(.)379 2057 y(CAN_310)155 b(.31)116 b(.)379 2098 y(CAN_335)155 b(.335)96 b(.)379 2140 y(C_250_55)135 b(.25)116 b(.055)379 2181 y(C_300_100)f(.30)h(.10)379 2223 y(DAP)235 b(.18)116 b(.46)379 2264 y(SSP_155)155 b(.)h(.15)379 2306 y(UREA)215 b(.46)116 b(.)h(;)948 2768 y Fq(50)p eop %%Page: 49 16 bop 144 30 a Fg(subject)17 b(to)i(al:)222 85 y(Psil)38 b(=)h(sum)18 b({c)h(in)g(c_final})e(\()438 141 y(sum)i({pl)f(in)h(cp_pos[c])o(,)e(r)i(in)g (region})1046 182 y(tran_final)o([pl)o(,r)o(])e(*)i(Xf[c,pl,r)o(])399 237 y(+)g(sum)g({po)f(in)h(port,)f(r)h(in)g(region})e(tran_impo)o(rt)o([r,)o (po)o(])g(*)i(Vf[c,r,po)o(])e(\))360 292 y(+)i(sum)f({c)h(in)g(c_ship,)e(p1)i (in)g(cp_pos[c])o(,)d(p2)j(in)g(cc_pos[c]})1066 334 y(tran_inte)o(r[p)o(1,)o (p2])d(*)j(Xi[c,p1,p2)o(])360 389 y(+)g(sum)f({c)h(in)g(c_raw,)e(pl)i(in)g (cc_pos[c]:)d(p_imp[c])g(>)k(0})1164 431 y(tran_raw[)o(pl])c(*)j(Vr[c,pl];) 674 486 y(#)g(Total)e(transport)g(cost)h(is)h(sum)f(of)h(shipping)d(costs)i (for)674 527 y(#)58 b(\(1\))18 b(all)h(final)f(products)e(from)i(all)h (plants,)674 569 y(#)58 b(\(2\))18 b(all)h(imports)e(of)i(final)e(products,) 674 610 y(#)58 b(\(3\))18 b(all)h(intermedi)o(ate)o(s)e(shipped)f(between)h (plants,)674 652 y(#)58 b(\(4\))18 b(all)h(imports)e(of)i(raw)f(materials)144 707 y(subject)f(to)i(ai:)222 762 y(Psii)g(/)g(exch)37 b(=)i(sum)19 b({c)g(in)f(c_final,)f(r)i(in)g(region,)e(po)i(in)g(port})1203 804 y(p_imp[c])e(*)i(Vf[c,r,po)o(])497 859 y(+)g(sum)g({c)g(in)f(c_raw,)g(pl) h(in)f(cc_pos[c]})e(p_imp[c])h(*)i(Vr[c,pl];)674 914 y(#)g(Total)e(import)h (cost)g(--)h(at)g(exchange)d(rate)i(--)674 956 y(#)h(is)g(sum)f(of)h(import)e (costs)h(for)g(final)g(products)674 997 y(#)h(in)g(each)f(region)f(and)h(raw) h(materials)d(at)j(each)f(plant)144 1075 y(###)38 b(DATA)g(###)144 1143 y(data;)144 1198 y(set)18 b(center)g(:=)h(ASWAN)e(HELWAN)h(ASSIOUT)e (KAFR_EL_ZT)g(ABU_ZAABAL)g(ABU_KIR)h(TALKHA)g(SUEZ)h(;)144 1253 y(set)g(port)h(:=)f(ABU_KIR)f(;)144 1308 y(set)h(plant)g(:=)h(ASWAN)f (HELWAN)f(ASSIOUT)g(KAFR_EL_Z)o(T)g(ABU_ZAABA)o(L)f(;)144 1363 y(set)i(region)g(:=)h(ALEXANDRI)o(A)d(BEHERA)i(GHARBIA)f(KAFR_EL_)o(SH)f (DAKAHLIA)h(DAMIETTA)419 1405 y(SHARKIA)g(ISMAILIA)f(SUEZ)i(MENOUFIA)f (KALUBIA)g(GIZA)h(BENI_SUEF)e(FAYOUM)419 1446 y(MINIA)h(ASSIOUT)g(NEW_VALLEY) f(SOHAG)i(QUENA)f(ASWAN)h(;)144 1502 y(set)g(unit)h(:=)f(SULF_A_S)f(SULF_A_P) f(NITR_ACID)h(AMM_ELEC)f(AMM_C_GAS)g(C_AMM_NITR)379 1543 y(AMM_SULF)h(SSP)h (;)144 1598 y(set)g(proc)h(:=)f(SULF_A_S)f(SULF_A_P)f(NITR_ACID)h(AMM_ELEC)f (AMM_C_GAS)g(CAN_310)h(CAN_335)379 1640 y(AMM_SULF)g(SSP_155)g(;)144 1695 y(set)h(nutr)h(:=)f(N)i(P205)e(;)144 1750 y(set)g(c_final)f(:=)i(UREA)f (CAN_260)f(CAN_310)g(CAN_335)g(AMM_SULF)g(DAP)h(SSP_155)f(C_250_55)438 1792 y(C_300_100)f(;)144 1847 y(set)i(c_inter)f(:=)i(AMMONIA)e(NITR_ACID)f (SULF_ACID)g(;)144 1902 y(set)i(c_ship)g(:=)h(AMMONIA)e(SULF_ACI)o(D)g(;)144 1957 y(set)h(c_raw)g(:=)h(EL_ASWAN)e(COKE_GAS)f(PHOS_ROCK)g(LIMESTONE)g (EL_SULFUR)g(PYRITES)399 1999 y(ELECTRIC)h(BF_GAS)g(WATER)g(STEAM)h(BAGS)g(;) 144 2054 y(set)g(p_except[AS)o(WA)o(N])e(:=)j(CAN_335)e(;)144 2096 y(set)h(p_except[HE)o(LW)o(AN])e(:=)j(CAN_310)e(;)144 2137 y(set)h(p_except[AS)o(SI)o(OUT)o(])f(:=)h(;)144 2179 y(set)g (p_except[KA)o(FR)o(_EL)o(_ZT)o(])e(:=)j(;)144 2220 y(set)f(p_except[AB)o(U_) o(ZAA)o(BAL)o(])e(:=)j(;)144 2298 y(param)f(exch)g(:=)h(0.4;)144 2366 y(param)f(util_pct)e(:=)j(0.85;)948 2768 y Fq(49)p eop %%Page: 48 17 bop 144 30 a Fg(var)18 b(U)i({c)f(in)f(c_raw,)g(cc_pos[c])o(})e(>=)j(0;)674 85 y(#)g(U[c,pl])e(is)i(amount)e(of)i(raw)f(material)f(c)674 127 y(#)i(purchased)d(domestica)o(lly)g(for)i(use)h(at)g(plant)e(pl)144 194 y(var)h(Psip;)352 b(#)19 b(Domestic)d(recurrent)g(cost)144 236 y(var)i(Psil;)352 b(#)19 b(Transport)d(cost)144 278 y(var)i(Psii;)352 b(#)19 b(Import)e(cost)144 355 y(###)38 b(OBJECTIVE)e(###)144 423 y(minimize)17 b(Psi:)37 b(Psip)18 b(+)i(Psil)e(+)h(Psii;)144 500 y(###)38 b(CONSTRAINT)o(S)e(###)144 568 y(subject)17 b(to)i(mbd)f({n)h (in)g(nutr,)f(r)h(in)g(region}:)222 623 y(sum)g({c)g(in)g(c_final})d(fn[c,n]) h(*)458 665 y(\(sum)h({po)g(in)h(port})f(Vf[c,r,po)o(])f(+)477 706 y(sum)i({pl)f(in)h(cp_pos[c]})d(Xf[c,pl,r)o(]\))36 b(>=)i(cn75[r,n];)674 762 y(#)19 b(Total)e(nutrients)g(supplied)f(to)j(a)g(region)f(by)g(all)674 803 y(#)h(final)e(products)g(\(sum)h(of)h(imports)e(plus)h(internal)674 845 y(#)h(shipments)d(from)i(plants\))f(must)h(meet)g(requiremen)o(ts)144 912 y(subject)f(to)i(mbdb)f({c)h(in)g(c_final,)d(r)j(in)g(region:)e (cf75[r,c])f(>)j(0}:)222 967 y(sum)g({po)f(in)h(port})f(Vf[c,r,po)o(])f(+)222 1009 y(sum)i({pl)f(in)h(cp_pos[c]})d(Xf[c,pl,r)o(])36 b(>=)j(cf75[r,c])o(;) 674 1064 y(#)19 b(Total)e(of)i(each)f(final)g(product)f(supplied)g(to)h(each) 674 1106 y(#)h(region)e(\(as)i(in)f(previous)f(constrain)o(t\))f(must)i(meet) 674 1147 y(#)h(requireme)o(nts)144 1215 y(subject)e(to)i(mb)g({c)f(in)h (commod,)e(pl)i(in)g(plant}:)222 1270 y(sum)g({pr)f(in)h(p_pos[pl]})d (io[c,pr])g(*)k(Z[pl,pr])203 1325 y(+)f(\()g(if)g(c)g(in)g(c_ship)f(then)458 1367 y(\()h(if)g(pl)g(in)g(cp_pos[c)o(])e(then)h(sum)g({p2)h(in)g(cc_pos[c)o (]})d(Xi[c,pl,p2)o(])h(\))419 1408 y(+)i(\()g(if)g(pl)g(in)g(cc_pos[c)o(])e (then)h(sum)g({p2)h(in)g(cp_pos[c)o(]})d(Xi[c,p2,pl)o(])h(\)\))203 1463 y(+)i(\()g(if)g(\(c)g(in)g(c_raw)f(and)g(pl)h(in)g(cc_pos[c])o(\))d (then)477 1505 y(\(\()j(if)g(p_imp[c])e(>)i(0)g(then)f(Vr[c,pl])f(\))458 1546 y(+)i(\()g(if)g(p_dom[pl,c)o(])d(>)k(0)f(then)f(U[c,pl])f(\)\)\))183 1602 y(>=)i(if)g(\(c)g(in)g(c_final)e(and)h(pl)h(in)g(cp_pos[c])o(\))d(then)i (sum)h({r)g(in)g(region})e(Xf[c,pl,)o(r];)674 1657 y(#)i(For)f(each)g (commodity)e(at)j(each)f(plant:)37 b(sum)19 b(of)674 1698 y(#)58 b(\(1\))18 b(production)e(or)j(consumptio)o(n)d(at)j(plant,)674 1740 y(#)58 b(\(2\))18 b(inter-plant)e(shipments)g(in)j(or)g(out,)674 1781 y(#)58 b(\(3\))18 b(import)g(and)g(domestic)f(purchases)f(\(raw)i (only\))674 1823 y(#)h(is)g(>=)f(0)i(for)e(raw)h(materials)d(and)i (intermedia)o(tes)o(;)674 1864 y(#)h(is)g(>=)f(the)h(total)f(shipped)f(for)h (final)g(products)144 1932 y(subject)f(to)i(cc)g({pl)f(in)h(plant,)e(u)i(in)g (m_pos[pl]})o(:)222 1987 y(sum)g({pr)f(in)h(p_pos[pl]})d(util[u,pr)o(])h(*)i (Z[pl,pr])36 b(<=)j(util_pct)16 b(*)j(icap[u,pl])o(;)674 2043 y(#)g(For)f(each)g(productive)e(unit)i(at)h(each)f(plant,)674 2084 y(#)h(total)e(utilization)f(by)j(all)f(processes)674 2126 y(#)h(may)f(not)h(exceed)e(the)h(unit\015s)g(capacity)144 2181 y(subject)f(to)i(ap:)222 2236 y(Psip)38 b(=)h(sum)18 b({c)h(in)g(c_raw,)e(pl) i(in)g(cc_pos[c]})d(p_dom[pl,)o(c])g(*)j(U[c,pl];)674 2291 y(#)g(Psip)f(is)h(the)f(cost)g(of)h(domestic)e(raw)h(materials,)674 2333 y(#)h(summed)e(over)h(all)h(plants)e(that)h(consume)f(them)948 2768 y Fq(48)p eop %%Page: 47 18 bop 144 30 a Fg(param)18 b(p_imp)f({commod})g(>=)i(0;)g(#)g(Import)e(Price)h (\(US$)g(per)g(ton)h(1975\))144 98 y(param)f(p_r)g({c_raw})f(>=)i(0;)144 139 y(param)f(p_pr)g({plant,c_)o(raw)o(})e(>=)j(0;)144 194 y(param)f(p_dom)f({pl)i(in)g(plant,)e(c)i(in)g(c_raw})e(:=)419 236 y(if)h(p_r[c])g(>)h(0)g(then)f(p_r[c])g(else)g(p_pr[pl,c)o(];)674 291 y(#)h(Domestic)d(raw)j(material)d(prices)144 359 y(param)i(dcap)g ({plant,un)o(it})e(>=)j(0;)674 414 y(#)g(Design)e(capacity)g(of)h(plants)g (\(t/day\))144 482 y(param)g(icap)g({u)h(in)f(unit,)g(pl)h(in)g(plant})e(:=)i (0.33)f(*)h(dcap[pl,u])o(;)674 537 y(#)g(Initial)e(capacity)f(of)j(plants)e (\(t/day\))144 605 y(param)h(exch;)312 b(#)19 b(Exchange)d(rate)144 672 y(param)i(util_pct;)232 b(#)19 b(Utilizati)o(on)d(percent)h(for)i (initial)d(capacity)144 750 y(###)38 b(DERIVED)17 b(SETS)h(OF)h("POSSIBIL)o (ITI)o(ES)o(")36 b(###)144 818 y(set)18 b(m_pos)g({pl)h(in)f(plant})g(:=)h ({u)f(in)h(unit:)f(icap[u,pl)o(])f(>)i(0};)674 873 y(#)g(At)g(each)f(plant,)f (set)h(of)h(units)f(for)g(which)g(there)g(is)674 914 y(#)h(initial)e (capacity)144 982 y(set)h(p_cap)g({pl)h(in)f(plant})g(:=)399 1023 y({pr)g(in)h(proc:)f(forall)f({u)i(in)g(unit:)f(util[u,pr)o(])e(>)k(0})e (u)i(in)f(m_pos[pl)o(])e(};)674 1079 y(#)i(At)g(each)f(plant,)f(set)h(of)h (processes)d(for)j(which)674 1120 y(#)g(all)f(necessary)e(units)i(have)g (some)g(initial)f(capacity)144 1188 y(set)h(p_except)f({plant})g(within)g (proc;)674 1243 y(#)i(At)g(each)f(plant,)f(list)h(of)h(processes)d(that)i (are)674 1285 y(#)h(arbitrari)o(ly)d(ruled)i(out)144 1352 y(set)g(p_pos)g ({pl)h(in)f(plant})g(:=)h(p_cap[pl)o(])e(diff)h(p_except[)o(pl])o(;)674 1407 y(#)h(At)g(each)f(plant,)f(set)h(of)h(possible)e(processes)144 1475 y(set)h(cp_pos)g({c)h(in)f(commod})f(:=)i({pl)g(in)f(plant:)g(sum)g({pr) h(in)g(p_pos[pl)o(]})d(io[c,pr])h(>)i(0};)144 1530 y(set)f(cc_pos)g({c)h(in)f (commod})f(:=)i({pl)g(in)f(plant:)g(sum)g({pr)h(in)g(p_pos[pl)o(]})d (io[c,pr])h(<)i(0};)144 1586 y(set)f(c_pos)g({c)h(in)g(commod})e(:=)i (cp_pos[c)o(])e(union)g(cc_pos[c];)674 1641 y(#)i(For)f(each)g(commodity,)e (set)j(of)f(plants)g(that)g(can)674 1682 y(#)h(produce)e(it)i(\(cp_pos\))d (or)j(consume)e(it)i(\(cc_pos\),)674 1724 y(#)g(and)f(their)g(union)g (\(c_pos\))144 1801 y(###)38 b(VARIABLES)e(###)144 1869 y(var)18 b(Z)i({pl)e(in)h(plant,)e(p_pos[pl]})f(>=)j(0;)674 1924 y(#)g(Z[pl,pr])d(is)j (level)f(of)h(process)e(pr)h(at)h(plant)f(pl)144 1992 y(var)g(Xf)h({c)g(in)g (c_final,)e(cp_pos[c)o(],)f(region})h(>=)i(0;)674 2047 y(#)g(Xf[c,pl,r)o(])e (is)h(amount)g(of)h(final)e(product)g(c)674 2089 y(#)i(shipped)e(from)h (plant)f(pl)i(to)g(region)e(r)144 2156 y(var)h(Xi)h({c)g(in)g(c_ship,)e (cp_pos[c])o(,)g(cc_pos[c])o(})f(>=)j(0;)674 2212 y(#)g(Xi[c,p1,p)o(2])d(is)j (amount)e(of)i(intermedia)o(te)d(c)674 2253 y(#)j(shipped)e(from)h(plant)f (p1)i(to)g(plant)f(p2)144 2321 y(var)g(Vf)h({c_final,r)o(egi)o(on,)o(po)o (rt})d(>=)j(0;)674 2376 y(#)g(Vf[c,r,po)o(])e(is)h(amount)g(of)h(final)e (product)g(c)674 2417 y(#)i(imported)d(by)j(region)e(r)j(from)e(port)g(po)144 2485 y(var)g(Vr)h({c)g(in)g(c_raw,)e(cc_pos[c]})f(>=)j(0;)674 2540 y(#)g(Vr[c,pl])d(is)j(amount)e(of)i(raw)g(material)d(c)674 2582 y(#)j(imported)d(for)j(use)f(at)h(plant)f(pl)948 2768 y Fq(47)p eop %%Page: 46 19 bop 144 30 a Fr(App)r(endix)18 b(B.)41 b Fa(EGYPT)p Fr(,)19 b(a)f(static)h(mo)r(del)d(of)j(fertilizer)d(pro)r(duction)206 109 y Fq(This)i(static)f(pro)q(duction)h(mo)q(del,)e(originally)f(stated)j (in)f(the)h(GAMS)f(language)g(\(Bissc)o(hop)h(and)144 159 y(Meeraus)c (1982\),)e(is)g(based)h(on)g(a)f(W)m(orld)g(Bank)g(study)h(of)f(the)i (Egyptian)e(fertilizer)h(industry)g(\(Choksi,)144 209 y(Meeraus)i(and)f (Stoutjesdijk)g(1980\).)144 300 y Fg(###)38 b(SETS)g(###)144 368 y(set)18 b(center;)312 b(#)19 b(Locations)d(from)i(which)g(final)f (product)g(may)i(be)g(shipped)144 409 y(set)f(port)h(within)e(center;)76 b(#)19 b(Locations)d(at)j(which)e(imports)g(can)i(be)g(received)144 451 y(set)f(plant)g(within)f(center;)57 b(#)19 b(Locations)d(of)j(plants)144 506 y(set)f(region;)312 b(#)19 b(Demand)e(regions)144 561 y(set)h(unit;)352 b(#)19 b(Productiv)o(e)e(units)144 603 y(set)h(proc;)352 b(#)19 b(Processes)144 658 y(set)f(nutr;)352 b(#)19 b(Nutrients)144 713 y(set)f(c_final;)292 b(#)19 b(Final)e(products)g(\(fertilize)o(rs)o(\)) 144 755 y(set)h(c_inter;)292 b(#)19 b(Intermedi)o(ate)d(products)144 796 y(set)i(c_ship)g(within)f(c_inter;)g(#)i(Intermedi)o(ate)o(s)d(for)j (shipment)144 838 y(set)f(c_raw;)332 b(#)19 b(Domestic)d(raw)j(materials)d (and)i(miscellaneo)o(us)e(inputs)144 893 y(set)i(commod)g(:=)h(c_final)e (union)g(c_inter)g(union)h(c_raw;)674 948 y(#)h(All)f(commoditie)o(s)144 1026 y(###)38 b(PARAMETERS)d(###)144 1094 y(param)18 b(cf75)g({region,c)o (_fi)o(na)o(l})e(>=)j(0;)674 1149 y(#)g(Consumpti)o(on)d(of)j(fertilizer)d (1974-75)h(\(1000)g(tons/year\))144 1216 y(param)h(fn)h({c_final)o(,nu)o(tr}) d(>=)j(0;)674 1272 y(#)g(Nutrient)d(content)h(of)i(fertilizer)o(s)144 1339 y(param)f(cn75)g({r)h(in)f(region,)f(n)j(in)e(nutr})g(:=)h(sum)f({c)h (in)g(c_final})e(cf75[r,c])f(*)j(fn[c,n];)674 1395 y(#)g(Consumpti)o(on)d(of) j(nutrients)d(1974-75)h(\(1000)h(tons/year)o(\))144 1462 y(param)g(road)g ({region,c)o(ent)o(er)o(})f(>=)h(0;)674 1517 y(#)h(Road)f(distances)144 1585 y(param)g(rail_half)e({plant,pl)o(ant)o(})g(>=)j(0;)144 1627 y(param)f(rail)g({p1)g(in)h(plant,)e(p2)i(in)g(plant})e(:=)222 1668 y(if)i(rail_half[)o(p1,)o(p2])d(>)j(0)g(then)f(rail_half[)o(p1,)o(p2)o (])f(else)h(rail_half)o([p2)o(,p)o(1];)674 1723 y(#)h(Interplan)o(t)e(rail)h (distances)e(\(kms\))144 1791 y(param)i(impd_barg)e({plant})h(>=)i(0;)144 1832 y(param)f(impd_road)e({plant})h(>=)i(0;)674 1888 y(#)g(Import)e (distances)f(\(kms\))i(by)h(barge)e(and)i(road)144 1955 y(param)f(tran_fina)o (l)e({pl)j(in)g(plant,)e(r)i(in)g(region})e(:=)419 1997 y(if)h(road[r,pl])e (>)j(0)h(then)e(.5)h(+)g(.0144)e(*)j(road[r,pl)o(])c(else)j(0;)144 2052 y(param)f(tran_impo)o(rt)e({r)j(in)g(region,)e(po)h(in)h(port})f(:=)419 2094 y(if)g(road[r,po])e(>)j(0)h(then)e(.5)h(+)g(.0144)e(*)j(road[r,po)o(])c (else)j(0;)144 2149 y(param)f(tran_inte)o(r)e({p1)j(in)g(plant,)e(p2)i(in)g (plant})e(:=)419 2190 y(if)h(rail[p1,p2])e(>)j(0)g(then)f(3.5)h(+)g(.03)f(*)i (rail[p1,p)o(2])c(else)i(0;)144 2246 y(param)g(tran_raw)e({pl)j(in)g(plant})e (:=)379 2287 y(\(if)i(impd_barg)o([pl)o(])d(>)k(0)f(then)f(1.0)g(+)i(.0030)d (*)j(impd_bar)o(g[p)o(l])c(else)i(0\))340 2329 y(+)h(\(if)g(impd_road)o([pl)o (])d(>)k(0)f(then)f(0.5)g(+)i(.0144)d(*)j(impd_roa)o(d[p)o(l])c(else)i(0\);) 674 2384 y(#)h(Transport)d(cost)i(\(le)g(per)h(ton\))f(for:)674 2425 y(#)58 b(final)18 b(products,)e(imported)g(final)i(products,)674 2467 y(#)58 b(interplant)16 b(shipment,)g(imported)g(raw)j(materials)144 2534 y(param)f(io)h({commod,)o(pro)o(c};)75 b(#)19 b(Input-out)o(put)d (coefficie)o(nts)144 2602 y(param)i(util)g({unit,pro)o(c})e(>=)j(0;)674 2644 y(#)g(Capacity)d(utilizatio)o(n)h(coefficie)o(nt)o(s)948 2768 y Fq(46)p eop %%Page: 45 20 bop 144 30 a Fg(w38)117 b(0.015)96 b(0.009)g(0.012)144 72 y(w39)117 b(0.007)96 b(0.017)g(0.022)144 113 y(w40)117 b(0.009)96 b(0.014)g(0.020)144 155 y(w41)117 b(0.003)96 b(0.014)g(0.011)144 196 y(w42)117 b(0.017)96 b(0.011)g(0.012)144 238 y(w43)117 b(0.009)96 b(0.013)g(0.011)144 279 y(w44)117 b(0.002)96 b(0.012)g(0.012)144 321 y(w45)117 b(0.016)96 b(0.025)g(0.028)144 362 y(w46)117 b(0.038)96 b(0.062)g(0.040)144 404 y(w47)117 b(0.007)96 b(0.010)g(0.010)144 445 y(w48)117 b(0.003)96 b(0.015)g(0.016)144 487 y(w49)117 b(0.005)96 b(0.016)g(0.017)144 528 y(w50)117 b(0.011)96 b(0.008)g(0.007)144 570 y(w51)117 b(0.010)96 b(0.022)g(0.021)144 611 y(w53)117 b(0.004)96 b(0.026)g(0.020)144 653 y(w54)117 b(0.020)96 b(0.017)g(0.025)144 694 y(w55)117 b(0.004)96 b(0.019)g(0.028)144 736 y(w56)117 b(0.004)96 b(0.010)g(0.008)144 777 y(w57)117 b(0.014)96 b(0.020)g(0.018)144 819 y(w59)117 b(0.012)96 b(0.006)g(0.007)144 860 y(w60)117 b(0.019)96 b(0.010)g(0.009)144 902 y(w61)117 b(0.028)96 b(0.010)g(0.012)144 943 y(w62)117 b(0.000)96 b(0.000)g(0.000)144 985 y(w63)117 b(0.070)96 b(0.027)g(0.037)144 1026 y(w64)117 b(0.009)96 b(0.004)g(0.005)144 1068 y(w65)117 b(0.022)96 b(0.015)g(0.016)144 1109 y(w66)117 b(0.046)96 b(0.017)g(0.020)144 1151 y(w68)117 b(0.005)96 b(0.012)g(0.016)144 1192 y(w69)117 b(0.085)96 b(0.036)g(0.039)144 1234 y(w71)117 b(0.011)96 b(0.013)g(0.010)144 1275 y(w72)117 b(0.089)96 b(0.031)g(0.034)144 1317 y(w75)117 b(0.026)96 b(0.012)g(0.010)144 1358 y(w77)117 b(0.001)96 b(0.004)g(0.002)144 1400 y(w78)117 b(0.002)96 b(0.004)g(0.002)144 1441 y(w79)117 b(0.001)96 b(0.004)g(0.002)144 1483 y(w80)117 b(0.001)96 b(0.001)g(0.002)144 1524 y(w81)117 b(0.001)96 b(0.003)g(0.002)144 1566 y(w83)117 b(0.009)96 b(0.010)g(0.008)144 1608 y(w84)117 b(0.001)96 b(0.002)g(0.002)144 1649 y(w85)117 b(0.001)96 b(0.004)g(0.005)144 1691 y(w86)117 b(0.001)96 b(0.002)g(0.002)144 1732 y(w87)117 b(0.002)96 b(0.003)g(0.000)144 1774 y(w89)117 b(0.001)96 b(0.001)g(0.002)144 1815 y(w90)117 b(0.006)96 b(0.017)g(0.013)144 1857 y(w91)117 b(0.002)96 b(0.010)g(0.013)144 1898 y(w92)117 b(0.000)96 b(0.003)g(0.002)144 1940 y(w93)117 b(0.002)96 b(0.006)g(0.007)144 1981 y(w95)117 b(0.001)96 b(0.007)g(0.007)144 2023 y(w96)117 b(0.000)96 b(0.000)g(0.000)144 2064 y(w98)117 b(0.006)96 b(0.005)g(0.002)76 b(;)144 2131 y(end;)948 2768 y Fq(45)p eop %%Page: 44 21 bop 144 30 a Fg(w66)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 72 y(w68)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 113 y(w69)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 155 y(w71)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 196 y(w72)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g (1)g(1)144 238 y(w73)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(0)144 279 y(w74)156 b(0)137 b(1)g(1)f(1)h(0)g(0)g(0)g(1)144 321 y(w75)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 362 y(w76)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(0)g(0)144 404 y(w77)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g (0)g(1)144 445 y(w78)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 487 y(w79)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 528 y(w80)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 570 y(w81)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 611 y(w82)156 b(1)137 b(0)g(1)f(1)h(1)g(1)g (1)g(0)144 653 y(w83)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(1)g(1)144 694 y(w84)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 736 y(w85)156 b(1)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 777 y(w86)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 819 y(w87)156 b(1)137 b(0)g(1)f(1)h(1)g(1)g (1)g(0)144 860 y(w89)156 b(1)137 b(0)g(1)f(1)h(1)g(1)g(0)g(1)144 902 y(w90)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 943 y(w91)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 985 y(w92)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 1026 y(w93)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g (0)g(1)144 1068 y(w94)156 b(0)137 b(0)g(1)f(1)h(1)g(0)g(1)g(1)144 1109 y(w95)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g(0)g(1)144 1151 y(w96)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(0)g(0)144 1192 y(w98)156 b(1)137 b(0)g(1)f(1)h(1)g(1)g(0)g(1)144 1234 y(x22)156 b(1)137 b(1)g(1)f(1)h(0)g(0)g(1)g(0)144 1275 y(x23)156 b(1)137 b(1)g(1)f(1)h(0)g(0)g (1)g(0)78 b(;)144 1343 y(param)18 b(ds)h(default)d(0.000)i(\(tr\))g(:)321 1397 y(18REG)96 b(24REG)g(24PRO)76 b(:=)144 1452 y(w01)117 b(0.000)96 b(0.000)g(0.008)144 1494 y(w02)117 b(0.004)96 b(0.000)g(0.000)144 1535 y(w03)117 b(0.000)96 b(0.000)g(0.000)144 1577 y(w04)117 b(0.010)96 b(0.002)g(0.000)144 1618 y(w05)117 b(0.000)96 b(0.000)g(0.000)144 1660 y(w06)117 b(0.010)96 b(0.008)g(0.008)144 1701 y(w08)117 b(0.030)96 b(0.024)g(0.024)144 1743 y(w09)117 b(0.014)96 b(0.018)g(0.020)144 1784 y(w12)117 b(0.014)96 b(0.012)g(0.010)144 1826 y(w14)117 b(0.007)96 b(0.007)g(0.012)144 1867 y(w15)117 b(0.010)96 b(0.019)g(0.018)144 1909 y(w17)117 b(0.013)96 b(0.010)g(0.011)144 1950 y(w19)117 b(0.015)96 b(0.012)g(0.009)144 1992 y(w20)117 b(0.012)96 b(0.021)g(0.022)144 2033 y(w21)117 b(0.000)96 b(0.000)g(0.000)144 2075 y(w24)117 b(0.012)96 b(0.022)g(0.018)144 2116 y(w25)117 b(0.019)96 b(0.025)g(0.020)144 2158 y(w26)117 b(0.006)96 b(0.015)g(0.021)144 2199 y(w27)117 b(0.008)96 b(0.010)g(0.015)144 2241 y(w28)117 b(0.011)96 b(0.016)g(0.019)144 2282 y(w29)117 b(0.008)96 b(0.020)g(0.013)144 2324 y(w30)117 b(0.011)96 b(0.013)g(0.015)144 2366 y(w31)117 b(0.011)96 b(0.013)g(0.017)144 2407 y(w32)117 b(0.006)96 b(0.000)g(0.000)144 2449 y(w33)117 b(0.000)96 b(0.015)g(0.014)144 2490 y(w34)117 b(0.008)96 b(0.007)g(0.005)144 2532 y(w35)117 b(0.002)96 b(0.006)g(0.014)144 2573 y(w36)117 b(0.015)96 b(0.013)g(0.005)144 2615 y(w37)117 b(0.017)96 b(0.016)g(0.015)948 2768 y Fq(44)p eop %%Page: 43 22 bop 144 30 a Fg(w95)97 b(5.82)77 b(3.29)g(6.55)g(7.06)57 b(11.47)96 b(.)137 b(.)117 b(7.83)144 72 y(w96)97 b(1.77)77 b(5.20)g(2.72)g(0.59)g(3.47) f(2.48)97 b(.)137 b(.)144 113 y(w98)97 b(3.04)77 b(1.92)g(3.64)g(3.70)g(4.90) f(3.05)97 b(.)117 b(3.88)144 155 y(x22)97 b(4.08)77 b(6.25)g(4.15)g(4.30)g (1.77)96 b(.)117 b(1.77)97 b(.)144 196 y(x23)g(3.39)77 b(5.74)g(3.55)g(4.08)g (1.69)96 b(.)117 b(1.47)97 b(.)117 b(;)144 263 y(param)18 b(msr)g(\(tr\))g(:) 321 318 y(w01)96 b(w02)h(w03)g(w04)g(w05)g(w62)g(w76)g(w96)77 b(:=)144 373 y(w01)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(1)g(0)144 414 y(w02)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(1)g(0)144 456 y(w03)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(1)g(0)144 498 y(w04)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(1)g(0)144 539 y(w05)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g (0)g(0)144 581 y(w06)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(1)g(1)144 622 y(w08)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(1)g(1)144 664 y(w09)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 705 y(w12)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(1)g(1)144 747 y(w14)156 b(1)137 b(1)g(1)f(1)h(1)g(0)g (0)g(1)144 788 y(w15)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 830 y(w17)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 871 y(w18)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 913 y(w19)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 954 y(w20)156 b(1)137 b(1)g(1)f(1)h(1)g(0)g (0)g(1)144 996 y(w24)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 1037 y(w25)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(1)g(0)144 1079 y(w26)156 b(1)137 b(1)g(1)f(0)h(1)g(1)g(0)g(1)144 1120 y(w27)156 b(1)137 b(1)g(1)f(0)h(1)g(1)g(0)g(1)144 1162 y(w28)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g(0)g(1)144 1203 y(w29)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g (0)g(1)144 1245 y(w30)156 b(1)137 b(1)g(1)f(0)h(1)g(1)g(0)g(1)144 1286 y(w31)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g(0)g(1)144 1328 y(w32)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(0)g(0)144 1369 y(w33)156 b(1)137 b(0)g(1)f(1)h(1)g(1)g(0)g(1)144 1411 y(w34)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g(0)g(1)144 1452 y(w35)156 b(1)137 b(1)g(1)f(1)h(1)g(0)g (0)g(1)144 1494 y(w36)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 1535 y(w37)156 b(1)137 b(1)g(1)f(0)h(1)g(1)g(0)g(1)144 1577 y(w38)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g(0)g(1)144 1618 y(w39)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 1660 y(w40)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g(0)g(1)144 1701 y(w41)156 b(1)137 b(0)g(1)f(1)h(1)g(0)g (0)g(1)144 1743 y(w42)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g(0)g(1)144 1784 y(w43)156 b(1)137 b(1)g(1)f(0)h(1)g(0)g(0)g(1)144 1826 y(w44)156 b(1)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 1867 y(w45)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 1909 y(w46)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(1)g(1)144 1950 y(w47)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g (0)g(1)144 1992 y(w48)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 2033 y(w49)156 b(1)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 2075 y(w50)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 2116 y(w51)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(1)g(1)144 2158 y(w53)156 b(1)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 2199 y(w54)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g (1)g(1)144 2241 y(w55)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(0)g(1)144 2282 y(w56)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 2324 y(w57)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 2366 y(w59)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 2407 y(w60)156 b(0)137 b(1)g(1)f(1)h(1)g(0)g(1)g(1)144 2449 y(w61)156 b(0)137 b(1)g(1)f(1)h(0)g(0)g (1)g(1)144 2490 y(w62)156 b(0)137 b(0)g(0)f(0)h(0)g(0)g(1)g(0)144 2532 y(w63)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)144 2573 y(w64)156 b(0)137 b(1)g(1)f(1)h(1)g(1)g(0)g(1)144 2615 y(w65)156 b(0)137 b(1)g(1)f(1)h(0)g(1)g(1)g(1)948 2768 y Fq(43)p eop %%Page: 42 23 bop 144 30 a Fg(w27)97 b(2.48)77 b(6.87)g(3.17)g(1.59)g(2.08)f(3.45)97 b(.)117 b(0.99)144 72 y(w28)97 b(2.05)77 b(6.83)g(2.97)g(1.13)g(2.91)96 b(.)137 b(.)117 b(1.26)144 113 y(w29)97 b(4.03)77 b(3.68)g(4.46)g(3.20)g (5.50)96 b(.)137 b(.)117 b(3.20)144 155 y(w30)97 b(2.48)77 b(5.78)g(2.99)g(2.24)g(1.79)f(3.10)97 b(.)117 b(1.39)144 196 y(w31)97 b(2.34)77 b(5.41)g(2.87)g(1.67)g(1.66)96 b(.)137 b(.)117 b(1.39)144 238 y(w32)77 b(14.36)96 b(.)137 b(.)g(.)g(.)g(.)g(.)g(.)144 279 y(w33)97 b(3.87)77 b(4.27)g(5.11)g(3.48)g(5.66)f(4.03)97 b(.)117 b(3.05)144 321 y(w34)97 b(3.26)77 b(4.80)g(3.21)g(2.70)g(4.14)96 b(.)137 b(.)117 b(1.77)144 362 y(w35)97 b(2.34)77 b(2.84)g(2.89)g(3.35)g (3.78)f(2.68)97 b(.)117 b(2.52)144 404 y(w36)97 b(2.43)77 b(5.69)g(2.96)g (2.95)g(1.02)f(2.61)h(1.07)g(2.54)144 445 y(w37)97 b(2.23)77 b(4.64)g(2.41)g(1.99)g(4.30)f(2.61)97 b(.)117 b(1.44)144 487 y(w38)97 b(4.66)77 b(4.36)g(5.23)g(3.04)g(4.46)96 b(.)137 b(.)117 b(3.82)144 528 y(w39)97 b(1.11)77 b(3.51)g(1.10)g(2.53)g(3.07)f(1.12)97 b(.)117 b(2.23)144 570 y(w40)97 b(2.99)77 b(4.78)g(4.23)g(1.57)g(3.92)96 b(.)137 b(.)117 b(1.80)144 611 y(w41)97 b(4.93)77 b(4.00)g(5.43)g(4.45)g (6.31)96 b(.)137 b(.)117 b(3.81)144 653 y(w42)97 b(3.86)77 b(6.55)g(5.03)g(2.11)g(4.41)96 b(.)137 b(.)117 b(2.63)144 694 y(w43)97 b(4.61)77 b(4.45)g(3.77)g(1.22)g(4.31)96 b(.)137 b(.)117 b(2.35)144 736 y(w44)97 b(2.05)77 b(4.48)g(1.06)g(3.70)g(3.46)f(1.10)97 b(.)117 b(3.21)144 777 y(w45)97 b(0.92)77 b(3.42)g(1.58)g(3.04)g(1.82)f(1.94) 97 b(.)117 b(2.52)144 819 y(w46)97 b(1.36)77 b(2.44)g(0.95)g(3.08)g(2.78)f (0.39)h(2.16)g(2.37)144 860 y(w47)97 b(1.30)77 b(3.39)g(1.60)g(2.49)g(4.29)f (2.04)97 b(.)117 b(1.68)144 902 y(w48)97 b(1.65)77 b(3.78)g(1.03)g(2.97)g (2.21)f(1.31)97 b(.)117 b(2.74)144 943 y(w49)97 b(1.96)77 b(3.00)g(1.50)g (3.24)g(3.68)f(1.00)97 b(.)117 b(2.99)144 985 y(w50)97 b(0.90)77 b(4.14)g(1.60)g(1.95)g(3.61)f(1.61)97 b(.)117 b(1.52)144 1026 y(w51)97 b(1.59)77 b(3.95)g(0.25)g(2.96)g(2.58)f(1.00)h(2.41)g(2.71)144 1068 y(w53)97 b(1.59)77 b(3.79)g(1.28)g(3.12)g(3.10)f(0.89)97 b(.)117 b(2.98)144 1109 y(w54)97 b(1.72)77 b(4.36)g(1.61)g(2.92)g(2.34)f (1.91)h(1.97)g(3.05)144 1151 y(w55)97 b(2.45)77 b(2.73)g(2.21)g(4.47)g(4.30)f (2.57)97 b(.)117 b(4.48)144 1192 y(w56)97 b(1.10)77 b(3.73)g(1.59)g(2.74)g (2.33)f(1.45)97 b(.)117 b(2.44)144 1234 y(w57)97 b(0.95)77 b(3.39)g(1.37)g(2.30)g(2.47)f(1.15)97 b(.)117 b(1.95)144 1275 y(w59)97 b(3.29)77 b(5.35)g(3.32)g(3.81)g(1.52)f(3.38)h(1.34)g(4.08)144 1317 y(w60)97 b(2.41)77 b(6.12)g(2.46)g(3.65)g(2.35)96 b(.)117 b(1.37)77 b(4.06)144 1358 y(w61)97 b(3.32)77 b(5.50)g(3.41)g(3.38)g(1.23)96 b(.)117 b(0.99)77 b(4.28)144 1400 y(w62)97 b(1.12)77 b(3.00)g(0.82)g(3.22)g (2.95)96 b(.)117 b(3.33)77 b(2.53)144 1441 y(w63)97 b(3.59)77 b(6.36)g(3.25)g(4.12)g(1.84)f(3.59)h(1.46)g(4.03)144 1483 y(w64)97 b(1.85)77 b(4.45)g(2.17)g(3.43)g(2.13)f(2.03)97 b(.)117 b(4.02)144 1524 y(w65)97 b(2.78)77 b(4.79)g(2.81)g(2.94)g(1.54)f(2.90)h(1.07)g(2.94)144 1566 y(w66)97 b(3.90)77 b(5.79)g(3.05)g(3.65)g(1.36)f(3.39)h(1.22)g(3.57)144 1608 y(w68)97 b(2.61)77 b(5.20)g(2.90)g(2.34)g(1.68)f(3.19)h(1.48)g(2.31)144 1649 y(w69)97 b(2.94)77 b(5.21)g(2.78)g(3.43)g(0.21)f(3.26)h(0.68)g(2.54)144 1691 y(w71)97 b(2.06)77 b(4.98)g(2.38)g(2.44)g(1.59)f(2.97)h(1.05)g(2.55)144 1732 y(w72)97 b(2.61)77 b(5.50)g(2.83)g(3.12)g(1.35)f(3.23)h(0.88)g(2.99)144 1774 y(w73)97 b(8.52)77 b(6.16)g(8.03)g(8.83)57 b(10.44)76 b(7.38)58 b(10.26)96 b(.)144 1815 y(w74)h(6.11)77 b(5.46)g(9.07)g(9.38)57 b(10.80)96 b(.)137 b(.)117 b(8.25)144 1857 y(w75)97 b(2.66)77 b(4.94)g(2.87)g(3.69)g(1.52)f(3.15)h(1.24)g(4.00)144 1898 y(w76)97 b(1.99)77 b(5.26)g(2.23)g(3.36)g(0.58)f(3.17)97 b(.)117 b(2.50)144 1940 y(w77)97 b(4.32)77 b(3.07)g(5.05)g(3.88)g(6.04)96 b(.)137 b(.)117 b(4.15)144 1981 y(w78)97 b(5.60)77 b(2.59)g(5.78)g(5.56)g(7.10)96 b(.)137 b(.)117 b(5.60)144 2023 y(w79)97 b(4.25)77 b(2.32)g(4.93)g(4.57)g (6.04)96 b(.)137 b(.)117 b(4.58)144 2064 y(w80)97 b(5.94)77 b(4.00)g(5.60)g(7.02)g(9.46)96 b(.)137 b(.)117 b(7.51)144 2106 y(w81)97 b(5.39)77 b(2.21)g(5.10)g(6.22)g(6.46)96 b(.)137 b(.)117 b(6.58)144 2147 y(w82)97 b(8.80)77 b(5.69)g(9.29)g(9.88)57 b(11.69)76 b(8.63)58 b(11.52)96 b(.)144 2189 y(w83)h(4.40)f(.)118 b(5.24)77 b(5.21)g(5.81)f(3.91)h(7.04)g(5.33)144 2230 y(w84)97 b(5.87)77 b(5.43)g(6.17)g(5.70)g(7.63)96 b(.)137 b(.)117 b(5.70)144 2272 y(w85)97 b(3.90)77 b(3.65)g(3.38)g(4.57)g(5.64)f(3.05)97 b(.)117 b(5.04)144 2313 y(w86)97 b(5.48)77 b(2.10)g(5.70)g(6.37)g(7.33)96 b(.)137 b(.)117 b(6.19)144 2355 y(w87)97 b(8.88)77 b(5.54)g(9.50)g(9.71)57 b(11.64)76 b(8.85)58 b(11.68)96 b(.)144 2396 y(w89)h(4.62)77 b(4.01)g(4.03)g(6.30)g(6.30)f(3.81)97 b(.)117 b(7.77)144 2438 y(w90)97 b(4.35)77 b(2.72)g(4.61)g(4.01)g(5.60)96 b(.)137 b(.)117 b(3.20)144 2479 y(w91)97 b(7.61)77 b(4.42)g(7.83)g(6.85)g(8.79)96 b(.)137 b(.)117 b(7.66)144 2521 y(w92)97 b(7.15)77 b(2.69)g(6.91)g(7.20)96 b(.)137 b(.)g(.)117 b(7.06)144 2562 y(w93)97 b(3.17)77 b(3.95)g(4.37)g(3.74)g (5.05)96 b(.)137 b(.)117 b(2.40)144 2604 y(w94)97 b(1.21)77 b(3.07)g(0.90)g(2.74)g(3.17)96 b(.)117 b(2.63)77 b(2.39)948 2768 y Fq(42)p eop %%Page: 41 24 bop 144 30 a Fg(set)18 b(fact)h(:=)f(w01)h(w05)f(w96)h(;)144 97 y(param)f(huge)g(:=)h(99.)f(;)144 152 y(param)g(rtmin)f(:=)i(0.0)g(;)144 194 y(param)f(rtmax)f(:=)i(8.0)g(;)144 248 y(param)f(otmin)f(:=)39 b(0.0)18 b(;)144 290 y(param)g(otmax)f(:=)i(96.0)f(;)144 357 y(param)g(rmin)37 b(:=)i(w01)18 b(0.00)58 b(w05)18 b(0.00)57 b(w96)19 b(0.00)f(;)144 399 y(param)g(rmax)37 b(:=)i(w01)18 b(3.00)58 b(w05)18 b(2.00)57 b(w96)19 b(3.00)f(;)144 454 y(param)g(omin)37 b(:=)i(w01)f(0.0)58 b(w05)38 b(0.0)57 b(w96)38 b(0.0)19 b(;)144 495 y(param)f(omax)37 b(:=)i(w01)18 b(48.0)58 b(w05)38 b(0.0)57 b(w96)19 b(48.0)f(;)144 550 y(param)g(hd)77 b(:=)39 b(w01)f(8.0)58 b(w05)38 b(8.0)57 b(w96)38 b(8.0)19 b(;)144 605 y(param)f(dp)77 b(:=)39 b(w01)18 b(19.0)58 b(w05)18 b(19.0)57 b(w96)19 b(19.0)f(;)144 672 y(param)g(wt)38 b(:=)h(18REG)e(47.3)77 b(24REG)37 b(63.0)77 b(24PRO)37 b(63.0)18 b(;)144 727 y(param)g(tc)38 b(:=)h(18REG)e(40.00)57 b(24REG)37 b(45.00)57 b(24PRO)37 b(45.00)18 b(;)144 781 y(param)g(dt)38 b(:=)h(18REG)17 b(376.0)77 b(24REG)17 b(172.4)77 b(24PRO)18 b(316.3)f(;)144 836 y(param)h(cpp)g(:=)39 b(18REG)17 b(102.)97 b(24REG)37 b(91.)97 b(24PRO)37 b(91.)19 b(;)144 903 y(param)f(dsr)g(:=)h(w01) f(96.)39 b(w02)18 b(96.)38 b(w03)18 b(96.)39 b(w04)18 b(96.)38 b(w05)19 b(96.)399 945 y(w62)f(96.)39 b(w76)18 b(96.)38 b(w96)18 b(96.)h(;)144 1012 y(param)f(pt)h(\(tr\))f(:)281 1067 y(18REG)96 b(24REG)h(24PRO)76 b(:=)144 1122 y(w01)h(1.194)96 b(1.429)h(1.429)144 1163 y(w05)77 b(1.194)96 b(1.509)h(1.509)144 1205 y(w96)77 b(0.000)96 b(1.600)h(1.600)76 b(;)144 1272 y(param)18 b(rpc)g(\(tr\))g(:)281 1327 y(18REG)96 b(24REG)h(24PRO)76 b(:=)144 1382 y(w01)h(2119.)116 b(2653.)96 b(2617.)144 1423 y(w05)77 b(2489.)116 b(3182.)96 b(3176.)144 1465 y(w96)136 b(0.)117 b(2925.)96 b(2918.)57 b(;)144 1532 y(param)18 b(opc)g(\(tr\))g(:)281 1587 y(18REG)96 b(24REG)h(24PRO)76 b(:=)144 1642 y(w01)h(2903.)96 b(3585.)h(3579.)144 1683 y(w05)136 b(0.)156 b(0.)g(0.)144 1725 y(w96)136 b(0.)97 b(3629.)g(3622.)76 b(;)144 1792 y(param)18 b(sc)38 b(default)17 b(99.99)h(\(tr\))g(:)321 1847 y(w01)96 b(w02)h(w03)g(w04)g(w05)g(w62)g(w76)g(w96)38 b(:=)144 1901 y(w01)117 b(.)g(2.97)77 b(1.14)g(2.08)g(2.37)f(1.26)h(2.42)g (1.43)144 1943 y(w02)97 b(4.74)f(.)118 b(4.17)77 b(6.12)g(7.41)f(3.78)h(7.04) g(5.21)144 1984 y(w03)97 b(2.45)77 b(4.74)96 b(.)118 b(3.67)77 b(2.84)f(0.90)h(2.41)g(2.55)144 2026 y(w04)97 b(1.74)77 b(5.03)g(2.43)96 b(.)118 b(3.19)76 b(2.45)h(2.69)g(0.58)144 2067 y(w05)97 b(2.70)77 b(5.16)g(2.84)g(2.85)96 b(.)117 b(3.26)77 b(3.34)g(2.71)144 2109 y(w06)97 b(1.99)77 b(4.17)g(2.13)g(2.19)g(2.52)f(2.06)h(2.00)g(1.51)144 2150 y(w08)97 b(0.21)77 b(2.92)g(1.24)g(2.07)g(2.29)f(1.25)h(2.32)g(1.55)144 2192 y(w09)97 b(0.66)77 b(3.76)g(1.41)g(2.47)g(1.82)f(1.66)97 b(.)117 b(1.87)144 2234 y(w12)97 b(1.38)77 b(3.83)g(1.68)g(2.53)g(2.39)96 b(.)117 b(1.96)77 b(1.94)144 2275 y(w14)97 b(2.47)77 b(1.58)g(2.40)g(3.59)g (3.85)f(2.25)97 b(.)117 b(3.05)144 2317 y(w15)97 b(1.06)77 b(4.95)g(2.48)g(1.39)g(3.41)f(1.96)97 b(.)117 b(1.02)144 2358 y(w17)97 b(0.88)77 b(3.39)g(1.46)g(2.00)g(2.67)f(1.45)97 b(.)117 b(1.46)144 2400 y(w18)97 b(7.90)77 b(6.57)g(7.79)g(9.59)57 b(10.81)96 b(.)137 b(.)117 b(6.70)144 2441 y(w19)97 b(1.42)77 b(4.12)g(1.96)g(1.99)g(3.52)f(1.88)97 b(.)117 b(1.26)144 2483 y(w20)97 b(3.03)77 b(1.59)g(2.34)g(4.76)g(3.98)f(1.88)97 b(.)117 b(3.73)144 2524 y(w24)97 b(1.58)77 b(2.80)g(2.27)g(2.87)g(3.19)f(1.31)97 b(.)117 b(2.05)144 2566 y(w25)97 b(1.51)77 b(5.05)g(2.74)g(0.57)g(2.98)96 b(.)117 b(2.95)77 b(0.27)144 2607 y(w26)97 b(1.75)77 b(3.61)g(2.70)g(1.54)g (4.07)f(3.52)97 b(.)117 b(1.03)948 2768 y Fq(41)p eop %%Page: 40 25 bop 144 30 a Fg(###)38 b(OBJECTIVE)e(###)144 97 y(minimize)17 b(cost:)37 b(sum)18 b({p)h(in)g(prd,)f(f)h(in)g(fact})f(rpc[p,f])e(*)k (Rprd[p,f)o(])d(+)458 139 y(sum)h({p)h(in)g(prd,)f(f)h(in)g(fact})f(opc[p,f]) e(*)k(Oprd[p,f)o(])d(+)458 180 y(sum)h({p)h(in)g(prd,)f(\(d,w\))g(in)h(rt})f (sc[d,w])f(*)i(wt[p])f(*)h(Ship[p,d,w)o(])d(+)458 222 y(sum)i({p)h(in)g(prd,) f(d)h(in)g(dctr})f(tc[p])f(*)j(Trans[p,d)o(];)615 277 y(#)f(Total)f(cost:)37 b(regular)17 b(productio)o(n,)f(overtime)615 318 y(#)j(productio)o(n,)d (shipping,)g(and)j(transship)o(men)o(t)144 396 y(###)38 b(CONSTRAINT)o(S)e (###)144 463 y(rtlim)18 b(\015regular-)o(ti)o(me)e(total)i(limits\015:)222 518 y(rtmin)g(<=)h(sum)f({p)h(in)g(prd,)f(f)h(in)g(fact})615 559 y(\(pt[p,f])d(*)j(Rprd[p,f]\))d(/)j(\(dp[f])f(*)h(hd[f]\))e(<=)i(rtmax;) 615 614 y(#)g(Total)f(crews)f(must)h(lie)h(between)e(limits)144 681 y(otlim)h(\015overtime)e(total)i(limits\015:)222 736 y(otmin)g(<=)h(sum)f ({p)h(in)g(prd,)f(f)h(in)g(fact})f(pt[p,f])f(*)i(Oprd[p,f])d(<=)j(otmax;)615 791 y(#)g(Total)f(overtime)e(must)i(lie)h(between)e(limits)144 858 y(rlim)h(\015regular-t)o(im)o(e)f(limits\015)g({f)h(in)h(fact}:)222 913 y(rmin[f])e(<=)i(sum)g({p)g(in)f(prd})615 955 y(\(pt[p,f])e(*)j (Rprd[p,f]\))d(/)j(\(dp[f])f(*)h(hd[f]\))e(<=)i(rmax[f];)615 1009 y(#)g(Crews)f(at)g(each)h(factory)d(must)j(lie)f(between)f(limits)144 1077 y(olim)h(\015overtime)e(limits\015)h({f)i(in)g(fact}:)222 1131 y(omin[f])e(<=)i(sum)g({p)g(in)f(prd})g(pt[p,f])f(*)j(Oprd[p,f)o(])d(<=) i(omax[f];)615 1186 y(#)g(Overtime)d(at)j(each)f(factory)f(must)h(lie)h (between)e(limits)144 1253 y(noRprd)g(\015no)i(regular)e(productio)o(n\015)f ({p)j(in)g(prd,)f(f)h(in)g(fact:)f(rpc[p,f])e(=)j(0}:)222 1308 y(Rprd[p,f])e(=)i(0;)144 1363 y(noOprd)e(\015no)i(overtime)d(production)o (\015)h({p)h(in)h(prd,)f(f)i(in)e(fact:)g(opc[p,f])f(=)i(0}:)222 1418 y(Oprd[p,f])e(=)i(0;)117 b(#)19 b(Do)g(not)f(produce)f(where)h (specified)e(cost)i(is)h(zero)144 1485 y(bal)f(\015material)f(balance\015)f ({p)j(in)g(prd,)f(w)h(in)g(whse}:)222 1540 y(sum)g({\(v,w\))e(in)i(rt})281 1581 y(Ship)f([p,v,w])f(+)j(\(if)e(w)h(in)g(fact)f(then)g(Rprd[p,w])e(+)k (Oprd[p,w)o(]\))c(=)222 1636 y(dem[p,w])h(+)i(\(if)g(w)g(in)g(dctr)f(then)g (sum)g({\(w,v\))g(in)g(rt})h(Ship[p,w,)o(v]\))o(;)615 1691 y(#)g(Demand)e(is)i(satisfied)d(by)j(shipment)e(into)h(warehouse)615 1732 y(#)h(plus)f(production)e(\(if)i(it)h(is)g(a)g(factory\))615 1774 y(#)g(minus)f(shipment)e(out)j(\(if)f(it)h(is)g(a)g(distn.)e(center\)) 144 1841 y(trdef)h(\015transshi)o(pm)o(ent)e(definitio)o(n\015)g({p)j(in)g (prd,)f(d)h(in)g(dctr}:)222 1896 y(Trans[p,d])d(>=)j(sum)g({\(d,w\))e(in)i (rt})f(Ship)g([p,d,w])f(-)497 1938 y(\(if)i(d)g(in)g(fact)f(then)g(Rprd[p,d]) e(+)j(Oprd[p,d]\))o(;)615 1992 y(#)g(Transship)o(men)o(t)e(at)h(a)i (distribut)o(io)o(n)d(center)g(is)615 2034 y(#)i(shipments)d(out)j(less)f (productio)o(n)e(\(if)j(any\))144 2111 y(###)38 b(DATA)18 b(--)h(3)g (PRODUCTS)36 b(###)144 2179 y(data;)144 2234 y(set)18 b(prd)h(:=)g(18REG)e (24REG)h(24PRO)g(;)144 2288 y(set)g(whse)h(:=)f(w01)h(w02)f(w03)h(w04)f(w05)h (w06)f(w08)h(w09)f(w12)g(w14)h(w15)f(w17)379 2330 y(w18)h(w19)f(w20)h(w21)f (w24)h(w25)f(w26)h(w27)f(w28)g(w29)h(w30)f(w31)379 2371 y(w32)h(w33)f(w34)h (w35)f(w36)h(w37)f(w38)h(w39)f(w40)g(w41)h(w42)f(w43)379 2413 y(w44)h(w45)f(w46)h(w47)f(w48)h(w49)f(w50)h(w51)f(w53)g(w54)h(w55)f(w56)379 2454 y(w57)h(w59)f(w60)h(w61)f(w62)h(w63)f(w64)h(w65)f(w66)g(w68)h(w69)f(w71) 379 2496 y(w72)h(w73)f(w74)h(w75)f(w76)h(w77)f(w78)h(w79)f(w80)g(w81)h(w82)f (w83)379 2537 y(w84)h(w85)f(w86)h(w87)f(w89)h(w90)f(w91)h(w92)f(w93)g(w94)h (w95)f(w96)379 2579 y(w98)h(x22)f(x23)h(;)144 2634 y(set)f(dctr)h(:=)f(w01)h (w02)f(w03)h(w04)f(w05)h(w62)f(w76)h(w96)f(;)948 2768 y Fq(40)p eop %%Page: 39 26 bop 144 30 a Fg(###)38 b(PRODUCT)17 b(SETS)h(AND)h(PARAMETE)o(RS)36 b(###)144 97 y(set)18 b(prd)h(\015products)o(\015;)95 b(#)19 b(Elements)d(of)j(the)g(product)e(group)144 165 y(param)h(wt)h (\015weight\015)d({prd})i(>)h(0;)615 219 y(#)g(Weight)e(in)i(100)g(lb)f(/)i (1000)e(cases)144 287 y(param)g(cpp)g(\015cases)f(per)i(pallet\015)e({prd})g (>)j(0;)615 341 y(#)f(Cases)f(of)g(product)f(per)i(shipping)d(pallet)144 409 y(param)i(tc)h(\015transsh)o(ipm)o(ent)d(cost\015)h({prd})h(>=)h(0;)615 463 y(#)g(Transship)o(men)o(t)e(cost)h(in)g($)i(/)f(1000)f(cases)144 531 y(param)g(pt)h(\015product)o(ion)d(time\015)i({prd,fac)o(t})e(>=)j(0;)615 586 y(#)g(Crew-hour)o(s)e(to)i(produce)d(1000)j(cases)144 653 y(param)f(rpc)g(\015regular-t)o(ime)e(productio)o(n)g(cost\015)i({prd,fact})e (>=)j(0;)615 708 y(#)g(Cost)f(of)h(productio)o(n)e(on)h(regular)f(time,)615 749 y(#)i(in)g($)g(/)g(1000)f(cases)144 816 y(param)g(opc)g(\015overtime)e (production)g(cost\015)i({prd,fact)o(})e(>=)j(0;)615 871 y(#)g(Cost)f(of)h (productio)o(n)e(on)h(overtime,)f(in)h($)i(/)f(1000)f(cases)144 949 y(###)38 b(DEMAND)17 b(SETS)h(AND)h(PARAMETER)o(S)36 b(###)144 1016 y(param)18 b(dt)h(\015total)e(demand\015)g({prd})g(>=)i(0;)615 1071 y(#)g(Total)f(demands)f(for)h(products,)e(in)j(1000s)144 1138 y(param)f(ds)h(\015demand)d(shares\015)h({prd,whse})f(>=)j(0.0,)f(<=)h (1.0;)615 1193 y(#)g(Historica)o(l)e(demand)g(data,)h(from)g(which)f(each)615 1234 y(#)i(warehouse)o(\015s)d(share)i(of)h(total)f(demand)f(is)i(deduced)144 1302 y(param)f(dstot)f({p)i(in)g(prd})f(:=)h(sum)f({w)h(in)g(whse})f (ds[p,w];)615 1356 y(#)h(Total)f(of)g(demand)g(shares;)f(should)g(be)i(1,)g (but)f(often)g(isn\015t)144 1424 y(param)g(dem)g(\015demand\015)f({p)i(in)f (prd,)g(w)i(in)e(whse})g(:=)h(dt[p])f(*)h(ds[p,w])e(/)i(dstot[p];)615 1478 y(#)g(Projected)d(demands)h(to)i(be)g(satisfied)o(,)d(in)j(1000s)144 1546 y(set)f(rt)h(\015shipping)d(routes)i(available)o(\015)e(:=)164 1600 y({d)i(in)h(dctr,)f(w)h(in)g(whse:)321 1642 y(d)g(<>)g(w)38 b(and)h(sc[d,w])16 b(<)k(huge)37 b(and)321 1683 y(\(w)18 b(in)h(dctr)f(or)h (sum)g({p)f(in)h(prd})f(dem[p,w])f(>)i(0\))39 b(and)321 1725 y(not)18 b(\(msr[d,w])e(and)j(sum)f({p)h(in)g(prd})f(1000*dem[)o(p,w)o(]/)o (cpp)o([p)o(])f(<)i(dsr[d]\))e(};)615 1780 y(#)i(List)f(of)h(ordered)e(pairs) g(that)i(represen)o(t)e(routes)615 1821 y(#)i(on)g(which)e(shipments)g(are)h (allowed)144 1899 y(###)38 b(VARIABLES)e(###)144 1966 y(var)18 b(Rprd)h(\015regular)o(-ti)o(me)d(production)o(\015)g({prd,fact})g(>=)j(0;) 615 2021 y(#)g(Regular-t)o(ime)d(productio)o(n)h(of)i(each)f(product)615 2062 y(#)h(at)g(each)f(factory,)e(in)j(1000s)f(of)h(cases)144 2130 y(var)f(Oprd)h(\015overtim)o(e)e(productio)o(n\015)f({prd,fact})g(>=)j (0;)615 2185 y(#)g(Overtime)d(production)g(of)j(each)f(product)615 2226 y(#)h(at)g(each)f(factory,)e(in)j(1000s)f(of)h(cases)144 2293 y(var)f(Ship)h(\015shipmen)o(ts\015)d({prd,rt})g(>=)j(0;)615 2348 y(#)g(Shipments)d(of)j(each)f(product)f(on)i(each)f(allowed)f(route,)615 2390 y(#)i(in)g(1000s)e(of)i(cases)144 2457 y(var)f(Trans)g(\015transship)o (men)o(ts)o(\015)f({prd,dct)o(r})f(>=)j(0;)615 2512 y(#)g(Transship)o(men)o (ts)d(of)j(each)f(product)f(at)i(each)615 2553 y(#)g(distribut)o(ion)d (center,)h(in)i(1000s)e(of)i(cases)948 2768 y Fq(39)p eop %%Page: 38 27 bop 144 30 a Fr(App)r(endix)18 b(A.)42 b Fa(DIST)p Fr(,)17 b(a)i(pro)r(duct)f(distribution)f(mo)r(del)206 109 y Fq(This)g(mo)q(del)e (determines)h(a)h(pro)q(duction)f(and)g(distribution)g(plan)g(to)h(meet)f (giv)o(en)g(demands)f(for)144 159 y(a)f(set)i(of)e(go)q(o)q(ds.)19 b(The)c(form)o(ulation)d(is)i(motiv)n(ated)f(b)o(y)h(the)h(exp)q(eriences)i (of)d(a)g(large)g(pro)q(ducer)i(in)e(the)144 209 y(United)g(States.)19 b(The)14 b(data)g(are)g(for)g(a)f(set)i(of)f(three)h(pro)q(ducts.)144 308 y Fg(###)38 b(SHIPPING)17 b(SETS)h(AND)g(PARAMETERS)35 b(###)144 375 y(set)18 b(whse)h(\015warehou)o(ses)o(\015;)36 b(#)19 b(Locations)d(from)i(which)g(demand)f(is)i(satisfied)144 430 y(set)f(dctr)h(\015distrib)o(uti)o(on)d(centers\015)h(within)g(whse;)615 485 y(#)i(Locations)d(from)i(which)g(product)f(may)h(be)h(shipped)144 552 y(param)f(sc)h(\015shippin)o(g)e(cost\015)g({dctr,whse)o(})g(>=)i(0;)615 607 y(#)g(Shipping)d(costs,)i(to)h(whse)f(from)g(dctr,)f(in)i($)h(/)f(100)f (lb)144 674 y(param)g(huge)g(\015largest)e(shipping)h(cost\015)g(>)j(0;)615 729 y(#)f(Largest)e(cost)h(allowed)f(for)h(a)i(usable)d(shipping)f(route)144 796 y(param)i(msr)g(\015minimum)f(size)h(restricti)o(on)o(\015)f({dctr,whs)o (e})f(logical;)615 851 y(#)j(True)f(indicates)e(a)j(minimum-siz)o(e)d (restriction)g(on)615 893 y(#)j(direct)e(shipments)f(using)i(this)g(dctr)g (-->)h(whse)f(route)144 960 y(param)g(dsr)g(\015direct)f(shipment)g(requirem) o(ent)o(\015)g({dctr})g(>=)i(0;)615 1015 y(#)g(Minimum)e(total)h(demand,)e (in)j(pallets,)e(needed)g(to)615 1056 y(#)i(allow)f(shipment)e(on)j(routes)e (subject)g(to)i(the)615 1098 y(#)g(minimum)e(size)h(restricti)o(on)144 1175 y(###)38 b(PLANT)18 b(SETS)g(AND)g(PARAMETERS)36 b(###)144 1243 y(set)18 b(fact)h(\015factori)o(es\015)d(within)h(dctr;)615 1297 y(#)i(Locations)d(where)i(product)f(is)i(manufact)o(ure)o(d)144 1365 y(param)f(rtmin)f(\015regular-ti)o(me)f(total)i(minimum\015)e(>=)j(0;) 615 1419 y(#)g(Lower)f(limit)f(on)i(\(average\))d(total)i(regular-ti)o(me)615 1461 y(#)h(crews)f(employed)e(at)j(all)f(factories)144 1528 y(param)g(rtmax)f(\015regular-ti)o(me)f(total)i(maximum\015)e(>=)j(rtmin;)615 1583 y(#)g(Upper)f(limit)f(on)i(\(average\))d(total)i(regular-ti)o(me)615 1625 y(#)h(crews)f(employed)e(at)j(all)f(factories)144 1692 y(param)g(otmin)f(\015overtime)g(total)g(minimum\015)g(>=)i(0;)615 1747 y(#)g(Lower)f(limit)f(on)i(total)f(overtime)e(hours)i(at)h(all)f (factories)144 1814 y(param)g(otmax)f(\015overtime)g(total)g(maximum\015)g (>=)i(otmin;)615 1869 y(#)g(Upper)f(limit)f(on)i(total)f(overtime)e(hours)i (at)h(all)f(factories)144 1936 y(param)g(rmin)g(\015regular-)o(tim)o(e)e (minimums\015)g({fact})i(>=)h(0;)615 1991 y(#)g(Lower)f(limits)f(on)i (\(average\))d(regular-t)o(ime)g(crews)144 2058 y(param)i(rmax)g (\015regular-)o(tim)o(e)e(maximums\015)g({f)j(in)g(fact})f(>=)h(rmin[f];)615 2113 y(#)g(Upper)f(limits)f(on)i(\(average\))d(regular-t)o(ime)g(crews)144 2180 y(param)i(omin)g(\015overtime)e(minimums\015)g({fact})h(>=)i(0;)615 2235 y(#)g(Lower)f(limits)f(on)i(overtime)d(hours)144 2302 y(param)i(omax)g(\015overtime)e(maximums\015)g({f)j(in)g(fact})e(>=)i (omin[f];)615 2357 y(#)g(Upper)f(limits)f(on)i(overtime)d(hours)144 2424 y(param)i(hd)h(\015hours)e(per)h(day\015)g({fact})g(>=)g(0;)615 2479 y(#)h(Regular-t)o(ime)d(hours)i(per)g(working)f(day)144 2546 y(param)h(dp)h(\015days)e(in)i(period\015)e({fact})g(>)i(0;)615 2601 y(#)g(Working)e(days)h(in)h(the)f(current)f(planning)g(period)948 2768 y Fq(38)p eop %%Page: 37 28 bop 144 30 a Fq(b)q(e)19 b(callable)f(from)f(the)j(system)f(that)f(manages)g (the)i(data.)32 b(Then)20 b(AMPL)f(mo)q(dels)e(migh)o(t)g(b)q(e)j(de-)144 80 y(\014ned,)14 b(solv)o(ed)f(and)g(analyzed)g(en)o(tirely)g(within)g(a)g (database)h(or)f(spreadsheet)j(en)o(vironmen)o(t.)g(P)o(ossibly)144 130 y(database)11 b(soft)o(w)o(are)g(could)g(serv)o(e)h(to)f(main)o(tain)d(m) o(ultiple)h(v)o(ersions)i(of)f(a)h(mo)q(del)f(that)h(use)g(similar)e(data,) 144 180 y(as)14 b(w)o(ell)f(as)h(m)o(ultiple)e(v)o(ersions)i(of)f(data)h(for) f(similar)f(mo)q(dels)h(\(see)i(also)e(Dolk)g(1986\).)206 246 y(Algorithm)j(con)o(trol)j(is)f(another)h(activit)o(y)f(with)g(whic)o(h)g (the)h(language)f(could)g(b)q(e)h(more)f(closely)144 296 y(in)o(tegrated.)28 b(Con)o(trol)17 b(soft)o(w)o(are)g(could)g(allo)o(w)f(for)h(links)f(b)q(et)o (w)o(een)j(mo)q(dels,)d(as)h(in)g(curren)o(t)i(systems)144 346 y(lik)o(e)c(GAMS,)g(so)h(that)g(v)n(ariables)f(from)g(one)h(mo)q(del)e(b) q(ecome)i(parameters)g(to)g(another.)24 b(As)17 b(another)144 395 y(example,)10 b(a)i(p)q(ostoptimal)d(parametric)i(analysis)g(migh)o(t)e (b)q(e)j(conducted)h(b)o(y)f(simply)d(giving)i(the)h(names)144 445 y(of)h(AMPL)h(parameters)g(to)g(b)q(e)h(v)n(aried)e(\(and)h(their)g (relativ)o(e)g(rates)h(of)e(v)n(ariation,)f(if)h(di\013eren)o(t\).)206 512 y(Finally)m(,)d(w)o(e)i(are)h(activ)o(ely)e(dev)o(eloping)h(extensions)h (to)e(the)i(AMPL)f(language)f(itself.)17 b(F)m(or)12 b(the)h(v)o(ery)144 561 y(common)j(case)k(of)e(net)o(w)o(ork)g(structures)k(in)c(linear)g (programs,)g(w)o(e)h(ha)o(v)o(e)g(pro)o(vided)f Ff(arc)g Fq(and)h Ff(node)144 611 y Fq(declarations)13 b(that)g(corresp)q(ond)h(to)f(familia)o (r)e(descriptions)i(of)g(net)o(w)o(ork-\015o)o(w)f(v)n(ariables)g(and)h (balance-)144 661 y(of-\015o)o(w)j(constrain)o(ts,)i(resp)q(ectiv)o(ely)m(.) 29 b(F)m(or)16 b(the)i(con)o(v)o(ex)f(piecewise)i(linear)d(terms)h(that)g (often)h(app)q(ear)144 711 y(in)d(the)i(ob)r(jectiv)o(e)f(of)f(an)h (otherwise)g(linear)f(program,)g(w)o(e)h(ha)o(v)o(e)f(dev)o(elop)q(ed)i(a)e (syn)o(tax)h(that)f(p)q(ermits)144 761 y(sp)q(eci\014cation)g(of)e(successiv) o(e)j(slop)q(es)f(and)e(breakp)q(oin)o(ts.)206 827 y(W)m(e)e(can)h(also)f (easily)f(extend)j(the)f(language)e(to)i(more)e(general)i(kinds)f(of)g (mathematical)d(programs.)144 877 y(T)m(o)16 b(accommo)q(date)f(nonlinear)i (programs,)f(virtually)g(no)g(c)o(hange)i(in)e(the)i(AMPL)g(syn)o(tax)f(has)g (b)q(een)144 927 y(necessary;)22 b(only)17 b(a)h(mo)q(derate)g(increase)h(in) f(the)h(translator's)f(complexit)o(y)e(has)i(b)q(een)h(required,)h(to)144 977 y(pro)o(vide)d(for)g(pro)q(cessing)h(of)f(nonlinear)g(expressions)i(and)e (for)g(pro)q(duction)g(of)g(an)g(output)g(that)h(can)144 1026 y(b)q(e)c(read)g(b)o(y)g(nonlinear)f(optimizers.)k(W)m(e)c(exp)q(ect)j(no)d (greater)i(di\016cult)o(y)e(in)g(accommo)q(dating)d(certain)144 1076 y(common)h(constructs)k(of)e(discrete)i(optimization,)10 b(suc)o(h)k(as)g(in)o(tegralit)o(y)e(constrain)o(ts)i(and)g(\014xed)f(costs,) 144 1126 y(that)h(ha)o(v)o(e)g(natural)f(represen)o(tations)j(within)d(an)h (algebraic)f(mo)q(del.)144 1292 y Fr(Ac)n(kno)n(wledgemen)n(ts)206 1371 y Fq(W)m(e)20 b(are)g(grateful)f(to)g(Gary)g(Cramer,)h(Stan)g(Hendryx,)h (Adrian)f(Kester,)i(Doug)d(McIlro)o(y)m(,)h(and)144 1421 y(Hai-Ping)13 b(W)m(u,)f(who)i(ha)o(v)o(e)g(pro)o(vided)f(us)i(with)e(v)n(aluable)g (suggestions)h(and)g(test)h(problems.)948 2768 y(37)p eop %%Page: 36 29 bop 206 30 a Fk(\017)21 b Fq(Dummi)o(es)12 b(are)i(widely)g(used)g(b)o(y)g (mo)q(delers)f(in)h(writing)f(algebraic)g(expressions.)206 110 y Fk(\017)21 b Fq(Complex)9 b(expressions)j(required)f(b)o(y)f (large-scale)h(mo)q(dels)e(remain)g(easy)i(to)g(write)g(using)f(dumm)o(y)248 160 y(indices,)k(but)g(are)g(often)g(quite)g(a)o(wkw)o(ard)f(to)h(write)g (without)g(them.)144 253 y(Examples)i(of)g(common)f(complexities)h(include)h (dumm)o(y)d(indices)j(used)h(in)f(set)h(and)f(arithmetic)f(ex-)144 302 y(pressions,)308 385 y Fg(izero)i({p)g(in)h(prd,)f(v)h(in)g(1..life-1,)d (a)j(in)g(v+1..life})o(:)e(Inv[p,fi)o(rst)o(+v)o(-1,)o(a])f(=)j(0;)144 468 y Fq(and)14 b(in)f(logical)f(expressions)k(to)d(qualify)g(an)g(indexing)h (set:)308 551 y Fg(noRprd)j({p)i(in)g(prd,)f(f)h(in)g(fact:)f(rpc[p,f])e(=)j (0}:)g(Rprd[p,f])d(=)j(0;)144 634 y Fq(Dumm)o(y)11 b(indices)j(are)g(also)g (essen)o(tial)g(to)g(e\013ectiv)o(e)h(use)g(of)f(the)g(v)n(ariet)o(y)g(of)f (comp)q(ound)g(sets)i(discussed)144 684 y(in)c(Section)i(2.)k(W)m(e)11 b(migh)o(t)f(ha)o(v)o(e)i(c)o(hosen)h(to)f(mak)o(e)e(dummies)g(optional)g(in) i(AMPL,)f(so)h(that)g(subscripts)144 734 y(could)i(b)q(e)h(either)g(the)g (names)f(of)g(sets)h(or)g(the)g(names)e(of)h(indices)h(declared)g(to)g(run)f (o)o(v)o(er)h(sets;)g(but)g(w)o(e)144 784 y(felt)g(that)g(the)h(con)o(v)o (enience)h(of)d(a)o(v)o(oiding)g(dumm)o(y)e(indices)k(in)f(some)f (expressions)j(w)o(ould)d(b)q(e)i(greatly)144 834 y(out)o(w)o(eighed)e(b)o(y) f(the)i(confusion)e(of)h(allo)o(wing)d(t)o(w)o(o)j(di\013eren)o(t)h(con)o(v)o (en)o(tions.)206 900 y(AMPL)j(also)e(di\013ers)i(from)e(widely)g(used)i(mo)q (deling)d(languages)i(in)g(the)g(relational,)g(logical)e(and)144 950 y(conditional)e(op)q(erators)i(that)f(it)g(pro)o(vides,)g(and)g(in)f(the) i(set)g(and)f(arithmetic)f(expressions)j(that)e(it)g(al-)144 1000 y(lo)o(ws.)i(Man)o(y)10 b(of)g(these)i(di\013erences)g(are)f(in)o (tended)g(to)f(mak)o(e)f(AMPL)i(more)e(familiar)e(in)j(its)h(resem)o(blance) 144 1050 y(to)i(algebraic)g(notation)g(and)h(more)e(p)q(o)o(w)o(erful)h(in)g (its)h(abilit)o(y)e(to)h(describ)q(e)j(complex)c(constrain)o(ts.)19 b(The)144 1099 y(success)i(of)c(particular)i(design)f(elemen)o(ts)g(will)f (ultimately)f(ha)o(v)o(e)i(to)g(b)q(e)h(judged,)g(ho)o(w)o(ev)o(er,)g(b)o(y)f (the)144 1149 y(reactions)d(of)e(individual)f(users.)206 1216 y(New)o(er)j(languages)e(under)h(dev)o(elopmen)o(t)e(ma)o(y)g(b)q(e)i(closer) g(to)f(AMPL)h(in)f(some)f(asp)q(ects)j(of)e(design.)144 1265 y(F)m(or)g(example,)g(SML)g(\(Geo\013rion)h(1988\))f(also)g(enforces)j(the)e (indep)q(endence)i(of)e(mo)q(del)e(and)i(data.)144 1382 y Fo(7.2)36 b(F)l(urther)14 b(dev)o(elopmen)n(t)206 1448 y Fq(W)m(e)j(ha)o(v)o(e)g (con\014ned)h(the)f(ab)q(o)o(v)o(e)g(comparisons)f(to)h(the)g Fp(languages)h Fq(that)f(are)h(used)f(b)o(y)g(computer)144 1498 y(systems)d(for)g(linear)g(programming.)i(Y)m(et)e(all)f(of)h(the)h (successful)h(languages)e(are)g(supplied)h(as)f(part)h(of)144 1548 y(in)o(tegrated)f(systems,)f(whic)o(h)g(pro)o(vide)h(other)g (facilities|for)d(solving)h(linear)h(programs,)f(for)h(manipu-)144 1598 y(lating)8 b(data,)i(and)f(for)g(rep)q(orting)h(solutions|that)f(can)g (b)q(e)h(as)g(imp)q(ortan)o(t)e(to)h(users)i(as)f(the)g(con)o(v)o(enience)144 1647 y(of)15 b(an)o(y)g(mo)q(deling)f(language.)22 b(Indeed,)17 b(there)g(is)f(considerable)g(in)o(terest)h(in)e(soft)o(w)o(are)h(that)g(pro) o(vides)144 1697 y(an)g(in)o(terface)i(b)q(et)o(w)o(een)f(linear)g(programmi) o(ng)c(and)k(existing)f(mo)q(deling)f(systems)h(whose)h(languages)144 1747 y(w)o(ere)12 b(dev)o(elop)q(ed)f(for)g(other)g(purp)q(oses.)19 b(Examples)10 b(are)h(What's)f(Best)j(\(General)e(Optimization)d(1986\),)144 1797 y(whic)o(h)15 b(w)o(orks)g(with)f(1{2{3)g(spreadsheets,)j(and)e (IFPS/OPTIMUM)g(\(Ro)o(y)m(,)f(Lasdon)g(and)h(Lordeman)144 1847 y(1986\))e(within)g(the)i(IFPS)f(planning)f(system.)206 1913 y(In)k(dev)o(eloping)e(AMPL,)h(w)o(e)h(ha)o(v)o(e)f(initially)d(concen)o (trated)18 b(on)e(the)h(language's)f(design)g(and)g(im-)144 1963 y(plemen)o(tation.)k(Th)o(us)c(w)o(e)f(ha)o(v)o(e)h(c)o(hosen)g(to)f (emplo)o(y)e(the)j(simplest)e(practicable)i(in)o(terfaces)g(to)f(other)144 2013 y(systems.)i(Our)c(translator)e(accepts)j(tabular)d(data)g(input)h(that) f(can)h(b)q(e)g(prepared)h(b)o(y)f(an)o(y)f(text)h(editor,)144 2062 y(and)k(its)h(output)g(pro)o(vides)g(the)g(information)d(needed)k(b)o(y) e(most)g(LP)h(optimizers;)f(no)h(sp)q(ecial)g(pro)o(vi-)144 2112 y(sion)d(is)g(made)f(for)h(main)o(taining)d(di\013eren)o(t)k(v)o (ersions)g(of)f(data)g(and)g(mo)q(dels,)f(or)h(for)g(examination)e(and)144 2162 y(displa)o(y)h(of)g(the)i(solutions.)206 2228 y(W)m(e)e(en)o(vision,)g (ho)o(w)o(ev)o(er,)g(that)g(further)i(dev)o(elopmen)o(t)d(of)h(AMPL)h(soft)o (w)o(are)f(will)f(pro)o(vide)h(a)g(closer)144 2278 y(in)o(tegration)f(of)g (the)h(language)f(with)g(other)i(parts)f(of)f(the)h(mo)q(deling)e(en)o (vironmen)o(t.)16 b(W)m(e)d(ha)o(v)o(e)f(already)144 2328 y(men)o(tioned)19 b(in)h(Section)g(5)g(that,)h(as)f(a)g(start,)i(an)o(y)e(database)g(or)g (spreadsheet)i(could)e(b)q(e)h(used)g(to)144 2378 y(generate)f(data)f(in)f (our)h(standard)g(format.)32 b(As)19 b(a)f(mo)q(dest)h(further)h(step,)g(the) g(AMPL)f(translator)144 2428 y(could)13 b(b)q(e)i(mo)q(di\014ed)d(to)h(read)i (directly)f(from)d(database)j(or)g(spreadsheet)i(\014les,)e(and)f(a)g (supplemen)o(tary)144 2478 y(pro)q(cessor)k(could)d(b)q(e)i(designed)f(to)g (write)g(the)h(optimal)c(primal)g(and)j(dual)f(v)n(alues)h(bac)o(k)g(to)f (the)i(same)144 2527 y(\014les.)i(Standard)c(soft)o(w)o(are)f(could)g(then)h (serv)o(e)h(as)e(a)g(to)q(ol)g(for)g(examining)e(and)i(rep)q(orting)h (solutions)f(as)144 2577 y(w)o(ell)g(as)h(for)g(managing)d(data.)206 2644 y(A)17 b(more)e(am)o(bitious)f(plan)i(w)o(ould)g(mo)q(dify)e(b)q(oth)i (the)h(AMPL)g(translator)g(and)f(an)g(LP)h(solv)o(er)f(to)948 2768 y(36)p eop %%Page: 35 30 bop 144 30 a Fq(to)16 b(giv)o(e)g(its)h(nonzero)g(v)n(alues.)26 b(In)16 b(con)o(trast,)i(AMPL)f(is)f(designed)h(so)g(that)f(the)i (parameter's)e(name,)144 80 y(indexing)d(and)h(other)g(c)o(haracteristics)i (are)e(declared)h(in)f(the)g(mo)q(del,)308 163 y Fg(param)k(rail_hal)o(f)f ({plant,pl)o(an)o(t})f(>=)j(0;)144 246 y Fq(while)13 b(the)i(literal)e(n)o (umerical)f(v)n(alues)i(m)o(ust)f(b)q(e)h(giv)o(en)g(separately)g(as)g(part)g (of)f(the)i(data:)308 323 y Fg(param)j(rail_hal)o(f)36 b(default)17 b(0)39 b(:)524 381 y(KAFR_EL_)o(ZT)d(ABU_ZAABA)o(L)g(HELWAN)h(ASSIOUT)g(:=) 308 440 y(ABU_ZAABA)o(L)134 b(85)176 b(.)196 b(.)156 b(.)308 485 y(HELWAN)194 b(142)155 b(57)196 b(.)156 b(.)308 531 y(ASSIOUT)174 b(504)136 b(420)156 b(362)f(.)308 577 y(ASWAN)194 b(1022)136 b(938)156 b(880)116 b(518)58 b(;)144 656 y Fq(If)18 b(users)i(are)f (concerned)h(to)e(b)q(e)h(able)f(to)h(state)g(the)g(mo)q(del)e(and)h(data)g (together)h(as)g(compactly)e(as)144 706 y(p)q(ossible,)h(then)h(it)e(mak)o (es)f(sense)k(for)d(a)g(language)g(to)g(emplo)o(y)f(the)i(same)f(statemen)o (ts)h(in)f(declaring)144 756 y(data)c(c)o(haracteristics)j(as)d(in)h(sp)q (ecifying)f(data)h(v)n(alues.)j(By)d(comparison,)e(the)i(AMPL)g(user)h(m)o (ust)d(cite)144 806 y(an)e(indexed)i(set)f(or)g(parameter)f(t)o(wice|once)i (in)e(the)h(mo)q(del)e(and)i(once)g(in)f(the)i(data|when)e(pro)o(viding)144 856 y(literal)16 b(data)g(v)n(alues)g(as)h(in)f(the)h(example)e(ab)q(o)o(v)o (e.)25 b(W)m(e)17 b(see)g(signi\014can)o(t)f(comp)q(ensating)g(adv)n(an)o (tages,)144 906 y(ho)o(w)o(ev)o(er,)e(to)g(suc)o(h)g(an)g(arrangemen)o(t:)206 1005 y Fk(\017)21 b Fq(The)11 b(statemen)o(t)g(of)g(the)g(sym)o(b)q(olic)f (mo)q(del)f(can)j(b)q(e)f(made)f(compact)g(and)h(understandable,)h(while)248 1055 y(the)i(bulky)g(and)f(less)i(readable)f(data)g(tables)g(are)g(pro)o (vided)g(elsewhere.)206 1138 y Fk(\017)21 b Fq(The)c(indep)q(endence)i(of)e (the)h(sym)o(b)q(olic)d(mo)q(del)g(can)i(encourage)h(mo)q(delers)f(to)g(sp)q (ecify)g(precise)248 1188 y(conditions)d(for)h(the)h(v)n(alidit)o(y)c(of)j (the)g(asso)q(ciated)h(data,)e(and)h(can)g(help)g(to)g(prev)o(en)o(t)h (acciden)o(tal)248 1238 y(c)o(hanges)e(to)g(the)h(mo)q(del)d(when)i(only)f (the)i(data)f(are)g(supp)q(osed)h(to)f(b)q(e)g(c)o(hanged.)206 1321 y Fk(\017)21 b Fq(The)16 b(separate)g(data)f(sp)q(eci\014cation)i(can)e (b)q(e)h(regarded)h(as)e(just)h(a)f(supplemen)o(tary)g(part)h(of)e(the)248 1370 y(mo)q(deling)e(language.)18 b(Alternativ)o(e)d(data)f(formats,)e (tailored)i(to)g(v)n(arious)g(computing)e(en)o(viron-)248 1420 y(men)o(ts,)k(ma)o(y)e(then)j(b)q(e)g(substituted)h(for)e(the)h(standard)g (format)d(\(of)i(Section)h(5\))f(without)g(an)o(y)248 1470 y(c)o(hange)e(to)g(the)g(fundamen)o(tal)e(syn)o(tax)i(of)f(the)i(mo)q(deling) c(language.)144 1570 y(The)j(indep)q(endence)j(of)c(mo)q(del)f(and)i(data)g (can)g(also)f(mak)o(e)f(AMPL)j(easier)f(to)g(use)h(in)e(extended)j(mo)q(d-) 144 1620 y(eling)g(exercises,)j(where)f(one)f(t)o(ypically)e(w)o(an)o(ts)i (to)f(either)i(run)f(the)g(same)f(mo)q(del)f(on)i(di\013eren)o(t)g(data)144 1669 y(sets,)e(or)f(apply)f(di\013eren)o(t)i(mo)q(dels)d(to)i(the)h(same)e (data.)206 1736 y(Another)j(concise)f(notation)f(in)g(man)o(y)f(languages)h (p)q(ermits)g(the)h(name)f(of)g(a)g(set)i(to)e(also)g(indicate)144 1786 y(indexing)k(o)o(v)o(er)h(the)g(set.)34 b(The)20 b(o)o(v)o(ertime)d (limit)f(constrain)o(ts)k(from)d(our)i Fe(pr)o(od)g Fq(example)f(could)g(b)q (e)144 1835 y(written)c(in)g(GAMS,)f(for)h(instance,)g(as)308 1918 y Fg(OLIM\(TIME)o(\)..)i(SUM)i(\(PRD,)g(PT\(PRD\))f(*)i(OPRD\(PRD,T)o (IM)o(E\)\))d(=L=)i(OL\(TIME\);)144 2001 y Fq(These)f(constrain)o(ts)g(are)f (indexed)h(o)o(v)o(er)f(the)h(set)g Ff(TIME)p Fq(,)d(and)i(the)h(summation)c (is)j(indexed)g(o)o(v)o(er)g Ff(PRD)p Fq(;)144 2051 y(but)k(the)h(names)e(of) g(these)j(sets)f(are)f(also)g(used)h(as)f(\\subscripts")h(in)e(the)i (parameter)e(expressions)144 2101 y Ff(PT\(PRD\))14 b(*)h(OPRD\(PRD,TIME\))d Fq(and)j Ff(OL\(TIME\))p Fq(.)e(The)j(same)e(thing)h(could)g(b)q(e)g(said)g (in)g(less)h(space)g(b)o(y)144 2151 y(giving)c(the)j(sets)g(shorter)g(names:) 308 2234 y Fg(OLIM\(T\)..)h(SUM)i(\(P,)h(PT\(P\))f(*)h(OPRD\(P,T\))o(\))e (=L=)h(OL\(T\);)144 2317 y Fq(By)c(con)o(trast,)g(the)h(equiv)n(alen)o(t)e (AMPL)h(expression,)308 2400 y Fg(olim)k({t)h(in)g(time}:)e(sum)h({p)h(in)g (prd})f(pt[p])g(*)h(Oprd[p,t])d(<=)j(ol[t];)144 2483 y Fq(requires)h(that)e (the)h(subscripts)h(b)q(e)f(\\dumm)o(y)o(")d(indices)i Ff(t)g Fq(and)g Ff(p)g Fq(that)h(are)g(explicitly)e(declared)i(to)144 2533 y(run)d(o)o(v)o(er)f(di\013eren)o(tly)h(named)f(sets)i Ff(time)d Fq(and)i Ff(prd)p Fq(.)22 b(F)m(or)15 b(simple)g(constrain)o(t)g (expressions)j(lik)o(e)c(this,)144 2583 y(the)g(form)d Fp(without)i Fq(dumm)o(y)d(indices)j(has)h(adv)n(an)o(tages)e(of)h(brevit)o(y)g(and)g (simplicit)o(y)m(.)i(Nev)o(ertheless,)g(w)o(e)144 2632 y(ha)o(v)o(e)f(c)o (hosen)h(to)e(require)i(the)g(dumm)o(y)10 b(indices)15 b(in)e(AMPL,)h(for)f (t)o(w)o(o)h(reasons:)948 2768 y(35)p eop %%Page: 34 31 bop 144 30 a Fr(7.)42 b(Conclusion)206 109 y Fq(W)m(e)13 b(complete)f(our)h (description)g(of)f(AMPL)h(b)o(y)g(brie\015y)g(comparing)e(it,)h(in)g Fk(x)q Fq(7.1,)f(to)i(the)g(languages)144 159 y(emplo)o(y)o(ed)e(b)o(y)i (some)f(of)g(the)h(more)f(widely)g(used)i(linear)e(programmi)o(ng)e(systems.) 18 b(Finally)m(,)10 b(in)j Fk(x)p Fq(7.2)f(w)o(e)144 209 y(indicate)i(sev)o (eral)g(curren)o(t)i(and)d(lik)o(ely)g(directions)h(of)g(further)g(dev)o (elopmen)o(t.)144 325 y Fo(7.1)36 b(Comparisons)206 391 y Fq(As)12 b(the)f(in)o(tro)q(duction)g(to)g(this)g(pap)q(er)g(has)g(indicated,)g(AMPL)h (is)f(quite)g(unlik)o(e)f(the)h(matrix)e(genera-)144 441 y(tion)j(languages)f (that)h(ha)o(v)o(e)g(long)f(b)q(een)j(emplo)o(y)o(ed)c(in)i(linear)g (programmi)o(ng.)i(AMPL)f(is)f(a)g Fp(de)n(clar)n(ative)144 491 y Fq(language)20 b(that)g(sp)q(eci\014es)j(a)d(linear)g(program)f(b)o(y)h (directly)h(describing)g(eac)o(h)g(of)f(its)h(comp)q(onen)o(ts.)144 541 y(Systems)16 b(suc)o(h)h(as)f(MaGen)g(\(Ha)o(v)o(erly)g(Systems)g(1977\)) f(and)h(D)o(A)m(T)m(AF)o(ORM)f(\(Managemen)o(t)h(Science)144 590 y(Systems)g(1970,)f(Creegan)i(1985\))e(are)i(built)e(instead)i(around)f (sp)q(ecialized)h Fp(pr)n(o)n(gr)n(amming)e Fq(languages)144 640 y(that)k(describ)q(e)i(ho)o(w)e(to)g(generate)i(a)e(co)q(e\016cien)o(t)h (matrix)e(and)h(other)h(parts)f(of)g(a)g(linear)g(program.)144 690 y(F)m(urther)c(di\013erences)h(are)e(discussed)i(in)d(detail)g(b)o(y)h(F) m(ourer)g(\(1983\).)206 757 y(AMPL)g(also)e(di\013ers)i(signi\014can)o(tly)d (from)h(the)h(matrix-orien)o(ted)f(declarativ)o(e)h(languages)f(pro)o(vided) 144 806 y(b)o(y)18 b(recen)o(t)i(systems)f(suc)o(h)g(as)f(P)m(AM)h(\(Ketron)g (1986\))f(and)g(MIMI/LP)g(\(Bak)o(er)i(and)e(Biddle)g(1986\).)144 856 y(These)e(languages)d(sp)q(ecify)i(a)f(linear)g(program)f(b)o(y)h (declaring)g(the)h(p)q(osition)e(and)i(con)o(ten)o(t)g(of)e(nonzero)144 906 y(blo)q(c)o(ks)20 b(of)f(co)q(e\016cien)o(ts)i(in)e(the)i(constrain)o(t)f (matrix.)34 b(Suc)o(h)20 b(a)f(sp)q(eci\014cation)i(can)f(b)q(e)g(concise)h (and)144 956 y(con)o(v)o(enien)o(t,)14 b(particularly)f(for)g(mo)q(dels)g (whose)i(blo)q(c)o(k)e(structure)j(is)e(fairly)e(regular.)206 1022 y(W)m(e)17 b(ha)o(v)o(e)f(c)o(hosen)i(instead)f(to)g(mak)o(e)e(AMPL)i(a) g(declarativ)o(e)g(language)f(based)h(on)g(an)f(algebraic)144 1072 y(description)i(of)e(constrain)o(ts)i(and)f(ob)r(jectiv)o(es.)29 b(One)18 b(adv)n(an)o(tage)f(of)f(the)i(algebraic)f(approac)o(h)g(is)g(its) 144 1122 y(familia)o(rit)o(y;)9 b(almost)h(an)o(y)o(one)i(engaged)g(in)f (large-scale)h(linear)g(programmi)o(ng)d(is)j(acquain)o(ted)g(with)f(the)144 1172 y(algebraic)18 b(form,)f(and)h(hence)i(is)e(also)g(familia)o(r)e(with)i (most)f(of)h(AMPL's)g(con)o(v)o(en)o(tions.)32 b(F)m(or)18 b(man)o(y)144 1221 y(p)q(eople)j(who)f(form)o(ulate)e(linear)i(programs)f(b)o (y)i(\014rst)g(writing)e(the)i(equations)g(out)f(on)g(pap)q(er,)i(the)144 1271 y(con)o(v)o(ersion)15 b(to)f(AMPL)h(ma)o(y)d(b)q(e)k(mostly)c(a)j (matter)e(of)h(transcription.)20 b(A)15 b(further)g(adv)n(an)o(tage)f(lies)g (in)144 1321 y(the)j(generalit)o(y)f(of)h(algebraic)f(notation.)25 b(It)17 b(extends)h(gracefully)e(to)g(handle)h(complicated)e(kinds)i(of)144 1371 y(indexing)12 b(expressions,)i Fp(ad)g(ho)n(c)f Fq(logical)e (conditions,)h(and)h(ev)o(en)g(nonlinear)f(constrain)o(ts)i(that)f(ha)o(v)o (e)f(no)144 1421 y(natural)h(represen)o(tation)j(as)e(a)f(matrix)f(of)i(co)q (e\016cien)o(ts.)206 1487 y(Numerous)d(mo)q(deling)e(systems)i(ha)o(v)o(e)g (b)q(een)h(designed)g(to)f(incorp)q(orate)g(algebraic)g(languages)f(com-)144 1537 y(parable)j(to)f(AMPL)h(in)f(purp)q(ose)i(and)f(design.)k(Some)12 b(of)g(these)i(systems,)f(of)f(whic)o(h)h(LINDO)f(\(Sc)o(hrage)144 1587 y(1989\))g(is)h(a)g(p)q(opular)f(example,)g(do)h(not)g(pro)o(vide)g(sym) o(b)q(olic)e(indexing;)h(all)g(of)g(the)i(n)o(umerical)d(parame-)144 1637 y(ter)i(v)n(alues)e(app)q(ear)i(directly)f(in)f(the)i(constrain)o(ts,)g (and)e(eac)o(h)i(individual)d(constrain)o(t)i(m)o(ust)f(b)q(e)h(written)144 1686 y(out)g(explicitly)m(.)j(Languages)d(without)f(indexing)g(can)h(b)q(e)g (simple)f(and)g(con)o(v)o(enien)o(t,)h(but)g(only)f(for)g(small)144 1736 y(linear)i(programs.)206 1803 y(Closest)19 b(to)e(AMPL)h(are)h(the)f (algebraic)f(mo)q(deling)f(languages)h(that)h(do)g(o\013er)g(sym)o(b)q(olic)e (index-)144 1852 y(ing.)31 b(Suc)o(h)19 b(languages)f(are)h(pro)o(vided)f(in) g(sev)o(eral)h(commercially)c(distributed)k(mo)q(deling)d(systems,)144 1902 y(including)11 b(LINGO)h(\(Sc)o(hrage)g(and)g(Cunningham)d(1988\),)i (GAMS)h(\(Bro)q(ok)o(e,)g(Kendric)o(k)h(and)f(Meeraus)144 1952 y(1988\))k(and)g(MGG)g(\(Simons)f(1987\).)25 b(AMPL)17 b(di\013ers)g(most)f (fundamen)o(tally)e(from)h(these)i(languages)144 2002 y(in)g(t)o(w)o(o)f (resp)q(ects:)28 b(it)17 b(v)o(ery)g(strongly)g(encourages)i(the)e(indep)q (endence)j(of)c(mo)q(del)g(and)h(data,)g(and)g(it)144 2052 y(distinguishes)d(dumm)o(y)d(indices)j(from)e(the)j(sets)g(o)o(v)o(er)f(whic) o(h)g(they)g(run.)206 2118 y(F)m(or)h(purp)q(oses)i(of)e(illustration)f(w)o (e)h(consider)h(the)g(GAMS)f(language,)g(whic)o(h)g(is)g(one)h(of)e(the)i (most)144 2168 y(p)q(opular)c(and)h(adv)n(anced.)18 b(In)12 b(a)h(GAMS)f(mo)q(del,)f(the)i(same)f(statemen)o(ts)h(ma)o(y)e(serv)o(e)j(b)q (oth)f(to)f(describ)q(e)144 2218 y(an)i(indexed)g(table)g(of)f(data)h(and)f (to)h(sp)q(ecify)h(the)f(data)g(v)n(alues.)j(F)m(or)d(example,)e(one)i(ma)o (y)e(write)308 2295 y Fg(TABLE)18 b(RAIL-HAL)o(F\(I)o(,I)o(\))641 2341 y(KAFR-EL-ZT)36 b(ABU-ZAABA)o(L)g(HELWAN)h(ASSIOUT)406 2386 y(ABU-ZAABA)o(L)154 b(85)406 2432 y(HELWAN)213 b(142)176 b(57)406 2478 y(ASSIOUT)193 b(504)156 b(420)136 b(362)406 2523 y(ASWAN)214 b(1022)155 b(938)136 b(880)117 b(518)144 2603 y Fq(to)19 b(sim)o(ultaneously)e(state)j(that)f(a)g(parameter)f Ff(RAIL-HALF)g Fq(exists,)i(to)f(sp)q(ecify)h(its)f(indexing,)g(and)948 2768 y(34)p eop %%Page: 33 32 bop 144 30 a Fq(running)17 b(SunOS)h(Release)f(4.0)f(and)h(equipp)q(ed)h (with)f(12)g(megab)o(ytes)f(of)h(memory)d(and)j(a)g(Motorola)144 80 y(68881)12 b(mathematics)g(co-pro)q(cessor.)20 b(Columns)11 b(in)j(the)g(\014rst)g(group)g(indicate)f(the)h(sizes)h(of)e(the)h(linear)144 130 y(programs:)20 b(the)d(n)o(um)o(b)q(ers)e(of)g(ro)o(ws)h(\(constrain)o (ts\),)g(columns)f(\(v)n(ariables,)g(excluding)g(an)o(y)g(added)h(b)o(y)144 180 y(MINOS\))k(and)f(nonzero)i(elemen)o(ts.)35 b(The)20 b(middle)d(columns)i (then)h(giv)o(e)f(the)h(total)f(AMPL)g(mo)q(del)144 229 y(pro)q(cessing)c (times|through)d Fp(gener)n(ate,)h Fq(plus)h Fp(pr)n(esolve)f Fq(if)g(used|and)g(the)i(times)d(in)h(the)h(concluding)144 279 y Fp(output)g Fq(phase.)206 346 y(In)j(the)h(\014nal)e(group)h(of)f (columns,)g(the)i(\014rst)f(t)o(w)o(o)g(sho)o(w)g(the)g(times)f(and)h(n)o(um) o(b)q(ers)g(of)f(iterations)144 395 y(required)11 b(b)o(y)e(MINOS)h(to)g (solv)o(e)g(the)g(linear)f(programs.)16 b(F)m(aster)10 b(execution)h(could)e (b)q(e)h(ac)o(hiev)o(ed)h(in)e(man)o(y)144 445 y(cases)19 b(b)o(y)f(selectiv) o(ely)h(resetting)g(certain)g(parameters)f(of)g(the)g(simplex)f(metho)q(d,)h (but)g(the)h(timings)144 495 y(sho)o(wn)h(are)h(su\016cien)o(tly)f(realistic) g(for)g(purp)q(oses)h(of)f(comparison)f(with)g(the)i(AMPL)g(times.)36 b(The)144 545 y(MINOS)15 b(\014gures)h(do)f(not)g(include)g(reading)g(the)g (input)g(\014les)h(and)e(writing)h(the)g(solutions;)g(additional)144 595 y(times)e(for)g(these)j(tasks)e(app)q(ear)g(in)g(the)g(t)o(w)o(o)g(righ)o (tmost)e(columns.)206 661 y(These)19 b(results)g(v)n(ary)e(considerably)h (from)e(one)i(mo)q(del)e(structure)k(to)e(another.)29 b(On)18 b(the)h(whole,)144 711 y(ho)o(w)o(ev)o(er,)d(our)g(timings)e(suggest)i(that)g (the)h(computing)d(cost)i(of)f(con)o(v)o(erting)h(an)g(AMPL)g(mo)q(del)e(and) 144 761 y(data)e(in)o(to)h(a)f(linear)h(program)e(is)h(at)h(w)o(orst)g (comparable)f(to)g(the)i(cost)f(of)g(solving)e(the)j(linear)e(program,)144 811 y(and)g(is)g(often)h(signi\014can)o(tly)e(less.)18 b(As)13 b(a)f(result,)h(w)o(e)g(can)f(conclude)i(that)e(the)h(computer)f(time)f (required)144 860 y(for)20 b(an)g(AMPL)h(application)e(to)i(LP)f(mo)q(deling) f(should)h(seldom)f(b)q(e)i(more)f(than)g(t)o(wice)h(the)g(time)144 910 y(required)d(for)f(an)o(y)g(alternativ)o(e)g(approac)o(h.)27 b(Since)18 b(AMPL)g(is)f(in)o(tended)g(to)h(sa)o(v)o(e)f(p)q(eople's)g(time)f (b)o(y)144 960 y(giving)e(as)i(m)o(uc)o(h)f(translation)g(w)o(ork)h(as)g(p)q (ossible)g(to)g(the)g(computer,)g(w)o(e)g(in)o(terpret)h(this)f(conclusion) 144 1010 y(as)e(evidence)h(that)f(the)h(use)f(of)g(AMPL)g(is)g(lik)o(ely)e (to)i(b)q(e)g(less)h(costly)f(o)o(v)o(erall.)948 2768 y(33)p eop %%Page: 32 33 bop 144 30 a Fq(expressions.)25 b Fe(git)p Fd(1)p Fq(,)14 b Fe(git)p Fd(2)g Fq(and)i Fe(git)p Fd(3)e Fq(are)i(shipping)f(mo)q(dels)g (that)g(sum)g(o)o(v)o(er)h(v)n(arious)f(slices)h(from)e(a)144 80 y(set)i(of)f(quin)o(tuples)g(\(using)h(the)g(concise)g(notation)f (discussed)i(in)e Fk(x)p Fq(4.2\);)g(the)h(\014rst)g(t)o(w)o(o)f(di\013er)h (only)e(in)144 130 y(that)e Fe(git)p Fd(1)e Fq(expresses)15 b(certain)e(simple)d(b)q(ounds)j(as)f(separate)h(constrain)o(ts,)g(whereas)g Fe(git)p Fd(2)d Fq(sp)q(eci\014es)k(all)144 180 y(relev)n(an)o(t)i(b)q(ounds) h(within)f(the)g(v)n(ariable)f(declarations.)26 b(Finally)m(,)14 b Fe(hpr)o(od)p Fd(1)j Fq(and)f Fe(hpr)o(od)p Fd(2)h Fq(are)f(based)144 229 y(on)i(a)h(pro)q(duction)g(planning)e(mo)q(del)g(that)i(mak)o(es)e (extensiv)o(e)j(use)f(of)f(sets)i(generated)g(through)f(set)144 279 y(expressions;)c(they)f(di\013er)h(only)e(in)g(the)i(size)f(of)g(the)g (data.)206 346 y(T)m(able)h(6{1)f(presen)o(ts)j(summary)c(statistics)j(for)f (a)g(pair)g(of)f(runs)i(on)f(eac)o(h)h(mo)q(del,)d(the)j(\014rst)g(using)144 395 y(the)g Fp(pr)n(esolve)f Fq(phase,)g(and)g(the)h(second)g(without)f(it.) 22 b(All)14 b(timings)f(are)j(in)e(seconds)j(on)e(a)g(Sun-3/160,)p 171 532 1583 2 v 170 612 2 81 v 196 586 a Fc(Problem)53 b(ro)o(ws)84 b(cols)51 b(nonzeros)p 830 612 V 51 w(AMPL)f Fb(output)p 1154 612 V 50 w Fc(MINOS)88 b(iter)65 b(read)53 b(write)p 1753 612 V 171 614 1583 2 v 170 681 2 68 v 196 668 a Fe(cms)118 b Fc(1682)50 b(24277)81 b(142054)p 830 681 V 78 w(232.6)72 b(294.3)p 1154 681 V 54 w(38249.8)51 b(18041)f(611.1)h(255.8)p 1753 681 V 170 748 2 67 v 196 713 a Fe(cms)118 b Fc(2522)50 b(24277)81 b(142894)p 830 748 V 78 w(204.1)72 b(294.5)p 1154 748 V 54 w(39989.0)51 b(17292)f(623.1)h(264.6)p 1753 748 V 170 793 2 46 v 196 780 a Fe(dist)p Fd(03)93 b Fc(185)69 b(1090)120 b(4325)p 830 793 V 115 w(9.9)111 b(8.7)p 1154 793 V 110 w(32.1)89 b(209)70 b(19.8)f(14.3)p 1753 793 V 170 852 2 59 v 196 825 a Fe(dist)p Fd(03)93 b Fc(299)69 b(1179)120 b(4682)p 830 852 V 115 w(8.9)111 b(9.5)p 1154 852 V 110 w(44.5)89 b(226)70 b(21.8)f(16.0)p 1753 852 V 170 897 2 46 v 196 884 a Fe(dist)p Fd(08)93 b Fc(449)69 b(2451)120 b(9703)p 830 897 V 96 w(19.7)92 b(19.6)p 1154 897 V 91 w(144.7)d(473)70 b(44.3)f(31.8)p 1753 897 V 170 955 2 59 v 196 929 a Fe(dist)p Fd(08)93 b Fc(790)69 b(2728)100 b(10792)p 830 955 V 97 w(17.2)92 b(21.9)p 1154 955 V 91 w(200.6)d(416)70 b(50.2)f(37.5)p 1753 955 V 170 1001 2 46 v 196 987 a Fe(dist)p Fd(13)93 b Fc(448)69 b(1563)120 b(6073)p 830 1001 V 96 w(23.0)92 b(13.3)p 1154 1001 V 91 w(102.3)d(429)70 b(28.4)f(21.8)p 1753 1001 V 170 1067 2 67 v 196 1033 a Fe(dist)p Fd(13)74 b Fc(1265)69 b(2262)120 b(8868)p 830 1067 V 96 w(19.6)92 b(19.0)p 1154 1067 V 91 w(236.0)d(367)70 b(43.5)f(37.1)p 1753 1067 V 170 1113 2 46 v 196 1099 a Fe(egypt)p Fd(1)i Fc(146)89 b(351)119 b(1268)p 830 1113 V 115 w(4.8)111 b(2.7)p 1154 1113 V 110 w(20.5)89 b(247)g(6.5)f(5.1)p 1753 1113 V 170 1171 2 59 v 196 1145 a Fe(egypt)p Fd(1)71 b Fc(285)89 b(351)119 b(1336)p 830 1171 V 115 w(4.5)111 b(2.9)p 1154 1171 V 110 w(32.8)89 b(261)g(7.1)f(6.3)p 1753 1171 V 170 1217 2 46 v 196 1203 a Fe(egypt)p Fd(2)71 b Fc(146)89 b(351)119 b(1268)p 830 1217 V 115 w(4.4)111 b(2.8)p 1154 1217 V 110 w(20.9)89 b(250)g(6.5)f(5.2)p 1753 1217 V 170 1283 2 67 v 196 1249 a Fe(egypt)p Fd(2)71 b Fc(285)89 b(351)119 b(1336)p 830 1283 V 115 w(4.1)111 b(2.9)p 1154 1283 V 110 w(35.0)89 b(284)g(7.2)f(6.3)p 1753 1283 V 170 1329 2 46 v 196 1315 a Fe(git)p Fd(1)129 b Fc(381)69 b(1089)120 b(4303)p 830 1329 V 96 w(14.2)92 b(10.2)p 1154 1329 V 110 w(65.6)d(397)70 b(23.0)f(15.7)p 1753 1329 V 170 1387 2 59 v 196 1361 a Fe(git)p Fd(1)110 b Fc(1300)69 b(1089)120 b(5192)p 830 1387 V 96 w(12.8)92 b(12.0)p 1154 1387 V 91 w(177.7)d(334)70 b(29.9)f(24.0)p 1753 1387 V 170 1433 2 46 v 196 1419 a Fe(git)p Fd(2)129 b Fc(377)69 b(1089)120 b(4293)p 830 1433 V 96 w(13.6)111 b(9.7)p 1154 1433 V 110 w(61.7)89 b(374)70 b(23.0)f(15.7)p 1753 1433 V 170 1491 2 59 v 196 1465 a Fe(git)p Fd(2)129 b Fc(411)69 b(1089)120 b(4303)p 830 1491 V 96 w(12.4)111 b(9.8)p 1154 1491 V 110 w(70.3)89 b(407)70 b(23.1)f(15.9)p 1753 1491 V 170 1537 2 46 v 196 1523 a Fe(git)p Fd(3)110 b Fc(1331)50 b(12745)100 b(54854)p 830 1537 V 78 w(320.3)72 b(101.6)p 1154 1537 V 73 w(3230.3)e(3966)50 b(244.1)h(138.4)p 1753 1537 V 170 1603 2 67 v 196 1568 a Fe(git)p Fd(3)110 b Fc(1331)50 b(12745)100 b(54854)p 830 1603 V 78 w(309.3)72 b(101.8)p 1154 1603 V 73 w(3230.3)e(3966)50 b(244.1)h(138.4)p 1753 1603 V 170 1649 2 46 v 196 1635 a Fe(hpr)o(od)p Fd(1)70 b Fc(128)89 b(140)119 b(1383)p 830 1649 V 96 w(10.2)111 b(3.5)p 1154 1649 V 130 w(3.6)c(17)89 b(6.6)f(2.8)p 1753 1649 V 170 1707 2 59 v 196 1681 a Fe(hpr)o(od)p Fd(1)70 b Fc(129)89 b(140)119 b(1384)p 830 1707 V 115 w(9.9)111 b(3.5)p 1154 1707 V 130 w(3.7)c(17)89 b(6.5)f(2.7)p 1753 1707 V 170 1752 2 46 v 196 1739 a Fe(hpr)o(od)p Fd(2)70 b Fc(231)89 b(367)119 b(3445)p 830 1752 V 96 w(30.6)111 b(7.4)p 1154 1752 V 110 w(19.5)d(90)70 b(16.1)88 b(5.9)p 1753 1752 V 170 1819 2 67 v 196 1784 a Fe(hpr)o(od)p Fd(2)70 b Fc(232)89 b(367)119 b(3446)p 830 1819 V 96 w(30.0)111 b(7.4)p 1154 1819 V 110 w(19.6)d(90)70 b(15.9)88 b(5.8)p 1753 1819 V 170 1864 2 46 v 196 1851 a Fe(oil)171 b Fc(43)108 b(59)138 b(232)p 830 1864 V 115 w(1.4)111 b(0.4)p 1154 1864 V 130 w(1.6)c(41)89 b(1.2)f(1.1)p 1753 1864 V 170 1931 2 67 v 196 1896 a Fe(oil)171 b Fc(47)108 b(60)138 b(236)p 830 1931 V 115 w(1.3)111 b(0.4)p 1154 1931 V 130 w(1.7)c(49)89 b(1.2)f(1.1)p 1753 1931 V 170 1977 2 46 v 196 1963 a Fe(pr)o(od)p Fd(03)77 b Fc(179)89 b(231)138 b(870)p 830 1977 V 115 w(1.9)111 b(1.9)p 1154 1977 V 110 w(12.2)89 b(127)g(4.5)f(4.4)p 1753 1977 V 170 2035 2 59 v 196 2009 a Fe(pr)o(od)p Fd(03)77 b Fc(210)89 b(235)138 b(922)p 830 2035 V 115 w(1.8)111 b(2.0)p 1154 2035 V 110 w(12.2)89 b(109)g(4.8)f(4.7)p 1753 2035 V 170 2080 2 46 v 196 2067 a Fe(pr)o(od)p Fd(08)77 b Fc(418)89 b(551)119 b(2163)p 830 2080 V 115 w(3.5)111 b(4.6)p 1154 2080 V 110 w(36.4)89 b(178)70 b(11.1)f(10.5)p 1753 2080 V 170 2138 2 59 v 196 2112 a Fe(pr)o(od)p Fd(08)77 b Fc(470)89 b(560)119 b(2262)p 830 2138 V 115 w(3.1)111 b(4.8)p 1154 2138 V 110 w(40.8)89 b(189)70 b(11.6)f(10.8)p 1753 2138 V 170 2184 2 46 v 196 2170 a Fe(pr)o(od)p Fd(13)77 b Fc(648)89 b(871)119 b(3438)p 830 2184 V 115 w(5.3)111 b(7.2)p 1154 2184 V 110 w(84.7)89 b(289)70 b(17.6)f(16.4)p 1753 2184 V 170 2251 2 67 v 196 2216 a Fe(pr)o(od)p Fd(13)77 b Fc(730)89 b(885)119 b(3602)p 830 2251 V 115 w(4.5)111 b(7.6)p 1154 2251 V 110 w(84.7)89 b(260)70 b(18.3)f(16.9)p 1753 2251 V 170 2296 2 46 v 196 2282 a Fe(train)p Fd(1)81 b Fc(194)89 b(411)119 b(1058)p 830 2296 V 115 w(3.1)111 b(2.9)p 1154 2296 V 130 w(4.8)c(31)89 b(6.3)f(6.4)p 1753 2296 V 170 2354 2 59 v 196 2328 a Fe(train)p Fd(1)81 b Fc(413)89 b(411)119 b(1277)p 830 2354 V 115 w(2.8)111 b(3.4)p 1154 2354 V 130 w(7.7)c(31)89 b(8.4)f(8.2)p 1753 2354 V 170 2400 2 46 v 196 2386 a Fe(train)p Fd(2)81 b Fc(194)89 b(410)119 b(1055)p 830 2400 V 115 w(7.6)111 b(2.7)p 1154 2400 V 130 w(5.8)c(48)89 b(6.3)f(6.2)p 1753 2400 V 170 2458 2 59 v 196 2432 a Fe(train)p Fd(2)81 b Fc(413)89 b(411)119 b(1277)p 830 2458 V 115 w(7.2)111 b(3.2)p 1154 2458 V 130 w(9.9)c(48)89 b(8.2)f(8.2)p 1753 2458 V 171 2460 1583 2 v 313 2545 a Fo(T)l(able)15 b(6{1.)k Fl(Timings)11 b(in)j(Sun-3/160)e(seconds,)j(with)f(and)g(without)f Fq(presolv)o(e)p Fl(.)948 2768 y Fq(32)p eop %%Page: 31 34 bop 248 30 a Fq(since)11 b(the)h(remo)o(v)n(al)d(of)h(v)n(ariables)g(ma)o(y)f (result)i(in)g(additional)e(equalit)o(y)h(constrain)o(ts)h(that)g(in)o(v)o (olv)o(e)248 80 y(just)j(one)g(v)n(ariable.)206 163 y Fk(\017)21 b Fq(Con)o(v)o(erting)e(to)g(b)q(ounds)h(an)o(y)f(inequalit)o(y)f(constrain)o (ts)i(that)g(in)o(v)o(olv)o(e)e(just)i(one)g(v)n(ariable,)f(as)248 213 y(discussed)d(in)e(Section)h(4.)20 b(Suc)o(h)15 b(b)q(ounds)h(are)f(com)o (bined)e(with)h(an)o(y)g(that)h(ha)o(v)o(e)g(b)q(een)g(sp)q(eci\014ed)248 263 y(in)g(a)h(v)n(ariable's)e(declaration.)24 b(Additional)14 b(constrain)o(ts)i(of)g(this)f(kind)h(ma)o(y)e(also)h(b)q(e)h(found)f(in)248 312 y(m)o(ultiple)c(passes)16 b(as)e(v)n(ariables)f(are)h(\014xed.)206 395 y Fk(\017)21 b Fq(Con)o(v)o(erting)15 b(to)h(ranges)g(or)g(equalities)f (an)o(y)g(double-inequalit)o(y)g(constrain)o(ts,)h(as)g(explained)f(in)248 445 y(Section)f(4.)206 528 y Fk(\017)21 b Fq(Remo)o(ving)14 b(certain)j(inequalit)o(y)e(constrain)o(ts)j(that)e(m)o(ust)g(b)q(e)h(slac)o (k)g(in)f(an)o(y)g(feasible)g(solution.)248 578 y(Suc)o(h)c(constrain)o(ts)h (are)f(iden)o(ti\014ed)g(b)o(y)g(substituting)g(upp)q(er)h(or)f(lo)o(w)o(er)g (b)q(ounds)h(\(as)f(appropriate\))248 628 y(for)k(the)h(v)n(ariables.)24 b(\(This)17 b(test)g(ma)o(y)e(also)g(iden)o(tify)h(certain)h(constrain)o(ts)g (that)f(can)h(nev)o(er)g(b)q(e)248 678 y(satis\014ed,)d(in)f(whic)o(h)h(case) h(the)f(user)h(is)f(w)o(arned)g(of)g(a)f(mis-sp)q(eci\014ed)h(mo)q(del.\))144 777 y(Except)h(for)f(the)h(dropping)e(of)h(un)o(used)h(v)n(ariables,)e(these) i(transformations)e(are)h(optional.)k(Our)c(com-)144 827 y(putational)h(exp)q (erience)k(indicates)d(that)h(the)g(resulting)f(simpli\014ed)f(linear)g (program)g(is)h(seldom)f(an)o(y)144 877 y(harder)g(to)e(solv)o(e,)h(and)f(is) h(sometimes)e(m)o(uc)o(h)h(easier.)206 943 y(The)g(\014nal)e Fp(output)i Fq(phase)g(mak)o(es)e(the)i(translated)f(mo)q(del)f(a)o(v)n (ailable)f(to)i(an)g(optimizer.)k(Our)d(in)o(ten)o(t)144 993 y(is)h(to)h(let)g(di\013eren)o(t)g(applications)f(link)f(appropriate)i (output)g(routines)g(with)f(the)h(AMPL)g(translator.)144 1043 y(Initially)9 b(w)o(e)i(ha)o(v)o(e)g(pro)o(vided)g(an)g(output)g(routine)g (suitable)g(for)f(use)i(with)f(optimizers)f(that)h(read)g(linear)144 1093 y(programs)j(in)i(the)g(standard)g(MPS)g(form)e(\(as)i(describ)q(ed)h(b) o(y)f(Murtagh)g(1981)e(and)i(b)o(y)f(the)h(reference)144 1143 y(man)o(uals)10 b(of)h(man)o(y)e(linear)j(programmi)o(ng)d(systems\).)17 b(Our)12 b(routine)g(generates)h(arbitrary)f(8-c)o(haracter)144 1192 y(ro)o(w)g(\(constrain)o(t\))i(and)e(column)f(\(v)n(ariable\))h(names)g (to)h(conform)e(to)h(the)i(MPS)f(format.)j(It)c(writes)i(one)144 1242 y(\014le)f(con)o(taining)f(the)h(MPS)h(output,)f(and)f(supplemen)o(tary) h(\014les)g(pro)o(viding)f(a)h(v)n(ariet)o(y)f(of)g(information:)206 1342 y Fk(\017)21 b Fq(The)14 b(\\true")g(ro)o(w)g(and)g(column)e(names)h (from)f(the)j(AMPL)f(mo)q(del.)206 1425 y Fk(\017)21 b Fq(The)14 b(constan)o(t)h(term)e(from)f(eac)o(h)i(ob)r(jectiv)o(e)h(\(not)f(needed)h (for)f(purp)q(oses)h(of)e(optimization\).)206 1508 y Fk(\017)21 b Fq(Names)13 b(of)g(constrain)o(ts)i(eliminated)d(b)o(y)h Fp(pr)n(esolve.)206 1591 y Fk(\017)21 b Fq(Names)13 b(of)g(un)o(used)i(v)n (ariables)e(dropp)q(ed)i(b)o(y)e Fp(pr)n(esolve.)206 1674 y Fk(\017)21 b Fq(Names)13 b(and)h(v)n(alues)f(of)h(\014xed)g(v)n(ariables)f (remo)o(v)o(ed)g(b)o(y)h Fp(pr)n(esolve.)144 1774 y Fq(The)e(output)f(also)g (includes)h(a)f(\\SPECS")h(\014le)f(suitable)g(for)g(use)i(b)o(y)e(the)h (MINOS)g(optimizer)e(\(Murtagh)144 1823 y(and)k(Saunders)h(1987\).)144 1940 y Fo(6.2)36 b(T)l(ests)206 2006 y Fq(W)m(e)12 b(mo)q(di\014ed)f(v)o (ersion)i(5.3)e(of)h(the)h(MINOS)g(optimization)d(system)i(to)h(read)f(the)i (MPS,)e(name)f(and)144 2056 y(SPECS)g(\014les)g(describ)q(ed)h(ab)q(o)o(v)o (e,)e(and)h(to)f(cite)h(AMPL)g(v)n(ariable)e(and)h(constrain)o(t)h(names)e (in)h(its)h(solution)144 2106 y(rep)q(ort.)18 b(W)m(e)11 b(then)h(tested)i (our)d(implemen)o(tatio)o(n)e(b)o(y)i(translating)g(and)g(solving)g(some)f (linear)h(programs)144 2155 y(ranging)k(up)g(to)g(o)o(v)o(er)h(a)f(thousand)g (constrain)o(ts,)h(and)g(o)o(v)o(er)f(ten)h(thousand)g(v)n(ariables.)21 b(Statistics)16 b(for)144 2205 y(these)f(tests)h(are)e(collected)h(in)e(T)m (able)g(6{1.)206 2272 y(The)h(mo)q(del)d(called)h Fe(egypt)p Fd(2)h Fq(is)f(the)i(one)f(repro)q(duced)i(in)d(the)i(App)q(endix;)f Fe(egypt)p Fd(1)f Fq(is)h(an)f(alterna-)144 2322 y(tiv)o(e)h(v)o(ersion)g (using)f(ordered)i(pairs)f(instead)g(of)f(sets)i(of)e(sets,)i(but)f(the)h (same)e(data.)17 b(Among)11 b(the)i(other)144 2371 y(mo)q(dels)f(quoted)h(in) f(this)h(pap)q(er)g(\(and)g(listed)g(in)f(F)m(ourer,)h(Ga)o(y)f(and)g (Kernighan)h(1987\),)f(the)h(sequences)144 2421 y Fe(dist)p Fd(03)p Fq(,)e Fe(dist)p Fd(08)p Fq(,)g Fe(dist)p Fd(13)h Fq(and)h Fe(pr)o(od)p Fd(03)p Fq(,)f Fe(pr)o(od)p Fd(08)p Fq(,)h Fe(pr)o(od)p Fd(13)g Fq(are)g(our)g Fe(dist)f Fq(and)h Fe(pr)o(od)h Fq(examples)e(with)144 2471 y(progressiv)o(ely)19 b(larger)f(data)g(sets)i(\(based)f(on)g(3,)g(8)f (and)g(13)g(pro)q(ducts\).)33 b Fe(train)p Fd(1)18 b Fq(and)g Fe(train)p Fd(2)h Fq(are)144 2521 y(v)o(ersions)14 b(of)g(our)g Fe(train)f Fq(example.)206 2587 y(Among)h(the)i(other)g(test)h(problems,)d Fe(oil)i Fq(is)f(a)h(small)d(re\014nery)k(mo)q(del)d(\(Kendric)o(k,)i (Meeraus)h(and)144 2637 y(Suh)g(1981\).)27 b Fe(cms)16 b Fq(is)h(a)g(cash)g (managemen)o(t)e(mo)q(del)g(that)i(has)g(an)g(in)o(teresting)h(v)n(ariet)o(y) e(of)h(indexing)948 2768 y(31)p eop %%Page: 30 35 bop 144 30 a Fr(6.)42 b(Implem)o(en)n(tation)206 109 y Fq(In)15 b(addition)f(to)g(designing)g(the)i(AMPL)f(language,)e(w)o(e)i(ha)o(v)o(e)g (implem)o(en)o(ted)e(a)i(complete)f(AMPL)144 159 y(translator.)27 b(This)17 b(section)h(brie\015y)f(summarizes)e(imp)q(ortan)o(t)g(asp)q(ects)k (of)d(our)h(linear)g(programmi)o(ng)144 209 y(implemen)o(tatio)o(n.)k(W)m(e) 16 b(describ)q(e)h(the)g(pro)q(cessing)g(steps)g(of)e(the)h(translator)g(in)g Fk(x)p Fq(6.1)f(and)h(giv)o(e)f(some)144 258 y(statistics)g(on)e(its)h (e\016ciency)h(in)e Fk(x)q Fq(6.2.)144 375 y Fo(6.1)36 b(Pro)q(cessing)206 441 y Fq(A)20 b(mo)q(deler)e(initiates)h(an)g(application)e(of)i(AMPL)h(b)o (y)f(w)o(orking)f(out)h(a)g(represen)o(tation)i(of)d(the)144 491 y(mo)q(del)12 b(as)h(describ)q(ed)h(in)f(Sections)h(2{4,)e(and)h(a)f (represen)o(tation)j(of)d(the)i(data)f(suc)o(h)h(as)f(that)g(presen)o(ted)144 541 y(in)f(Section)h(5.)k(These)d(represen)o(tations)g(are)f(stored)g(in)f (mo)q(del)f(and)h(data)g(\014les,)h(whic)o(h)f(can)g(b)q(e)h(created)144 590 y(b)o(y)h(use)g(of)g(an)o(y)f(text)i(editor.)206 657 y(The)j(primary)e (job)h(of)g(the)h(AMPL)g(translator)f(is)h(to)f(read)h(the)g(mo)q(del)e(and)h (data)g(\014les,)i(and)e(to)144 707 y(write)c(a)g(represen)o(tation)i(of)e(a) g(linear)f(program)g(suitable)h(for)g(use)h(b)o(y)f(optimization)d (algorithms.)16 b(The)144 757 y(translator)e(m)o(ust)e(also)h(store)i(enough) f(mo)q(del)e(information)f(to)i(allo)o(w)f(for)i(an)f(understandable)i (listing)144 806 y(of)c(the)h(optimal)c(solution.)17 b(Our)12 b(translator)f(implemen)o(tation)d(carries)k(out)g(this)f(w)o(ork)g(in)g(sev) o(en)i(logical)144 856 y(phases:)19 b Fp(p)n(arse,)c(r)n(e)n(ad)f(data,)h(c)n (ompile,)g(gener)n(ate,)f(c)n(ol)r(le)n(ct,)g(pr)n(esolve,)f Fq(and)h Fp(output.)206 923 y Fq(The)21 b Fp(p)n(arse)g Fq(phase)h(reads)f (the)h(mo)q(del)d(\014le)i(and)f(parses)i(it)f(in)o(to)f(a)g(corresp)q (onding)i(expression)144 972 y(tree.)35 b(It)19 b(uses)h(a)f(LEX)h(program)d (for)i(lexical)f(analysis,)h(and)g(a)g(parser)h(pro)q(duced)h(b)o(y)e(the)g (Y)m(A)o(CC)144 1022 y(parser)d(generator.)21 b(LEX)15 b(and)f(Y)m(A)o(CC)h (substan)o(tially)e(simplify)f(the)j(job)g(of)f(language)f(dev)o(elopmen)o (t,)144 1072 y(particularly)e(in)f(the)i(early)f(stages)i(when)e(the)h(syn)o (tax)g(undergo)q(es)g(frequen)o(t)g(c)o(hanges)g(\(Kernighan)g(and)144 1122 y(Pik)o(e)i(1984\).)206 1188 y(Next,)i(the)g Fp(r)n(e)n(ad)g(data)g Fq(phase)g(carries)h(out)e(the)h(initial)e(input)h(and)g(c)o(hec)o(king)h(of) f(the)h(data.)22 b(Since)144 1238 y(the)17 b(parameters)f(and)g(sets)h(are)g (allo)o(w)o(ed)d(to)i(app)q(ear)h(in)e(an)o(y)h(order)h(within)e(the)i(data)e (\014le,)i(the)f(data)144 1288 y(cannot)c(b)q(e)h(thoroughly)f(c)o(hec)o(k)o (ed)h(un)o(til)e(all)g(ha)o(v)o(e)h(b)q(een)h(read.)18 b(Hence)c(this)e (phase)h(merely)e(c)o(hec)o(ks)j(that)144 1338 y(nothing)d(is)h(de\014ned)h (t)o(wice,)f(that)h(no)e(set)i(con)o(tains)f(duplicate)g(elemen)o(ts,)g(that) g(set)h(mem)o(b)q(ers)e(ha)o(v)o(e)g(the)144 1388 y(righ)o(t)i(dimensions,)g (and)g(that)h(the)h(v)n(alues)e(supplied)h(for)g(n)o(umerical)e(parameters)i (are)g(n)o(um)o(b)q(ers.)206 1454 y(The)h Fp(c)n(ompile)f Fq(phase)i (transforms)d(the)i(expression)h(tree)g(\(created)g(b)o(y)e Fp(p)n(arse)p Fq(\))h(to)f(p)q(ermit)f(e\016cien)o(t)144 1504 y(computation)f(of)h(sets,)h(parameters,)f(v)n(ariables,)g(constrain)o(ts)h (and)f(other)h(deriv)o(ed)g(en)o(tities.)19 b(It)13 b(mo)o(v)o(es)144 1554 y(in)o(v)n(arian)o(ts)c(out)i(of)f(lo)q(ops,)g(collects)h(common)d(sub)q (expressions,)13 b(and)e(com)o(bines)e(the)i(w)o(ork)g(of)f(retrieving)144 1603 y(parameter)15 b(v)n(alues)g(indexed)h(o)o(v)o(er)f(the)h(same)e(set)i (\(as)g(in)f(the)g(case)i(of)d Ff(rmin[f])p Fq(,)g Ff(dp[f])p Fq(,)g Ff(hd[f])g Fq(and)144 1653 y Ff(rmax[f])d Fq(from)g(the)i Ff(rlim)f Fq(constrain)o(t)h(of)f Fe(pr)o(od)p Fq(\).)18 b(Since)13 b(the)g(con)o(ten)o(t)g(of)f(index)h(sets)h(dep)q(ends)g(on)e(the)144 1703 y(data)i(\014le,)f Fp(c)n(ompile)h Fq(m)o(ust)e(follo)o(w)g Fp(r)n(e)n(ad)j(data)p Fq(.)206 1769 y(In)10 b(the)g(subsequen)o(t)i Fp(gener)n(ate)e Fq(phase,)h(the)f(data)g(are)g(thoroughly)f(c)o(hec)o(k)o (ed)i(and)f(all)e(deriv)o(ed)i(en)o(tities)144 1819 y(are)18 b(computed.)29 b(The)18 b(c)o(hec)o(king)g(p)q(ortion)g(of)f(this)h(phase)g (v)o(eri\014es)g(all)f(conditions)g(imp)q(osed)g(b)o(y)g(the)144 1869 y(mo)q(del)d(\(suc)o(h)i(as)g(in)o(tegralit)o(y)e(and)h(nonnegativit)o (y)g(restrictions)h(on)g(parameters\))f(and)g(ensures)j(that)144 1919 y(indices)c(are)h(v)n(alid)d(for)h(the)i(mo)q(del)d(comp)q(onen)o(ts)i (that)g(they)g(are)h(indexing.)206 1985 y(A)o(t)f(the)h(conclusion)f(of)f Fp(gener)n(ate,)h Fq(the)h(translator)f(has)g(created)i(a)e(list)f(of)h(all)e (linear)i(terms)g(in)f(the)144 2035 y(mo)q(del.)i(A)c(v)n(ariable)f(ma)o(y)e (still)i(app)q(ear,)h(ho)o(w)o(ev)o(er,)h(in)e(t)o(w)o(o)g(or)g(more)g(terms) h(within)e(the)j(same)d(ob)r(jectiv)o(e)144 2085 y(or)14 b(constrain)o(t.)k (The)d Fp(c)n(ol)r(le)n(ct)e Fq(phase)i(merges)e(suc)o(h)i(m)o(ultiple)d(app) q(earances)j(in)o(to)e(one,)h(and)g(sorts)g(eac)o(h)144 2135 y(v)n(ariable's)f(co)q(e\016cien)o(ts)i(to)f(matc)o(h)e(the)j(ordering)f(giv) o(en)f(to)h(the)g(constrain)o(ts.)206 2201 y(After)g(completing)e(the)j (\014rst)f(\014v)o(e)g(phases,)g(the)g(translator)g(has)g(determined)f(the)h (linear)g(program)144 2251 y(that)j(w)o(as)g(implied)e(b)o(y)i(the)h(mo)q (del)e(and)h(data)g(\014les.)28 b(The)18 b Fp(pr)n(esolve)e Fq(phase)i(next)g(p)q(erforms)f(v)n(arious)144 2301 y(transformations)12 b(that)i(ma)o(y)e(mak)o(e)h(this)h(LP)g(smaller)e(or)i(otherwise)h(easier)f (to)g(solv)o(e:)206 2400 y Fk(\017)21 b Fq(Dropping)13 b(v)n(ariables)g(that) h(app)q(ear)g(in)g(no)f(constrain)o(t)i(or)e(ob)r(jectiv)o(e.)206 2483 y Fk(\017)21 b Fq(Remo)o(ving)10 b(v)n(ariables)i(that)h(are)h(\014xed)f (at)g(a)f(single)h(v)n(alue,)f(either)i(b)o(y)e(upp)q(er)i(and)f(lo)o(w)o(er) f(b)q(ounds)248 2533 y(that)i(are)h(equal,)e(or)h(b)o(y)g(equalit)o(y)g (constrain)o(ts)h(that)f(in)o(v)o(olv)o(e)f(just)h(one)h(v)n(ariable.)j(In)c (the)h(latter)248 2583 y(case,)h(the)g(constrain)o(ts)g(are)g(also)e(dropp)q (ed.)23 b(This)16 b(activit)o(y)e(ma)o(y)f(pro)q(ceed)k(for)e(sev)o(eral)h (passes,)948 2768 y(30)p eop %%Page: 29 36 bop 144 30 a Fq(paren)o(theses;)17 b(eac)o(h)e(slice)g(is)g(through)f(t)o(w)o (o)h(cities,)g(and)f(consists)i(of)e(pairs)h(of)f(times.)19 b(F)m(ollo)o(wing)12 b(eac)o(h)144 80 y(pair)h(of)h(times,)e(ho)o(w)o(ev)o (er,)i(the)g(parameter)g(sp)q(eci\014cation)h(also)e(giv)o(es)h(a)f(demand)g (v)n(alue.)206 146 y(Man)o(y)d(other)i(arrangemen)o(ts)e(of)g(slices)h(are)g (p)q(ossible.)17 b(Slicing)10 b(can)g(ev)o(en)i(b)q(e)f(v)n(aluable)e(in)h (sp)q(ecifying)144 196 y(sparse)k(collections)e(of)f(parameters)i(indexed)g (o)o(v)o(er)f(only)f(t)o(w)o(o)h(sets.)19 b(In)12 b(the)h Fe(egypt)f Fq(mo)q(del,)f(the)i(plan)o(t-)144 246 y(sp)q(eci\014c)i(prices)g(for)f(ra)o (w)g(materials)e(could)h(ha)o(v)o(e)h(b)q(een)h(giv)o(en)f(in)f(a)h(table)f (lik)o(e)g(this:)308 323 y Fg(param)18 b(p_pr)g(default)e(0.0)j(:)563 381 y(LIMESTONE)36 b(COKE_GAS)g(EL_ASWAN)g(PHOS_ROCK)g(:=)308 440 y(KAFR_EL_Z)o(T)154 b(.)196 b(.)176 b(.)137 b(5.0)308 485 y(ABU_ZAABA)o(L)154 b(.)196 b(.)176 b(.)137 b(4.0)308 531 y(HELWAN)213 b(1.2)136 b(16.0)156 b(.)g(.)308 577 y(ASSIOUT)213 b(.)196 b(.)176 b(.)137 b(3.5)308 622 y(ASWAN)233 b(1.2)176 b(.)156 b(1.0)136 b(.)118 b(;)144 702 y Fq(Instead,)14 b(they)h(are)f(condensed)h(in) o(to)f(four)f(slices,)h(one)g(for)g(eac)o(h)g(ra)o(w)g(material:)308 780 y Fg(param)k(p_pr)37 b(default)17 b(0.0)38 b(:=)327 838 y([HELWAN,COK)o(E_)o(GAS)o(])271 b(16.0)327 883 y([ASWAN,EL_A)o(SW)o(AN])310 b(1.0)327 941 y([*,LIMESTON)o(E])114 b(ASWAN)155 b(1.2)700 987 y(HELWAN)135 b(1.2)327 1045 y([*,PHOS_ROC)o(K])114 b(ABU_ZAABAL)55 b(4.0)700 1091 y(ASSIOUT)115 b(3.5)700 1137 y(KAFR_EL_ZT)55 b(5.0)19 b(;)144 1216 y Fq(The)f(c)o(hoice)g(b)q(et)o(w)o(een)h(these)f (represen)o(tations)i(is)d(a)g(matter)g(of)g(con)o(v)o(enience)h(or)g (readabilit)o(y)m(.)26 b(Tw)o(o)144 1266 y(larger)14 b(examples)f(also)g(app) q(ear)h(in)g(the)g Fe(egypt)g Fq(data,)f(for)h(parameters)g Ff(io)f Fq(and)h Ff(dcap)p Fq(.)948 2768 y(29)p eop %%Page: 28 37 bop 144 30 a Fq(eter)18 b(v)n(alues)f(are)g(zero)h(for)f(man)o(y)e(com)o (binations)g(of)h(the)i(indices.)28 b(W)m(e)16 b(then)i(\014nd)f(it)g(con)o (v)o(enien)o(t)g(to)144 80 y(sp)q(ecify)12 b(a)f Fp(default)g Fq(v)n(alue)f(of)h(zero,)h(and)f(to)g(giv)o(e)g(only)g(the)g(nonzero)h(v)n (alues)f(explicitly)m(.)16 b(As)c(an)f(example,)144 130 y(the)j Fe(egypt)g Fq(mo)q(del)f(declares)i(in)o(terplan)o(t)e(rail)g(distances)i(b)o (y)220 207 y Fg(param)j(rail_half)e({plant,pl)o(ant)o(})h(>=)h(0;)220 253 y(param)g(rail)g({p1)g(in)h(plant,)e(p2)i(in)g(plant})e(:=)279 298 y(if)i(rail_half)o([p1)o(,p)o(2])d(>)j(0)h(then)e(rail_half)o([p)o(1,p)o (2])e(else)i(rail_half[)o(p2,)o(p1)o(];)144 378 y Fq(and)c(sp)q(eci\014es)h (the)g(data)e(as)h(follo)o(ws:)308 456 y Fg(set)k(plant)g(:=)h(ASWAN)e (HELWAN)h(ASSIOUT)f(KAFR_EL_Z)o(T)f(ABU_ZAABAL)g(;)308 514 y(param)i(rail_hal)o(f)f(default)g(0)i(:)543 572 y(KAFR_EL_ZT)55 b(ABU_ZAABAL)g(HELWAN)i(ASSIOUT)36 b(:=)308 630 y(ABU_ZAABA)o(L)134 b(85)235 b(.)196 b(.)176 b(.)308 676 y(HELWAN)194 b(142)214 b(57)196 b(.)176 b(.)308 721 y(ASSIOUT)e(504)195 b(420)155 b(362)176 b(.)308 767 y(ASWAN)194 b(1022)h(938)155 b(880)137 b(518)57 b(;)144 847 y Fq(The)14 b(phrase)h Ff(default)d(0)h Fq(sp)q(eci\014es)j(that)d(the)i(default)e(v)n(alue)g(is)g(zero.)19 b(P)o(arameters)14 b(are)g(assigned)g(this)144 897 y(v)n(alue)k(in)g(t)o(w)o (o)g(w)o(a)o(ys.)31 b(First,)20 b(eac)o(h)f(app)q(earance)g(of)f Ff(.)h Fq(in)f(the)h(table)f(indicates)h(the)g(default)f(v)n(alue;)144 947 y Ff(rail_half[ABU_ZAA)o(BAL,A)o(BU_ZA)o(ABAL])e Fq(and)k(\014v)o(e)g (other)h(parameters)f(are)g(set)h(to)f(zero)h(b)o(y)f(this)144 996 y(device.)33 b(Second,)20 b(parameters)f(that)f(fail)f(to)i(app)q(ear)g (in)f(the)h(table)g(are)g(automatically)c(giv)o(en)j(the)144 1046 y(v)n(alue)13 b(zero;)i(these)g(include)f Ff(rail_half[ASWAN,A)o(SWAN)o (])d Fq(and)j(eigh)o(t)f(others.)206 1113 y(Sev)o(eral)h(other)h(examples)e (of)g(default)h(zeros)h(can)f(b)q(e)h(seen)g(in)f(the)g Fe(egypt)g Fq(mo)q(del.)j(P)o(arameter)c Ff(sc)144 1162 y Fq(in)f Fe(dist)g Fq(uses)i(a)e(default)h(of)f(99.99)f(to)i(represen)o(t)i(\\h)o(uge")d (shipping)g(costs)i(on)e(routes)i(where)g(shipmen)o(t)144 1212 y(is)j(not)f(allo)o(w)o(ed.)26 b(In)16 b(some)g(of)g(these)j(examples,)d(the) h(use)h(of)e(the)h(default)g(sym)o(b)q(ol)e(rather)i(than)g(0.0)144 1262 y(or)e(99.99)e(serv)o(es)k(mainly)12 b(to)j(mak)o(e)e(the)i(tables)h (more)d(readable;)j(it)e(can)h(b)q(e)h(c)o(hanged)f(from)e Ff(.)i Fq(to)f(an)o(y)144 1312 y(preferred)i(sym)o(b)q(ol.)206 1378 y(F)m(or)e(parameters)h(subscripted)i(b)o(y)d(three)i(or)e(more)g (indices,)h(the)g(data)f(v)n(alues)h(m)o(ust)e(b)q(e)i(sp)q(eci\014ed)144 1428 y(in)i(a)g(series)h(of)f(slices.)29 b(Eac)o(h)17 b(slice,)h(in)f(turn,)h (is)f(represen)o(ted)j(as)e(a)e(list)h(or)g(table.)28 b(Both)18 b(the)g(ideas)144 1478 y(and)d(the)h(syn)o(tax)f(of)f(slicing)g(are)i(m)o(uc) o(h)e(the)h(same)f(as)h(giv)o(en)g(for)g(sets)h(in)f Fk(x)p Fq(5.1)f(ab)q(o)o(v)o(e.)21 b(In)15 b Fe(train)p Fq(,)g(for)144 1528 y(instance,)f(demands)f(are)i(declared)g(b)o(y)308 1611 y Fg(param)j(demand)f({schedule)o(})g(>)i(0;)144 1694 y Fq(and)14 b(the)g(sp)q(eci\014cation)h(of)e(the)i(demand)d(data)i(b)q(egins)g(as)g (follo)o(ws:)308 1771 y Fg(param)k(demand)f(:=)327 1829 y([WA,*,PH,*])55 b(2)39 b(5)78 b(.55)116 b(6)39 b(9)78 b(.01)117 b(8)19 b(11)78 b(.01)582 1875 y(10)19 b(13)78 b(.13)97 b(12)19 b(15)58 b(1.59)96 b(13)19 b(16)58 b(1.69)582 1921 y(14)19 b(17)58 b(5.19)97 b(15)19 b(18)58 b(3.55)96 b(16)19 b(19)58 b(6.29)582 1966 y(17)19 b(20)58 b(4.00)97 b(18)19 b(21)58 b(5.80)96 b(19)19 b(22)58 b(3.40)582 2012 y(20)19 b(23)58 b(4.88)97 b(21)19 b(24)58 b(2.92)96 b(22)19 b(25)58 b(4.37)582 2058 y(23)19 b(26)58 b(2.80)97 b(24)19 b(27)58 b(4.23)96 b(25)19 b(28)58 b(2.88)582 2103 y(26)19 b(29)58 b(4.33)97 b(27)19 b(30)58 b(3.11)96 b(28)19 b(31)58 b(4.64)582 2149 y(29)19 b(32)58 b(3.44)97 b(30)19 b(33)58 b(4.95)96 b(31)19 b(34)58 b(3.73)582 2195 y(32)19 b(35)58 b(5.27)97 b(33)19 b(36)58 b(3.77)96 b(34)19 b(37)58 b(4.80)582 2240 y(35)19 b(38)58 b(3.31)97 b(36)19 b(39)58 b(3.89)96 b(37)19 b(40)58 b(2.65)582 2286 y(38)19 b(41)58 b(3.01)97 b(39)19 b(42)58 b(2.04)96 b(40)19 b(43)58 b(2.31)582 2332 y(41)19 b(44)58 b(1.52)97 b(42)19 b(45)58 b(1.75)96 b(44)19 b(47)58 b(1.88)582 2377 y(46)39 b(1)58 b(1.05)327 2435 y([PH,*,NY,*])d(1)39 b(3)58 b(1.05)116 b(5)39 b(7)78 b(.43)117 b(9)19 b(11)78 b(.20)582 2481 y(11)19 b(13)78 b(.21)97 b(13)19 b(15)77 b(.40)97 b(14)19 b(16)58 b(6.49)18 b(...)144 2561 y Fq(This)13 b(listing)f(has)h(m)o(uc)o(h)f (in)h(common)e(with)h(the)i(listing)e(of)h(the)h(mem)o(b)q(ers)d(of)i Ff(schedule)f Fq(in)g Fk(x)q Fq(5.1.)17 b(The)144 2611 y(slice-de\014ning)c (templates)g(are)h(the)f(same,)f(except)j(that)e(they)h(are)g(enclosed)g(in)f (brac)o(k)o(ets)h(rather)g(than)948 2768 y(28)p eop %%Page: 27 38 bop 144 30 a Fq(In)13 b(this)g(sp)q(ecial)f(form)f(of)i(the)g Ff(param)f Fq(statemen)o(t,)g(eac)o(h)h(column)e(giv)o(es)i(v)n(alues)f(for)h (a)f(di\013eren)o(t)i(param-)144 80 y(eter;)h(the)f(parameter)g(names)f(app)q (ear)h(as)g(lab)q(els)g(at)g(the)g(top)g(of)f(the)i(columns.)206 146 y(F)m(or)h(parameters)h(indexed)g(o)o(v)o(er)f(t)o(w)o(o)g(sets,)i(the)f (data)f(are)h(naturally)e(presen)o(ted)j(in)e(a)g(table)h(lik)o(e)144 196 y(the)d(follo)o(wing)e(from)g(Figure)i(1{4:)308 274 y Fg(param)k(units)f (:)98 b(nuts)77 b(bolts)57 b(washers)36 b(:=)465 332 y(iron)116 b(.79)g(.83)h(.92)465 377 y(nickel)76 b(.21)116 b(.17)h(.08)77 b(;)144 457 y Fq(The)20 b(ro)o(w)f(lab)q(els)h(indicate)f(the)h(\014rst)h (index,)f(and)f(the)i(column)d(lab)q(els)h(the)h(second)h(index.)35 b(Th)o(us)144 507 y Ff(units[iron,bolts])10 b Fq(is)k(.83.)206 573 y(Sev)o(eral)21 b(further)h(options)e(can)h(b)q(e)h(useful)f(in)f(the)h (generation)g(or)g(displa)o(y)f(of)g(certain)h(tables,)144 623 y(particularly)13 b(when)i(the)g(ro)o(ws)f(w)o(ould)f(b)q(e)i(v)o(ery)f (long.)k(First,)c(a)g(table)g(ma)o(y)e(b)q(e)j Fp(tr)n(ansp)n(ose)n(d;)f Fq(in)g Fe(pr)o(od)p Fq(,)144 673 y(as)g(an)g(example,)e(the)i(demands)f(are) i(declared)g(as)308 756 y Fg(param)j(dem)g({prd,firs)o(t..)o(las)o(t+)o(1})e (>=)j(0;)144 839 y Fq(and)14 b(the)g(data)g(sp)q(eci\014cation)g(is)g(as)g (follo)o(ws:)308 916 y Fg(param)k(dem)g(\(tr\))g(:)484 975 y(18REG)96 b(24REG)h(24PRO)57 b(:=)327 1033 y(1)157 b(63.8)77 b(1212.0)135 b(0.0)327 1078 y(2)157 b(76.0)96 b(306.2)136 b(0.0)327 1124 y(3)157 b(88.4)96 b(319.0)136 b(0.0)327 1170 y(4)h(913.8)96 b(208.4)136 b(0.0)327 1215 y(5)h(115.0)96 b(298.0)136 b(0.0)327 1261 y(6)h(133.8)96 b(328.2)136 b(0.0)327 1307 y(7)157 b(79.6)96 b(959.6)136 b(0.0)327 1352 y(8)h(111.0)96 b(257.6)136 b(0.0)327 1398 y(9)h(121.6)96 b(335.6)136 b(0.0)308 1444 y(10)g(470.0)96 b(118.0)77 b(1102.0)308 1489 y(11)156 b(78.4)96 b(284.8)136 b(0.0)308 1535 y(12)156 b(99.4)96 b(970.0)136 b(0.0)308 1581 y(13)g(140.4)96 b(343.8)136 b(0.0)308 1626 y(14)156 b(63.8)77 b(1212.0)135 b(0.0)58 b(;)144 1706 y Fq(The)11 b(quali\014er)f Ff(\(tr\))f Fq(sa)o(ys)i(that)f(the)h(column)e(lab)q(els)h(indicate)g(the)h (\014rst)g(index)g(and)f(the)h(ro)o(ws)f(lab)q(els)g(the)144 1756 y(second,)i(just)f(the)g(opp)q(osite)h(of)e(the)h(arrangemen)o(t)f(in)h (the)g(preceding)h(example.)k(The)11 b(same)f(data)g(could)144 1806 y(b)q(e)h(giv)o(en)f(in)g(an)h(un)o(transp)q(osed)h(form,)d(but)i(then)g (the)g(table)g(w)o(ould)f(ha)o(v)o(e)g(3)g(ro)o(ws)h(and)f(14)h(columns,)e (and)144 1856 y(w)o(ould)h(not)h(b)q(e)h(nearly)f(so)g(easy)h(to)f(displa)o (y)f(or)h(edit.)18 b(If)10 b(the)i(transp)q(osition)f(option)g(w)o(ere)h(not) f(a)o(v)n(ailable,)144 1905 y(w)o(e)h(could)g(instead)g(c)o(hange)g(the)h(mo) q(del)d(to)i(declare)g Ff(param)f(dem)g({first..last+1,prd})p Fq(.)j(W)m(e)d(prefer,)144 1955 y(ho)o(w)o(ev)o(er,)j(to)g(let)h(the)g (algebraic)f(mo)q(del)e(b)q(e)j(declared)h(in)d(the)i(most)f(natural)f(w)o(a) o(y)m(,)g(regardless)j(of)d(ho)o(w)144 2005 y(the)18 b(data)e(will)g(b)q(e)h (represen)o(ted.)31 b(\(In)17 b Fe(pr)o(od)g Fq(w)o(e)h(main)o(tain)c(the)j (con)o(v)o(en)o(tion)g(that,)h(where)g(a)e(mo)q(del)144 2055 y(comp)q(onen)o(t)d(is)h(indexed)g(o)o(v)o(er)g(b)q(oth)g(pro)q(ducts)h(and)f (times,)f(the)h(set)h(of)e(pro)q(ducts)i(comes)f(\014rst.\))206 2121 y(Sometimes)e(ev)o(en)i(transp)q(osing)g(a)f(table)h(w)o(ould)f(lea)o(v) o(e)g(its)h(ro)o(ws)g(uncomfortably)d(long.)17 b(Then)d(the)144 2171 y(table)h(ma)o(y)d(b)q(e)j(divided)g(column-wise)e(in)o(to)h(sev)o(eral) h(smaller)e(ones,)i(as)g(can)f(b)q(e)i(seen)g(in)e(the)h(data)f(for)144 2221 y Ff(cf75)g Fq(from)g(the)h Fe(egypt)g Fq(mo)q(del)f(\(App)q(endix)i (B\).)22 b(Or,)16 b(since)g(line)e(breaks)i(are)g(not)f(signi\014can)o(t,)f (eac)o(h)144 2271 y(of)f(the)i(ro)o(ws)f(ma)o(y)e(b)q(e)i(divided)g(across)h (sev)o(eral)f(lines)g(of)f(the)h(data)g(\014le.)206 2337 y(When)e(reading)f (data,)g(our)g(AMPL)g(translator)h(mak)o(es)e(no)h(assumptions)f(ab)q(out)h (the)h(v)n(alues)f(of)f(an)o(y)144 2387 y(parameters.)18 b(If)12 b(a)g(parameter)g(is)h(not)f(assigned)h(a)f(v)n(alue)g(in)g(the)h(mo)q(del)e (or)i(in)f(the)h(data)f(\014le,)g(then)h(an)o(y)144 2437 y(attempt)f(to)h (use)g(its)g(v)n(alue)f(in)g(the)h(mo)q(del)f(will)f(b)q(e)i(rejected)i(as)e (an)f(error.)19 b(In)12 b(this)h(w)o(a)o(y)f(some)g(kinds)h(of)144 2487 y(discrepancies)i(in)e(the)h(data,)e(suc)o(h)i(as)g(missing)d(ro)o(ws)j (or)f(columns)f(of)h(a)g(table,)g(can)g(b)q(e)h(caugh)o(t)f(during)144 2536 y(the)h(execution)h(of)e(the)i(translator.)206 2603 y(In)f(some)e (applications)g(certain)i(indexed)g(collections)f(of)f(parameters)i(are)f (\\sparse":)19 b(the)14 b(param-)948 2768 y(27)p eop %%Page: 26 39 bop 308 21 a Fg(set)18 b(schedule)f(:=)367 75 y(\(WA,*,PH,)o(*\))55 b(2)39 b(5)98 b(6)39 b(9)97 b(8)20 b(11)77 b(10)19 b(13)622 120 y(12)f(15)78 b(13)19 b(16)78 b(14)19 b(17)77 b(15)19 b(18)622 166 y(16)f(19)78 b(17)19 b(20)78 b(18)19 b(21)77 b(19)19 b(22)622 212 y(20)f(23)78 b(21)19 b(24)78 b(22)19 b(25)77 b(23)19 b(26)622 257 y(24)f(27)78 b(25)19 b(28)78 b(26)19 b(29)77 b(27)19 b(30)622 303 y(28)f(31)78 b(29)19 b(32)78 b(30)19 b(33)77 b(31)19 b(34)622 348 y(32)f(35)78 b(33)19 b(36)78 b(34)19 b(37)77 b(35)19 b(38)622 394 y(36)f(39)78 b(37)19 b(40)78 b(38)19 b(41)77 b(39)19 b(42)622 440 y(40)f(43)78 b(41)19 b(44)78 b(42)19 b(45)77 b(44)19 b(47)622 485 y(46)38 b(1)367 539 y(\(PH,*,NY,)o(*\))55 b(1)39 b(3)98 b(5)39 b(7)97 b(9)20 b(11)77 b(11)19 b(13)622 585 y(13)f(15)78 b(14)19 b(16)78 b(15)19 b(17)77 b(16)19 b(18)g(...)144 665 y Fq(The)13 b Fp(template)f Ff(\(WA,*,PH,*\))e Fq(indicates)j(a)f(slice)h (through)f Ff(WA)g Fq(in)g(the)h(\014rst)g(co)q(ordinate)g(and)f Ff(PH)g Fq(in)g(the)144 715 y(third;)g(v)n(arious)g(pairs)g(of)g(v)n(alues)g (for)g(the)h(second)h(and)e(fourth)g(co)q(ordinates)h(are)g(then)g(supplied.) 18 b(A)12 b(list)144 765 y(sp)q(eci\014cation)j(for)e(the)i(same)e(set)h(w)o (ould)g(b)q(egin)f(as)308 842 y Fg(set)18 b(schedule)f(:=)i(\(WA,2,PH,)o(5\)) d(\(WA,6,PH,9)o(\))g(\(WA,8,PH,11)o(\))406 888 y(\(WA,10,PH)o(,13)o(\))g (\(WA,12,PH,1)o(5\))g(\(WA,13,PH,)o(16)o(\))h(\(WA,14,PH)o(,1)o(7\))f(...)144 968 y Fq(The)e(sliced)g(represen)o(tation)h(is)f(clearly)f(easier)i(to)e (read,)h(and)g(is)f(p)q(erhaps)i(also)e(easier)h(to)g(create.)19 b(Our)144 1017 y(data)13 b(format)f(o\013ers)i(a)f(v)n(ariet)o(y)g(of)g (slicing)g(options)g(in)g(addition)f(to)h(those)h(sho)o(wn)g(here;)g(slices)g (ha)o(ving)144 1067 y(t)o(w)o(o)f(co)q(ordinates)i(free)g(ma)o(y)d(b)q(e)i (describ)q(ed)i(in)d(tables)h(as)g(w)o(ell)g(as)f(in)h(lists.)206 1134 y(The)h(en)o(tire)g(set)g Ff(schedule)d Fq(is)i(sp)q(eci\014ed)i(as)e(a) g(union)f(of)h(six)g(di\013eren)o(t)h(slices)f(\(of)g(whic)o(h)g(only)f(t)o (w)o(o)144 1183 y(are)j(seen)i(ab)q(o)o(v)o(e\).)24 b(Generally)m(,)15 b(an)o(y)g(series)i(of)f(slices)g(ma)o(y)e(b)q(e)j(used)g(to)f(de\014ne)h(a)e (set,)i(so)f(long)f(as)h(no)144 1233 y(mem)o(b)q(er)11 b(is)i(giv)o(en)g(t)o (wice;)g(di\013eren)o(t)h(slicing)e(options)h(ma)o(y)e(ev)o(en)j(b)q(e)g (used)g(in)e(the)i(sp)q(eci\014cation)g(of)e(the)144 1283 y(same)17 b(set.)29 b(Th)o(us)18 b(a)f(large)h(set)g(of)f(triples)h(or)f(quadruples)h (can)g(b)q(e)g(sp)q(eci\014ed)h(in)e(man)o(y)f(w)o(a)o(ys.)29 b(The)144 1333 y(c)o(hoice)16 b(is)g(determined)f(b)o(y)h(the)g(mo)q(deler's) f(con)o(v)o(enience;)i(as)f(an)f(example,)g(if)f(the)j(set)f(mem)o(b)q(ers)f (are)144 1383 y(main)o(tained)e(in)i(a)g(database)h(then)g(it)f(ma)o(y)e(b)q (e)j(easier)g(to)f(slice)h(along)e(co)q(ordinates)i(that)f(corresp)q(ond)144 1432 y(to)f(sort)g(k)o(eys.)144 1549 y Fo(5.2)36 b(P)o(arameters)206 1615 y Fq(Simple,)11 b(unindexed)j(parameters)g(are)g(assigned)f(v)n(alues)g (in)g(an)g(ob)o(vious)g(w)o(a)o(y)m(,)f(as)h(sho)o(wn)g(b)o(y)h(these)144 1665 y(examples)f(from)f(Figure)i(1{4:)308 1742 y Fg(param)k(T)h(:=)g(4;)308 1788 y(param)f(max_prd)e(:=)j(123.7;)144 1868 y Fq(Most)d(of)f(a)h(t)o (ypical)e(mo)q(del's)h(parameters)g(are)h(indexed)h(o)o(v)o(er)e(sets,)i(ho)o (w)o(ev)o(er,)f(and)g(their)g(v)n(alues)g(are)144 1918 y(sp)q(eci\014ed)f(in) f(a)f(v)n(ariet)o(y)h(of)f(one-dimensional)f(lists)h(and)h(t)o(w)o (o-dimensional)d(tables.)206 1984 y(The)k(most)d(elemen)o(tary)i(case)g(is)g (a)g(parameter)f(indexed)i(o)o(v)o(er)f(a)f(single)h(set,)g(suc)o(h)h(as)308 2062 y Fg(param)j(init_sto)o(ck)e(:=)465 2115 y(iron)77 b(35.8)465 2161 y(nickel)56 b(7.32)18 b(;)144 2241 y Fq(Line)c(breaks)g(are)h (disregarded,)f(so)g(this)g(statemen)o(t)g(could)g(b)q(e)g(put)g(all)f(on)g (one)i(line:)308 2324 y Fg(param)j(init_sto)o(ck)e(:=)j(nickel)e(35.8)h(iron) h(7.32)f(;)144 2407 y Fq(In)13 b(Figure)g(1{4,)e Ff(init_stock)g Fq(is)i(indexed)g(o)o(v)o(er)g(the)g(same)f(set)i(as)f(the)g(parameters)g Ff(cost)f Fq(and)h Ff(value)p Fq(.)144 2457 y(Th)o(us)h(a)g(single)f(table)h (can)g(con)o(v)o(enien)o(tly)g(giv)o(e)f(the)i(data)e(for)h(all:)308 2534 y Fg(param)k(:)176 b(init_stoc)o(k)75 b(cost)i(value)37 b(:=)465 2588 y(iron)135 b(35.8)h(.03)117 b(.02)465 2634 y(nickel)95 b(7.32)136 b(.025)77 b(-.01)57 b(;)948 2768 y Fq(26)p eop %%Page: 25 40 bop 144 30 a Fr(5.)42 b(Data)206 109 y Fq(As)20 b(w)o(e)g(ha)o(v)o(e)g (emphasized)f(in)h(earlier)g(sections,)h(sp)q(eci\014c)h(set)e(and)g (parameter)f(data)h(m)o(ust)e(b)q(e)144 159 y(com)o(bined)10 b(with)h(an)g(AMPL)g(mo)q(del)f(to)h(describ)q(e)h(one)g(particular)f(linear) f(program.)16 b(Data)10 b(v)n(alues)h(ha)o(v)o(e)144 209 y(v)n(aried)i (sources,)i(but)e(usually)g(a)g(computer)g(is)g(used)h(to)f(help)h(collect)f (and)h(organize)f(them.)k(Database)144 258 y(soft)o(w)o(are)e(is)g(often)h (emplo)o(y)o(ed)d(for)i(this)h(purp)q(ose,)g(and)f(spreadsheet)i(programs)d (are)i(also)f(pro)o(ving)f(to)144 308 y(b)q(e)h(con)o(v)o(enien)o(t.)k(In)14 b(an)f(ideally)g(in)o(tegrated)i(system,)e(a)h(mo)q(deling)e(language)h (translator)h(w)o(ould)f(ha)o(v)o(e)144 358 y(some)f(direct)i(connection)f (to)g(the)g(database)g(or)g(spreadsheet)i(soft)o(w)o(are;)e(either)h(the)f (translator)g(w)o(ould)144 408 y(read)h(their)h(\014les,)e(or)h(it)g(w)o (ould)f(b)q(e)h(in)o(v)o(ok)o(ed)f(b)o(y)h(them)f(as)h(a)g(subroutine.)206 474 y(Ev)o(en)i(if)e(in)o(terfaces)i(to)e(sp)q(ecialized)i(soft)o(w)o(are)f (w)o(ere)h(a)o(v)n(ailable,)c(ho)o(w)o(ev)o(er,)j(it)g(w)o(ould)f(b)q(e)i (desirable)144 524 y(that)i(a)f(mo)q(deling)e(language)i(also)f(supp)q(ort)j (some)d(simple,)h(standard)h(format)d(for)i(data)g(\014les.)30 b(The)144 574 y(a)o(v)n(ailabili)o(t)o(y)14 b(of)i(suc)o(h)i(a)e(format)f (has)i(sev)o(eral)h(b)q(ene\014ts:)25 b(p)q(ermitting)16 b(the)h(translator)g (to)g(run)g(in)f(the)144 624 y(greatest)e(v)n(ariet)o(y)f(of)f(en)o(vironmen) o(ts,)g(encouraging)h(exc)o(hange)h(of)e(mo)q(dels)g(for)g(educational)h (purp)q(oses,)144 674 y(and)h(facilitating)d(the)k(collection)e(of)h (standard)g(mo)q(dels)f(for)g(the)i(testing)f(of)f(algorithms.)206 740 y(As)18 b(part)g(of)f(our)g(initial)f(implem)o(en)o(tation,)f(therefore,) k(w)o(e)f(ha)o(v)o(e)f(designed)i(a)e(standard)h(AMPL)144 790 y(data)13 b(\014le)g(format.)j(Our)e(format)e(supp)q(orts)j(sev)o(eral)f (natural)e(w)o(a)o(ys)i(of)e(sp)q(ecifying)i(set)g(and)f(parameter)144 840 y(v)n(alues,)i(using)f(one-dimensional)f(lists)i(and)g(t)o(w)o (o-dimensional)d(tables.)22 b(Wherev)o(er)16 b(p)q(ossible,)f(similar)144 889 y(syn)o(tax)20 b(and)f(concepts)j(are)e(used)h(for)e(b)q(oth)h(the)g(set) h(and)f(parameter)f(statemen)o(ts.)36 b(Files)20 b(in)f(our)144 939 y(format)11 b(can)h(b)q(e)h(created)h(b)o(y)e(an)o(y)g(text)h(editor;)g (they)g(are)g(also)e(fairly)g(easy)i(to)g(generate)g(as)g(the)g(output)144 989 y(of)g(database)h(and)g(spreadsheet)i(programs.)206 1055 y(Examples)9 b(of)h(data)g(in)g(standard)h(AMPL)g(format)d(app)q(ear)j(in)f (Figure)g(1{4)g(and)g(in)g(the)h(App)q(endices.)144 1105 y(W)m(e)j(commen)o (t)e(on)i(the)g(sp)q(eci\014cation)h(of)f(set)h(mem)o(b)q(ers)e(in)g Fk(x)q Fq(5.1)g(b)q(elo)o(w,)g(and)h(on)g(the)h(sp)q(eci\014cation)g(of)144 1155 y(parameter)f(v)n(alues)f(in)h Fk(x)p Fq(5.2.)144 1271 y Fo(5.1)36 b(Sets)206 1338 y Fq(The)19 b(mem)o(b)q(ers)f(of)g(a)g(simple)f (set)j(are)f(sp)q(eci\014ed)h(straigh)o(tforw)o(ardly)m(.)31 b(In)18 b(data)h(for)f(the)h Fe(egypt)144 1388 y Fq(mo)q(del,)12 b(as)i(an)g(example,)e(the)i(sets)h(of)f(n)o(utrien)o(ts)g(and)g(pro)q (cesses)i(are)f(giv)o(en)e(b)o(y)308 1465 y Fg(set)18 b(nutr)g(:=)h(N)g(P205) f(;)308 1523 y(set)g(proc)g(:=)h(SULF_A_S)e(SULF_A_P)f(NITR_ACID)g(AMM_ELEC)h (AMM_C_GAS)406 1569 y(CAN_310)g(CAN_335)g(AMM_SULF)f(SSP_155)h(;)144 1649 y Fq(The)j(same)f(approac)o(h)h(serv)o(es)i(to)e(sp)q(ecify)g(the)h(mem) o(b)q(ers)d(of)i(eac)o(h)g(set)h(b)q(elonging)e(to)h(an)f(indexed)144 1698 y(collection)13 b(of)h(sets:)308 1768 y Fg(set)k(p_except[H)o(ELW)o(AN)o (])f(:=)i(CAN_310)d(;)308 1813 y(set)i(p_except[A)o(SWA)o(N])e(:=)j(CAN_335)e (;)144 1893 y Fq(The)j(data)g(for)f(a)g(set)i(of)e(pairs)h(can)g(b)q(e)g (organized)g(as)f(either)i(a)e(one-dimensional)f Fp(list)h Fq(or)g(a)h(t)o(w)o(o-)144 1943 y(dimensional)12 b Fp(table)p Fq(.)19 b(F)m(or)13 b(example,)g(if)g Ff(p_except)g Fq(w)o(ere)i(de\014ned)g (as)g(a)f(set)h(of)e(pairs)h(\(as)h(suggested)g(in)144 1993 y Fk(x)p Fq(2.4\))e(then)i(the)g(ab)q(o)o(v)o(e)e(data)h(could)f(b)q(e)i (listed)f(as)308 2076 y Fg(set)k(p_except)f(:=)i(\(ASWAN,CA)o(N_)o(335)o(\))d (\(HELWAN,CAN)o(_3)o(10\))g(;)144 2159 y Fq(or)e(written)g(in)g(a)f(table)h (as)308 2228 y Fg(set)k(p_except)f(:)39 b(CAN_335)d(CAN_310)h(:=)484 2286 y(ASWAN)96 b(+)157 b(-)484 2332 y(HELWAN)76 b(-)157 b(+)98 b(;)144 2412 y Fq(In)15 b(the)i(table,)e(a)g Ff(+)g Fq(indicates)h(a)f(pair)g (that)h(is)f(in)g(the)h(set,)g(and)g(a)f Ff(-)g Fq(indicates)h(a)f(pair)g (that)h(is)f(not)g(in)144 2462 y(the)f(set.)206 2528 y(Sets)j(of)e(triples)h (and)f(longer)g(comp)q(ound)g(mem)o(b)q(ers)f(are)i(usually)f(most)f(con)o(v) o(enien)o(tly)i(presen)o(ted)144 2578 y(in)e(sev)o(eral)g(\\slices")g(along)f (certain)i(co)q(ordinates.)k(In)14 b(the)g Fe(train)g Fq(mo)q(del,)e(the)j Ff(schedule)d Fq(parameter)144 2628 y(is)g(a)g(set)i(of)d(quadruples,)i(and)f (the)h(sp)q(eci\014cation)g(of)f(its)g(mem)o(b)q(ers)g(in)f(the)i(data)f (\014le)h(b)q(egins)g(as)f(follo)o(ws:)948 2768 y(25)p eop %%Page: 24 41 bop 206 30 a Fq(Sets)11 b(of)d(sets,)k(rather)e(than)f(ordered)i(pairs,)f (could)f(ha)o(v)o(e)g(b)q(een)i(used)f(in)f(form)o(ulating)e Fe(dist)p Fq(.)15 b(Supp)q(ose)144 80 y(that)10 b Ff(rt[d])g Fq(w)o(ere)h(declared)h(as)e(the)h(set)g(of)f(w)o(arehouses)i(to)e(whic)o(h)g (pro)q(ducts)i(ma)o(y)d(b)q(e)i(shipp)q(ed)g(directly)144 130 y(from)h(distribution)h(cen)o(ter)j Ff(d)p Fq(.)i(Then)c(the)h(constrain)o(t) f Ff(bal)f Fq(in)g Fe(dist)g Fq(w)o(ould)g(b)q(e)308 199 y Fg(bal)18 b({p)h(in)g(prd,)f(w)h(in)g(whse}:)406 245 y(sum)f({v)h(in)g(dctr:) f(w)h(in)g(rt[v]})e(Ship[p,v,w)o(])f(+)406 290 y(\(if)i(w)i(in)e(fact)g(then) h(Rprd[p,w)o(])e(+)i(Oprd[p,w])o(\))e(=)504 336 y(dem[p,w])f(+)k(\(if)e(w)h (in)g(dctr)f(then)g(sum)h({v)g(in)g(rt[w]})e(Ship[p,w,)o(v]\))o(;)144 416 y Fq(The)g(slice)g Ff({v)g(in)f(rt[w]})f Fq(along)h(the)h(\014rst)h(co)q (ordinate)f(is)g(noticeably)f(easier)i(to)e(sp)q(ecify)i(than)e(the)144 466 y(slice)c Ff({v)g(in)f(dctr:)g(w)h(in)f(rt[v]})g Fq(along)g(the)h(second) h(co)q(ordinate.)18 b(The)12 b(symmetry)f(b)q(et)o(w)o(een)i(the)f(t)o(w)o(o) 144 516 y(kinds)i(of)f(slices)i(is)e(lost.)206 582 y(The)g Fe(egypt)g Fq(mo)q(del)d(can)j(also)f(b)q(e)h(form)o(ulated)e(in)h(terms)g (of)g(either)h(ordered)h(pairs)e(or)h(sets)g(of)f(sets,)144 632 y(but)j(its)g(situation)g(is)g(di\013eren)o(t.)23 b(The)15 b(sets)i(of)d(pairs)h(do)g(not)g(represen)o(t)j(net)o(w)o(ork)d(\015o)o(ws,)g (and)g(can)g(b)q(e)144 682 y(arranged)e(so)f(that)g(they)h(are)g(alw)o(a)o (ys)e(sliced)i(on)f(the)g(\014rst)i(co)q(ordinate)e(when)h(used)g(in)f(the)h (constrain)o(ts.)144 731 y(The)h(material)e(balance)i(constrain)o(ts)h(for)e (commo)q(dities)e(pro)o(vide)j(an)g(extended)h(example:)220 809 y Fg(subject)i(to)i(mb)g({c)g(in)f(commod,)f(pl)i(in)g(plant}:)279 867 y(sum)f({pr)h(in)g(p_pos[pl])o(})d(io[c,pr])h(*)i(Z[pl,pr])318 925 y(+)g(\()h(if)e(c)i(in)f(c_ship)e(then)397 971 y(\()i(if)g(pl)g(in)f (cp_pos[c])f(then)h(sum)g({p2)g(in)h(cc_pos[c]})d(Xi[c,pl,p2)o(])g(\))357 1016 y(+)k(\()f(if)g(pl)g(in)f(cc_pos[c])f(then)h(sum)g({p2)g(in)h (cp_pos[c]})d(Xi[c,p2,pl)o(])g(\)\))318 1074 y(+)j(\()h(if)e(\(c)h(in)g (c_raw)f(and)g(pl)h(in)g(cc_pos[c])o(\))e(then)397 1120 y(\(\()h(if)h (p_imp[c])e(>)i(0)g(then)f(Vr[c,pl])f(\))357 1166 y(+)j(\()f(if)g(p_dom[pl,)o (c])d(>)j(0)h(then)e(U[c,pl])e(\)\)\))279 1224 y(>=)j(if)g(\(c)f(in)h (c_final)e(and)i(pl)g(in)f(cp_pos[c]\))e(then)i(sum)h({r)f(in)h(region})e (Xf[c,pl,r])o(;)144 1304 y Fq(Here)i(sets)g(of)e(sets)i(o\013er)f(a)g (natural)f(and)g(concise)i(notation)e(that)h(ma)o(y)d(mak)o(e)i(them)g (preferable)h(to)144 1354 y(ordered)d(pairs.)144 1470 y Fo(4.3)36 b(Ob)s(jectiv)o(es)206 1536 y Fq(A)14 b(linear)g(program's)e(ob)r(jectiv)o(e) i(function)g(has)g(all)f(the)h(prop)q(erties)i(of)d(a)h(constrain)o(t,)g (except)h(that)144 1586 y(it)h(lac)o(ks)h(a)f(relational)f(op)q(erator.)27 b(Th)o(us)17 b(the)g(declaration)g(of)f(an)g(ob)r(jectiv)o(e)h(has)g(the)g (same)f(form)f(as)144 1636 y(the)e(declaration)f(of)g(a)h(constrain)o(t,)f (except)i(for)f(starting)f(with)g(the)i(k)o(eyw)o(ord)e Ff(minimize)f Fq(or)i Ff(maximize)144 1686 y Fq(rather)i(than)f Ff(subject)e(to)p Fq(.)206 1752 y(Although)i(a)f(linear)h(program)e(need)j(only)e(ha)o(v)o(e)h (a)f(single)h(ob)r(jectiv)o(e,)g(AMPL)g(p)q(ermits)f(the)i(decla-)144 1802 y(ration)e(of)g(an)o(y)g(n)o(um)o(b)q(er)f(of)h(alternativ)o(e)g(ob)r (jectiv)o(es,)h(either)g(singly)f(or)g(in)g(indexed)h(collections.)k(Th)o(us) 144 1852 y Fe(train)11 b Fq(has)g(b)q(oth)f(an)h(ob)r(jectiv)o(e)g(to)g (represen)o(t)i(total)d(cars)h(in)g(the)g(\015eet,)h(and)e(an)h(ob)r(jectiv)o (e)g(to)g(represen)o(t)144 1902 y(total)h(car-miles)g(tra)o(v)o(eled)h(in)f (the)i(sc)o(hedule;)g(in)e(the)h(application)f(for)g(whic)o(h)h(it)g(w)o(as)f (dev)o(elop)q(ed,)i(these)144 1951 y(ob)r(jectiv)o(es)h(w)o(ere)g(traded)f (o\013)g(against)f(eac)o(h)i(other)f(b)o(y)g(use)g(of)g(a)f(parametric)g (simplex)g(algorithm.)948 2768 y(24)p eop %%Page: 23 42 bop 144 30 a Fq(By)14 b(use)h(of)e(a)h(conditional)e(expression,)j(these)g(v) n(arian)o(ts)e(can)h(b)q(e)h(declared)g(together:)308 107 y Fg(trdef)j({p)g(in)h(prd,)f(d)h(in)g(dctr}:)406 153 y(Trans[p,d)o(])e(>=)h (sum)h({\(d,w\))e(in)i(rt})g(Ship)f([p,d,w])f(-)661 199 y(\(if)h(d)i(in)e (fact)g(then)h(Rprd[p,d)o(])e(+)i(Oprd[p,d])o(\);)144 279 y Fq(F)m(or)12 b Ff(d)g Fq(not)f(in)h Ff(fact)p Fq(,)f(the)i(v)n(alue)e(of)h (the)g Ff(if...then...)e Fq(expression)j(is)f(zero|since)i(it)d(has)h(no)g Ff(else)p Fq(|)144 329 y(and)17 b(so)g(the)h(pro)q(duction)g(term)f Ff(Rprd[p,d])e(+)i(Oprd[p,d])e Fq(is)i(omitted.)27 b(An)18 b(example)e(with)h(three)144 378 y(v)n(arian)o(ts)c(is)h(seen)h(in)f(the)g (material)e(balance)i(constrain)o(ts)g(for)g(eac)o(h)g(pro)q(duct)h(at)f(eac) o(h)g(w)o(arehouse:)308 456 y Fg(bal)k({p)h(in)g(prd,)f(w)h(in)g(whse}:)367 501 y(sum)f({\(v,w\))f(in)i(rt})g(Ship[p,v,)o(w])d(+)367 547 y(\(if)i(w)h(in)g(fact)f(then)g(Rprd[p,w])e(+)k(Oprd[p,w])o(\))c(=)426 593 y(dem[p,w])g(+)j(\(if)g(w)g(in)g(dctr)f(then)g(sum)g({\(w,v\))g(in)h(rt}) f(Ship[p,w,)o(v]\))o(;)144 673 y Fq(The)12 b(\014rst)h Ff(if)f Fq(represen)o(ts)j(pro)q(duction)d(at)g Ff(w)p Fq(,)f(whic)o(h)h(can)h(o)q (ccur)g(only)e(if)g Ff(w)h Fq(is)g(a)g(factory;)g(the)g(second)h Ff(if)144 722 y Fq(represen)o(ts)i(shipmen)o(ts)d(from)f Ff(w)h Fq(to)g(other)h(w)o(arehouses,)g(whic)o(h)g(can)f(o)q(ccur)i(only)d(if)h Ff(w)g Fq(is)g(a)g(distribution)144 772 y(cen)o(ter.)206 839 y(The)j(ab)q(o)o(v)o(e)f(examples)f(also)g(sho)o(w)h(ho)o(w)g(ordered)i (pairs)e(are)g(commonly)d(used)k(in)f(constrain)o(ts.)19 b(In)144 888 y Ff(bal)13 b Fq(there)i(are)g(t)o(w)o(o)e(sums)g(that)h(in)o(v)o(olv)o (e)f(the)h(set)h Ff(rt)f Fq(of)f(pairs:)308 966 y Fg(sum)18 b({\(v,w\))g(in)g(rt})h(Ship[p,v,)o(w])308 1012 y(sum)f({\(w,v\))g(in)g(rt})h (Ship[p,w,)o(v])144 1091 y Fq(These)c(sums)f(lie)f(within)g(the)i(scop)q(e)g (of)f(the)g(constrain)o(t's)h(o)o(v)o(erall)e(indexing)g(expression,)i Ff({p)e(in)h(prd,)144 1141 y(w)c(in)f(whse})p Fq(,)g(whic)o(h)h(has)g (already)g(de\014ned)h(the)f(dumm)o(y)d(index)j Ff(w)p Fq(.)16 b(Hence,)c(for)e(a)f(particular)h(w)o(arehouse)144 1191 y Ff(w)p Fq(,)17 b(the)g(\014rst)h(sum)e(is)h(o)o(v)o(er)g(all)e Ff(v)i Fq(suc)o(h)g(that)g Ff(\(v,w\))f Fq(is)h(a)g(pair)f(in)g Ff(rt)p Fq(;)i(in)e(other)i(w)o(ords,)f(it)g(is)f(a)h(sum)144 1241 y(o)o(v)o(er)f(all)e(distribution)h(cen)o(ters)j(that)e(ship)g Fp(to)f Ff(w)p Fq(.)24 b(The)16 b(second)h(sum)d(is)i(o)o(v)o(er)g(all)e Ff(v)i Fq(suc)o(h)g(that)g Ff(\(w,v\))144 1291 y Fq(is)g(a)f(pair)g(in)g Ff(rt)p Fq(,)h(or)f(equiv)n(alen)o(tly)g(o)o(v)o(er)g(all)g(w)o(arehouses)i (that)f(receiv)o(e)h Fp(fr)n(om)e Ff(w)p Fq(.)23 b(In)16 b(e\013ect,)h(the)f (\014rst)144 1340 y(sum's)11 b(indexing)f(expression)j(tak)o(es)f(a)g (\\slice")f(from)f Ff(rt)h Fq(in)g(the)i(second)f(co)q(ordinate,)g(while)g (the)g(second)144 1390 y(sum's)j(indexing)h(expression)h(tak)o(es)g(a)f (slice)g(in)g(the)h(\014rst)g(co)q(ordinate.)26 b(This)16 b(kind)f(of)h (arrangemen)o(t,)144 1440 y(with)f(slices)h(in)e(\014rst)i(one)g(co)q (ordinate)f(and)g(then)h(the)g(other,)f(is)g(lik)o(ely)f(to)h(b)q(e)h(found)e (in)h(an)o(y)g(net)o(w)o(ork)144 1490 y(application)d(that)i(uses)i(sets)f (of)e(pairs)h(to)g(sp)q(ecify)g(the)g(arcs.)206 1556 y(AMPL's)g(concise)g (notation)e(for)h(slicing)g(pairs)g(do)q(es)h(in)o(tro)q(duce)g(a)f(certain)g (am)o(biguit)o(y)m(,)d(in)j(expres-)144 1606 y(sions)h(lik)o(e)308 1689 y Fg(sum)k({\(v,w\))g(in)g(rt})h(...)144 1772 y Fq(If)14 b(this)g(phrase)h(lies)f(within)g(the)h(scop)q(e)g(of)f(another)g(indexing)g (expression)h(that)g(has)f(already)g(de\014ned)144 1822 y(the)h(dumm)o(y)d (index)j Ff(w)f Fq(\(as)h(in)g(the)g(case)h(of)e Ff(bal)p Fq(\))g(then)h(the) h(summation)11 b(is)k(o)o(v)o(er)g(a)f(slice)h(through)g Ff(rt)p Fq(.)144 1872 y(On)g(the)h(other)g(hand,)f(if)f(the)i Ff(sum)e Fq(do)q(es)i(not)f(lie)f(in)h(an)o(y)g(scop)q(e)h(de\014ning)f Ff(w)p Fq(,)g(then)g(the)h(summation)c(is)144 1922 y(o)o(v)o(er)i Fp(al)r(l)f Fq(ordered)i(pairs)f(in)g Ff(rt)p Fq(.)206 1988 y(As)j(an)f(alternativ)o(e,)f(w)o(e)i(ha)o(v)o(e)e(considered)j(requiring)e (a)f(more)g(explicit)h(indexing)f(expression)i(in)144 2038 y(summations)11 b(o)o(v)o(er)j(slices,)g(so)g(that)g(the)g Ff(bal)g Fq(constrain)o(t,)f(for)h(instance,)g(w)o(ould)f(ha)o(v)o(e)h(to)g (b)q(egin)g(as)308 2115 y Fg(bal)k({p)h(in)g(prd,)f(w)h(in)g(whse}:)406 2161 y(sum)f({v)h(in)g(dctr:)f(\(v,w\))f(in)i(rt})g(Ship[p,v,)o(w])d(+)j(...) 144 2230 y Fq(or)308 2299 y Fg(bal)f({p)h(in)g(prd,)f(w)h(in)g(whse}:)406 2345 y(sum)f({\(v,w1\))f(in)i(rt:)g(w1)f(=)i(w})e(Ship[p,v,w])e(+)j(...)144 2427 y Fq(The)12 b(latter)f(is)g(rather)h(a)o(wkw)o(ard,)e(ho)o(w)o(ev)o(er,) i(while)f(the)g(former)f(w)o(orks)i(only)e(in)h(mo)q(dels)f(\(suc)o(h)i(as)f Fe(dist)p Fq(\))144 2477 y(that)17 b(explicitly)f(de\014ne)i(the)g(set)g(of)e (all)g Ff(v)h Fq(suc)o(h)h(that)f Ff(\(v,w\))f Fq(is)h(in)g(the)g(set)h Ff(rt)p Fq(.)27 b(W)m(e)17 b(ha)o(v)o(e)g(come)f(to)144 2527 y(b)q(eliev)o(e)h(that)f(the)h(simplicit)o(y)c(and)j(generalit)o(y)g(of)g (the)h(more)e(concise)i(slice)f(notation)g(out)o(w)o(eigh)f(an)o(y)144 2576 y(disadv)n(an)o(tages)i(arising)g(from)g(its)g(am)o(biguit)o(y)m(.)27 b(\(The)18 b(adv)n(an)o(tages)g(are)g(ev)o(en)h(more)e(eviden)o(t)h(in)f(the) 144 2626 y Fe(train)d Fq(mo)q(del,)e(whic)o(h)i(tak)o(es)g(sums)f(o)o(v)o(er) h(slices)h(through)e(ordered)j(quadruples.\))948 2768 y(23)p eop %%Page: 22 43 bop 144 30 a Fq(total)18 b(hours)h(of)e(w)o(ork)h(required)i(b)o(y)e(pro)q (duction)h(ma)o(y)d(not)i(exceed)i(the)f(hours)g(a)o(v)n(ailable)e(from)f (all)144 80 y(crews)f(emplo)o(y)o(ed:)308 157 y Fg(rlim)j({t)h(in)g(time}:) 406 203 y(sum)f({p)h(in)g(prd})f(pt[p])g(*)h(Rprd[p,t])d(<=)j(sl)g(*)g (dpp[t])e(*)j(Crews[t])o(;)144 283 y Fq(F)m(or)10 b(eac)o(h)h(pro)q(duct)h (in)e(eac)o(h)h(p)q(erio)q(d,)g(all)f(previously)g(pro)q(duced)i(in)o(v)o(en) o(tory)m(,)e(plus)h(an)o(y)f(initial)e(in)o(v)o(en)o(tory)144 333 y(still)13 b(un)o(used,)h(m)o(ust)f(total)g(at)h(least)g(the)h(required)f (minim)o(um)9 b(in)o(v)o(en)o(tory:)308 410 y Fg(ireq)18 b({p)h(in)g(prd,)f (t)h(in)g(time}:)406 456 y(sum)f({a)h(in)g(1..life})e(Inv[p,t,)o(a])f(+)k (iil[p,t])c(>=)j(minv[p,t])o(;)144 536 y Fq(The)f(amoun)o(t)e(of)h(in)o(v)o (en)o(tory)g(that)g(is)h Ff(a)f Fq(p)q(erio)q(ds)h(old)f(at)g(the)h(end)g(of) f(p)q(erio)q(d)h Ff(t)f Fq(cannot)h(exceed)h(the)144 585 y(amoun)o(t)12 b(that)i(w)o(as)g Ff(a-1)f Fq(p)q(erio)q(ds)i(old)e(at)h(the)g(end)g(of)g(p)q (erio)q(d)g Ff(t-1)p Fq(:)308 663 y Fg(ilim)k({p)h(in)g(prd,)f(t)h(in)g (first+1..)o(la)o(st,)d(a)j(in)g(2..life}:)406 708 y(Inv[p,t,a)o(])e(<=)h (Inv[p,t-1,a)o(-1)o(];)144 788 y Fq(The)10 b(AMPL)h(translator)f(determines)g (whic)o(h)g(v)n(ariables)f(ha)o(v)o(e)g(nonzero)i(co)q(e\016cien)o(ts)g(in)f (the)g(constrain)o(ts)144 838 y(implied)k(b)o(y)i(these)h(declarations;)g(it) f(then)g(computes)g(the)h(co)q(e\016cien)o(ts)g(of)f(these)h(v)n(ariables)e (and)h(the)144 888 y(v)n(alue)e(of)f(the)i(constan)o(t)g(term.)k(In)14 b(our)g(implemen)o(tation,)d(the)k(co)q(e\016cien)o(ts)g(are)g(determined)f (as)h(if)e(all)144 938 y(v)n(ariables)d(had)g(b)q(een)i(mo)o(v)o(ed)d(to)i (the)g(left)f(of)h(the)g(relational)e(op)q(erator,)j(and)e(all)g(constan)o (ts)h(to)g(the)g(righ)o(t,)144 988 y(but)i(suc)o(h)i(transformations)c(need)k (not)e(concern)h(the)g(mo)q(deler.)j(An)o(y)d(expression)g(in)f(parameters)g (and)144 1037 y(v)n(ariables)e(is)h(acceptable)h(as)f(a)g(constrain)o(t,)g (so)g(long)f(as)h(the)h(expressions)g(on)f(eac)o(h)g(side)h(of)e(the)i (relation)144 1087 y(can)j(b)q(e)h(in)o(terpreted)h(as)e(linear.)24 b(F)m(or)15 b(instance,)i(the)g(language)e(allo)o(ws)g(a)g(parameter)h(to)g (m)o(ultiply)d(a)144 1137 y(sum)g(of)g(v)n(ariables,)g(or)h(a)f(v)n(ariable)g (to)h(b)q(e)g(divided)g(b)o(y)f(a)h(parameter.)206 1203 y(Certain)i(pairs)f (of)f(related)i(constrain)o(ts)g(are)f(most)f(con)o(v)o(enien)o(tly)h (expressed)j(as)d(double)g(inequal-)144 1253 y(ities.)21 b(In)15 b Fe(pr)o(od)p Fq(,)h(the)f(n)o(um)o(b)q(er)g(of)f(crews)i(emplo)o(y)o(ed)e (eac)o(h)h(p)q(erio)q(d)h(m)o(ust)e(lie)g(b)q(et)o(w)o(een)j(the)e(minim)n (um)144 1303 y(and)f(maxim)n(um)9 b(for)14 b(that)g(p)q(erio)q(d:)308 1386 y Fg(emplbnd)j({t)i(in)f(time}:)g(cmin[t])f(<=)h(Crews[t])f(<=)i (cmax[t];)144 1469 y Fq(If)h Ff(cmin[t])e Fq(is)i(less)h(than)f Ff(cmax[t])e Fq(then)j(this)f(constrain)o(t)g(giv)o(es)g(upp)q(er)h(and)f(lo) o(w)o(er)g(b)q(ounds)g(for)144 1519 y(v)n(ariable)c Ff(Crews[t])p Fq(;)h(if)g Ff(cmin[t])e Fq(equals)j Ff(cmax[t])e Fq(then)i Ff(Crews[t])d Fq(is)i(e\013ectiv)o(ely)i(\014xed)e(at)h(their)144 1569 y(common)10 b(v)n(alue.)17 b(Tw)o(o)12 b(further)h(p)q(ossibilities)f(o) q(ccur)i(in)e Fe(dist)p Fq(,)f(where)j(the)f(n)o(um)o(b)q(er)f(of)g(crews)i (required)144 1619 y(to)e(carry)g(out)g(all)f(regular-time)g(pro)q(duction)h (in)g(a)f(p)q(erio)q(d)i(m)o(ust)e(lie)g(within)g(sp)q(eci\014ed)j(b)q(ounds) f(at)e(eac)o(h)144 1668 y(factory:)308 1746 y Fg(rlim)18 b({f)h(in)g(fact}:)e (rmin[f])g(<=)406 1791 y(sum)h({p)h(in)g(prd})f(\(pt[p,f])f(*)i(Rprd[p,f])o (\))e(/)i(\(dp[f])e(*)i(hd[f]\))f(<=)g(rmax[f];)144 1871 y Fq(Because)c(only)d(the)h(middle)f(expression)i(con)o(tains)f(v)n(ariables,)f (this)h(double)f(inequalit)o(y)g(can)h(b)q(e)h(treated)144 1921 y(as)g(a)f(single)g(constrain)o(t.)18 b(F)m(or)12 b(eac)o(h)h(mem)o(b)q (er)d Ff(f)j Fq(of)e Ff(fact)p Fq(,)h(if)f Ff(rmin[f])g Fq(is)i(less)g(than)f Ff(rmax[f])f Fq(then)i(the)144 1971 y(asso)q(ciated)j(constrain)o(t)f(is)f (an)h(inequalit)o(y)e(whose)j(slac)o(k)e(is)h(b)q(ounded)g(b)o(y)g Ff(rmax[f])e(-)h(rmin[f])g Fq(\(that)144 2021 y(is,)f(a)f Fp(r)n(ange)h Fq(in)g(traditional)e(linear)i(programming)c(terminology\);)i(if)h Ff(rmin[f])g Fq(equals)h Ff(rmax[f])e Fq(then)144 2071 y(the)j(constrain)o(t) h(is)e(just)i(an)e(equalit)o(y)m(.)206 2137 y(Altogether,)k(from)d(the)i (standp)q(oin)o(t)g(of)f(an)g(algorithm)f(for)h(solving)g(linear)g(programs,) f(there)k(are)144 2187 y(four)d(kinds)g(of)g(double)g(inequalities)f(that)h (ma)o(y)f(b)q(e)h(treated)i(in)e(four)g(di\013eren)o(t)h(w)o(a)o(ys.)21 b(F)m(rom)14 b(a)h(mo)q(d-)144 2237 y(eler's)g(standp)q(oin)o(t,)e(ho)o(w)o (ev)o(er,)h(these)i(are)f(all)d(just)j(linear)f(constrain)o(ts.)19 b(Hence)d(the)e(AMPL)h(language)144 2286 y(pro)o(vides)e(no)f(sp)q(ecial)h (syn)o(tax)g(for)f(distinguishing)f(one)i(kind)f(from)f(another;)i(the)g (distinction)g(is)f(made)144 2336 y(optionally)g(b)o(y)i(the)g(mo)q(del)e (translator,)i(as)g(Section)g(6)g(will)e(explain.)206 2403 y(Some)18 b(kinds)h(of)f(constrain)o(ts)i(ha)o(v)o(e)e(t)o(w)o(o)h(or)f(more) g(closely)h(related)h(v)n(arian)o(ts.)32 b(In)19 b Fe(dist)p Fq(,)f(as)h(an)144 2452 y(example,)10 b(there)k(are)e(t)o(w)o(o)f(v)n (arieties)h(of)f(transshipmen)o(t)h(constrain)o(ts.)18 b(A)o(t)12 b(eac)o(h)g(ordinary)f(distribution)144 2502 y(cen)o(ter,)18 b(the)e(amoun)o(t)e(of)i(eac)o(h)g(pro)q(duct)h(transshipp)q(ed)g(m)o(ust)e (equal)h(at)f(least)i(the)f(amoun)o(t)e(shipp)q(ed)144 2552 y(out)g(of)g(the)h(cen)o(ter;)h(at)f(eac)o(h)g(factory)f(distribution)g(cen)o (ter,)i(the)f(amoun)o(t)e(transshipp)q(ed)j(m)o(ust)d(equal)144 2602 y(at)i(least)h(the)h(amoun)o(t)c(shipp)q(ed)k(out)e(of)g(the)h(cen)o (ter)i Fp(minus)d Fq(the)i(amoun)o(t)c(pro)q(duced)k(at)f(the)g(factory)m(.) 948 2768 y(22)p eop %%Page: 21 44 bop 144 30 a Fr(4.)42 b(The)18 b(Linear)g(Program)206 109 y Fq(The)h(most)d(complicated)h(comp)q(onen)o(ts)g(of)g(linear)h(programs)e (are)j(the)f(constrain)o(ts.)31 b(Th)o(us,)18 b(fol-)144 159 y(lo)o(wing)13 b(a)i(brief)g(consideration)f(of)h(the)g(v)n(ariables)f(in)h Fk(x)p Fq(4.1,)f(most)f(of)h(this)h(section)h(is)f(concerned)h(with)144 209 y(constrain)o(t)h(declarations.)27 b(In)17 b Fk(x)p Fq(4.2)f(w)o(e)h (\014rst)h(examine)d(some)h(fairly)g(straigh)o(tforw)o(ard)g(indexed)h(col-) 144 258 y(lections)g(of)f(algebraic)g(constrain)o(ts)h(and)g(their)g (transcriptions)g(in)o(to)f(AMPL.)h(W)m(e)f(then)h(in)o(v)o(estigate)144 308 y(the)d(issues)g(that)f(m)o(ust)f(b)q(e)i(resolv)o(ed)g(in)e(handling)g (three)j(common)10 b(but)j(more)g(di\016cult)f(cases:)19 b(double)144 358 y(inequalities,)13 b(optional)f(linear)i(terms,)f(and)g(\\slices")i(o)o (v)o(er)e(comp)q(ound)g(sets.)206 424 y(T)m(o)i(conclude)i(this)e(section,)i (a)e(few)h(commen)o(ts)e(on)h(the)h(sp)q(eci\014cation)h(of)e(the)h(ob)r (jectiv)o(e)g(are)g(col-)144 474 y(lected)f(in)e Fk(x)q Fq(4.3.)144 590 y Fo(4.1)36 b(V)l(ariables)206 657 y Fq(The)13 b(v)n(ariables)f(of)g(an)g (algebraic)g(linear)g(programmi)o(ng)e(mo)q(del)g(are)j(describ)q(ed)i(in)d (m)o(uc)o(h)f(the)i(same)144 707 y(w)o(a)o(y)i(as)g(the)h(n)o(umerical)e (data.)23 b(Th)o(us)16 b(an)f(AMPL)h(declaration)f(for)g(a)g(v)n(ariable)g (consists)h(of)f(the)h(k)o(ey-)144 757 y(w)o(ord)i Ff(var)f Fq(follo)o(w)o(ed)g(b)o(y)h(an)g(iden)o(ti\014er,)h(follo)o(w)o(ed)d(b)o(y)i (the)h(same)e(kinds)h(of)g(optional)f(indexing)g(and)144 806 y(quali\014cation)12 b(expressions)k(that)e(migh)o(t)e(app)q(ear)i(in)f(a)h Ff(param)f Fq(declaration.)206 873 y(A)h(few)g(v)n(ariables)f(in)h(the)g Fe(egypt)g Fq(mo)q(del)e(are)j(neither)f(indexed)h(nor)f(quali\014ed:)308 956 y Fg(var)k(Psip;)144 1039 y Fq(Ho)o(w)o(ev)o(er,)c(most)e(of)h(the)i(v)n (ariables)d(in)i(a)f(large)g(linear)h(program)e(are)i(de\014ned)h(as)e (indexed)h(collections,)144 1089 y(and)g(are)g(nonnegativ)o(e.)k(Th)o(us)c Fe(pr)o(od)p Fq(,)g(for)f(example,)f(con)o(tains)i(the)h(follo)o(wing)c (declarations:)308 1166 y Fg(var)18 b(Crews)g({first-1.)o(.la)o(st})e(>=)j (0;)308 1212 y(var)f(Hire)g({time})g(>=)g(0;)308 1257 y(var)g(Rprd)g ({prd,time})e(>=)j(0;)308 1303 y(var)f(Inv)h({prd,time)o(,1)o(..l)o(ife)o(})d (>=)j(0;)144 1383 y Fq(The)c(quali\014cation)e Ff(>=)g(0)h Fq(represen)o(ts)j(a)d(simple)f(constrain)o(t)i(on)f(these)i(v)n(ariables.)i (Because)e(nonnega-)144 1433 y(tivit)o(y)d(is)g(so)h(common,)c(and)k(b)q (ecause)h(it)e(is)h(handled)f(implicitly)e(b)o(y)i(nearly)g(all)g(algorithms) e(for)i(linear)144 1483 y(programming)o(,)d(it)i(is)h(almost)e(alw)o(a)o(ys)h (sp)q(eci\014ed)i(as)f(part)g(of)f(a)g(v)n(ariable's)g(declaration)g(rather)i (than)f(as)144 1532 y(an)h(explicit)f(constrain)o(t.)206 1599 y(More)k(generally)m(,)f(the)h(quali\014cation)e(expression)j(ma)o(y)c(sp)q (ecify)j(an)o(y)g(lo)o(w)o(er)f(or)g(upp)q(er)i(b)q(ound)e(on)144 1649 y(eac)o(h)k(v)n(ariable.)35 b(Tw)o(o)19 b(suc)o(h)h(expressions)h(ma)o (y)d(b)q(e)j(giv)o(en)e(to)g(sp)q(ecify)i(b)q(oth)e(a)h(lo)o(w)o(er)f(and)h (an)f(up-)144 1698 y(p)q(er)f(b)q(ound.)29 b(Alternativ)o(ely)m(,)17 b(one)h(or)g(b)q(oth)f(one)h(or)g(b)q(oth)f(b)q(ounds)h(ma)o(y)e(b)q(e)i (describ)q(ed)h(b)o(y)e(explicit)144 1748 y(constrain)o(ts,)d(as)g(discussed) i(further)e(b)q(elo)o(w.)144 1864 y Fo(4.2)36 b(Constrain)o(ts)206 1931 y Fq(A)16 b(linear)f(constrain)o(t)h(sa)o(ys)g(that)g(one)g(linear)f (arithmetic)g(expression)i(is)e(equal)h(to,)f(greater)i(than)144 1981 y(or)g(equal)g(to,)h(or)f(less)h(than)f(or)h(equal)f(to)g(another)h (linear)e(arithmetic)h(expression.)29 b(T)o(ypical)16 b(linear)144 2030 y(programs)11 b(ha)o(v)o(e)h(few)g(distinct)h Fp(kinds)f Fq(of)g(constrain)o(ts;)h(10)e(kinds)h(or)g(few)o(er)h(is)f(normal,)e(and)i (20)g(is)g(large.)144 2080 y(Eac)o(h)g(kind)g(of)f(constrain)o(t)h(can)g(b)q (e)h(represen)o(ted)i(b)o(y)c(a)h(single)f(sym)o(b)q(olic)f(equalit)o(y)h(or) h(inequalit)o(y)f(in)g(the)144 2130 y(parameters,)i(the)h(v)n(ariables)f(and) h(one)f(or)h(more)e(dumm)o(y)f(indices.)18 b(As)c(the)h(dumm)o(y)10 b(indices)k(run)g(o)o(v)o(er)144 2180 y(certain)g(sets,)h(a)f(sym)o(b)q(olic) e(constrain)o(t)i(giv)o(es)g(rise)g(to)g(man)o(y)e(explicit)h(ones.)206 2246 y(The)f(AMPL)g(transcription)g(of)e(a)i(constrain)o(t)f(declaration)g (th)o(us)h(has)g(t)o(w)o(o)f(ma)r(jor)f(parts:)17 b(an)11 b(index-)144 2296 y(ing)j(expression,)i(iden)o(tical)e(in)g(form)f(to)i(those)g(found)g (elsewhere)h(in)f(an)f(AMPL)h(mo)q(del,)e(and)i(a)f(com-)144 2346 y(parison)d(expression)h(using)f Ff(=)p Fq(,)g Ff(<=)g Fq(or)g Ff(>=)p Fq(.)17 b(Preceding)12 b(these)h(are)e(the)h(optional)e(k)o (eyw)o(ords)h Ff(subject)f(to)p Fq(,)144 2396 y(and)j(a)g(constrain)o(t)h (iden)o(ti\014er.)k(\(In)c(the)g(declaration)f(of)f(the)i(mo)q(del,)e(the)i (constrain)o(t)g(iden)o(ti\014er)f(serv)o(es)144 2446 y(only)j(as)g(a)g(syn)o (tactic)h(place-holder,)g(and)f(p)q(erhaps)i(as)e(a)h(suggestiv)o(e)g(name)e (for)h(do)q(cumen)o(tary)g(pur-)144 2495 y(p)q(oses.)21 b(The)15 b(iden)o(ti\014er)f(could)h(also)e(b)q(e)i(useful,)g(ho)o(w)o(ev)o(er,)f(as)g (a)h(name)e(for)h(the)h(constrain)o(t)g(in)f(rep)q(orts)144 2545 y(of)f(slac)o(k)h(and)g(dual)f(v)n(alues)h(follo)o(wing)d (optimization.\))206 2612 y(Sev)o(eral)i(t)o(ypical)g(uncomplicated)f (constrain)o(ts)h(are)h(found)e(in)h Fe(pr)o(od)p Fq(.)18 b(F)m(or)13 b(eac)o(h)g(planning)f(p)q(erio)q(d,)948 2768 y(21)p eop %%Page: 20 45 bop 144 30 a Fq(mem)o(b)q(er)9 b Ff(t)i Fq(from)e Ff(time)p Fq(,)i(and)f(the)i(result)g(assigned)f(to)g Ff(minv[p,t])p Fq(.)k(The)d(amoun)o(t)d(of)h(initial)f(in)o(v)o(en)o(tory)144 80 y(a)o(v)n(ailable)g(for)h(allo)q(cation)g(after)h(p)q(erio)q(d)g Ff(t)g Fq(is)g(also)f(a)h(computed)f(parameter;)h(it)g(is)g(the)g(initial)e (in)o(v)o(en)o(tory)144 130 y(\(if)k(an)o(y\))h(that)g(remains)f(after)h (deducting)g(the)h(demand)d(for)i(the)g(\014rst)h Ff(t)f Fq(p)q(erio)q(ds:) 308 209 y Fg(param)k(iil)g({p)h(in)g(prd,)f(t)h(in)g(time})406 255 y(:=)g(iinv[p])e(less)h(sum)g({v)h(in)g(first..t})d(dem[p,v];)144 335 y Fq(Both)i Ff(minv)e Fq(and)h Ff(iil)g Fq(subsequen)o(tly)i(app)q(ear)e (in)g(the)h(in)o(v)o(en)o(tory)f(requiremen)o(t)g(constrain)o(ts,)i(where)144 385 y(the)14 b(constan)o(t)h(term)e(is)h Ff(minv[p,t])e(-)i(iil[p,t])p Fq(.)206 451 y(An)o(y)d(attempt)f(to)g(pro)o(vide)h(explicit)f(v)n(alues)g (for)h Ff(minv)f Fq(or)g Ff(iil)p Fq(,)g(in)h(the)g(sp)q(eci\014cation)g(of)f (the)i(mo)q(del's)144 501 y(data,)k(will)f(b)q(e)i(rejected)h(as)e(an)g (error.)27 b(Ho)o(w)o(ev)o(er,)17 b(if)e(the)i(k)o(eyw)o(ord)f Ff(default)f Fq(is)h(emplo)o(y)o(ed)f(in)h(place)144 551 y(of)d(the)i Ff(:=)f Fq(op)q(erator,)g(then)g(v)n(alues)g(for)g(some)f(or)h(all)f(of)g (the)i(parameters)f Ff(minv[p,t])e Fq(and)i Ff(iil[p,t])144 601 y Fq(ma)o(y)e(b)q(e)i(giv)o(en)g(along)f(with)g(the)i(other)f(data,)f (and)h(will)e(o)o(v)o(erride)i(the)h(computed)e(v)n(alues.)206 667 y(As)i(another)g(alternativ)o(e,)f(a)g(separate)i(prepro)q(cessing)g (program)d(could)h(b)q(e)i(used)f(to)f(compute)g(all)144 717 y(the)j(v)n(alues)f(for)g(parameters)g(suc)o(h)h(as)f Ff(minv)g Fq(and)g Ff(iil)p Fq(,)f(in)h(whic)o(h)g(case)i(they)e(could)g(b)q(e)h (treated)h(lik)o(e)144 767 y(an)o(y)f(other)h(data)f(parameters)h(in)f(the)h (AMPL)g(mo)q(del.)27 b(Suc)o(h)18 b(an)g(approac)o(h)f(is)g(una)o(v)o (oidable)f(when)144 817 y(the)d(computations)f(in)o(v)o(olv)o(e)f(something)h (more)f(complicated)h(than)h(the)g(ev)n(aluation)e(of)i(an)f(arithmetic)144 866 y(expression)k(\(suc)o(h)g(as)f(the)h(application)d(of)h(an)h (algorithm\).)k(W)m(e)14 b(prefer,)i(ho)o(w)o(ev)o(er,)f(to)g(represen)o(t)i (the)144 916 y(\\ra)o(w")d(data)h(as)g(parameters)g(in)g(the)h(mo)q(del)d (whenev)o(er)k(p)q(ossible;)e(then)h(an)o(y)f(arithmetic)f(pro)q(cessing)144 966 y(of)e(these)i(data)e(m)o(ust)f(app)q(ear)i(explicitly)f(in)g(the)h(mo)q (del's)d(declarations,)j(whic)o(h)f(are)h(easy)g(to)f(read)h(and)144 1016 y(c)o(hec)o(k)i(for)e(v)n(alidit)o(y)m(.)i(The)f(p)q(o)o(w)o(er)g(and)f (v)n(ariet)o(y)g(of)g(AMPL's)h(arithmetic)e(expressions)k(should)d(tend)h(to) 144 1066 y(encourage)h(this)f(practice.)948 2768 y(20)p eop %%Page: 19 46 bop 144 30 a Fq(imp)q(ortan)o(t)12 b(for)i(one)g(of)f(our)h(larger)g(test)h (problems)e(that)h(manipulates)e(a)h(set)i(of)e(quin)o(tuples.\))206 97 y(Finally)m(,)h(there)j(are)f(instances)h(in)f(whic)o(h)f(a)h(parameter's) f(v)n(alue)g(m)o(ust)g(dep)q(end)i(on)f(some)f(logical)144 146 y(condition.)24 b(As)17 b(an)f(example,)f Ff(road[r,pl])g Fq(is)h(the)h(distance)g(from)d(plan)o(t)i Ff(pl)g Fq(to)g(region)g Ff(r)p Fq(,)g(or)g(zero)144 196 y(if)e(plan)o(t)h Ff(pl)g Fq(is)g(in)g (region)g Ff(r)p Fq(.)22 b(T)m(ransp)q(ortation)14 b(from)g(a)h(plan)o(t)f (to)i(a)e(region)h(incurs)h(a)f(\014xed)h(cost)g(plus)144 246 y(a)e(cost)i(prop)q(ortional)d(to)i(distance,)g(but)g(only)f(if)g(the)h(plan) o(t)f(is)h(outside)g(the)g(region.)20 b(The)15 b(arithmetic)144 296 y(expression)g(for)f(transp)q(ortation)g(cost)g(is)g(th)o(us)g(as)g (follo)o(ws:)308 379 y Fg(if)19 b(road[r,pl)o(])d(>)k(0)f(then)f(.5)h(+)g (.0144)f(*)h(road[r,pl)o(])e(else)h(0)144 462 y Fq(If)f(the)i(condition)e(b)q (et)o(w)o(een)i Ff(if)f Fq(and)f Ff(then)g Fq(is)h(true,)h(then)g(the)f(en)o (tire)h(expression)g(tak)o(es)f(the)h(v)n(alue)144 512 y(b)q(et)o(w)o(een)14 b Ff(then)d Fq(and)h Ff(else)p Fq(;)g(if)f(instead)i(the)f(condition)g(is)g (false,)g(then)h(the)g(expression)g(tak)o(es)g(the)g(v)n(alue)144 561 y(after)20 b Ff(else)p Fq(.)34 b(The)20 b(en)o(tire)g Ff (if...then...else)o(...)c Fq(construct)21 b(ma)o(y)d(itself)h(serv)o(e)i(as)e (an)g(op)q(erand)144 611 y(wherev)o(er)c(appropriate;)f Fe(egypt)g Fq(uses)h(a)e(sum)g(of)h(conditionals,)347 689 y Fg(\(if)19 b(impd_bar)o(g[p)o(l])d(>)j(0)h(then)e(1.0)g(+)h(.0030)f(*)h(impd_barg[)o (pl])d(else)i(0\))308 734 y(+)h(\(if)g(impd_roa)o(d[p)o(l])d(>)j(0)h(then)e (0.5)g(+)h(.0144)f(*)h(impd_road[)o(pl])d(else)i(0\))144 814 y Fq(to)c(com)o(bine)e(the)j(costs)g(for)e(barge)h(and)g(road)g(transp)q (ortation)g(of)f(imp)q(orted)g(ra)o(w)h(materials.)206 881 y(The)i Ff(else)e Fq(part)h(of)f(a)h(conditional)f(expression)i(ma)o(y)d(b)q (e)i(omitted,)f(in)g(whic)o(h)h(case)h Ff(else)e(0)h Fq(is)g(as-)144 930 y(sumed.)23 b(This)15 b(default)h(is)f(particularly)g(con)o(v)o(enien)o (t)h(in)f(sp)q(ecifying)h(optional)e(terms)i(of)f(constrain)o(ts,)144 980 y(as)21 b(will)f(b)q(e)i(seen)g(in)f(Section)h(4.)39 b(The)22 b(scop)q(e)g(of)f(the)h(expression)g(follo)o(wing)d Ff(else)h Fq(\(or)h Ff(then)p Fq(,)h(if)144 1030 y(there)e(is)e(no)g Ff(else)p Fq(\))g(is)g(to)g(the)h(end)g(of)f(the)h(expression)g(that)g(follo) o(ws.)30 b(Th)o(us)18 b Ff(if...then...)e Fq(and)144 1080 y Ff(if...then...else.)o(..)11 b Fq(constructs)16 b(are)e(normally)d(paren)o (thesized)16 b(to)e(mak)o(e)e(their)j(scop)q(e)g(clear.)144 1196 y Fo(3.3)36 b(Computed)14 b(parameters)206 1263 y Fq(It)19 b(is)g(seldom)e(p)q(ossible)i(to)g(arrange)g(that)g(the)g(data)g(a)o(v)n (ailable)d(to)j(a)f(mo)q(del)f(are)j(precisely)f(the)144 1312 y(co)q(e\016cien)o(t)d(v)n(alues)f(required)h(in)f(the)g(ob)r(jectiv)o(e)h (and)f(constrain)o(ts.)23 b(Th)o(us)15 b(the)h(co)q(e\016cien)o(ts)g(are)g (often)144 1362 y(sp)q(eci\014ed)e(b)o(y)d(expressions)j(in)d(the)i (parameters.)k(F)m(or)12 b(example,)f Fe(pr)o(od)h Fq(giv)o(es)g(the)h(total) e(regular)h(w)o(ages)144 1412 y(for)i(crews)h(in)e(p)q(erio)q(d)i Ff(t)e Fq(as)308 1495 y Fg(rtr)18 b(*)i(sl)e(*)i(dpp[t])d(*)i(cs)g(*)g (Crews[t])144 1578 y Fq(where)d Ff(rtr)f Fq(is)g(the)h(w)o(age)f(rate)h(p)q (er)g(w)o(ork)o(er)f(in)g(dollars)g(p)q(er)h(hour,)f Ff(sl)g Fq(is)g(the)h(n)o(um)o(b)q(er)e(of)h(hours)g(in)g(a)144 1628 y(daily)9 b(shift,)h Ff(dpp[t])f Fq(is)h(the)h(n)o(um)o(b)q(er)f(of)f(da)o (ys)h(in)g(the)h(p)q(erio)q(d,)g Ff(cs)f Fq(is)g(the)h(n)o(um)o(b)q(er)e(of)h (w)o(ork)o(ers)h(in)e(a)h(crew,)144 1678 y(and)k Ff(Crews[t])e Fq(is)j(a)e(v)n(ariable)g(that)i(stands)g(for)e(the)i(n)o(um)o(b)q(er)f(of)f (crews)j(in)e(the)g(p)q(erio)q(d.)20 b(Expressions)144 1727 y(also)13 b(app)q(ear)i(as)f(constan)o(t)g(terms)g(\(righ)o(t-hand)f(sides,)i (in)e(LP)h(terminology\))e(for)h(the)i(constrain)o(ts.)k(In)144 1777 y(the)14 b(\014rst-p)q(erio)q(d)h(demand)e(requiremen)o(t)h(constrain)o (t)g(for)g(pro)q(duct)h Ff(p)p Fq(,)e(the)h(term)308 1860 y Fg(dem[p,fir)o(st])i(less)i(iinv[p])144 1943 y Fq(is)d(ev)n(aluated)f(as)h (demand)e(min)o(us)g(initial)g(in)o(v)o(en)o(tory)h(if)g(demand)g(exceeds)i (initial)d(in)o(v)o(en)o(tory)m(,)g(or)i(zero)144 1993 y(otherwise.)206 2060 y(Although)h(an)o(y)g(parameter)g(expression)h(ma)o(y)d(b)q(e)j(used)g (in)f(the)h(ob)r(jectiv)o(e)f(and)g(constrain)o(ts,)h(the)144 2109 y(expressions)d(are)e(b)q(est)i(k)o(ept)e(simple)f(as)i(in)e(the)i (examples)f(ab)q(o)o(v)o(e.)17 b(When)12 b(more)f(complex)g(expressions)144 2159 y(are)20 b(needed,)h(the)f(mo)q(del)e(is)h(usually)f(easier)i(to)f (understand)i(if)d(new,)j(computed)d(parameters)i(are)144 2209 y(de\014ned)15 b(in)e(terms)h(of)f(the)i(data)e(parameters.)206 2275 y(Declarations)h(for)f(computed)g(parameters)h(are)g(m)o(uc)o(h)e(lik)o (e)h(the)h(declarations)g(for)f(computed)h(sets)144 2325 y(that)19 b(w)o(ere)g(seen)h(in)e(the)h(previous)g(section.)33 b(In)18 b Fe(pr)o(od)p Fq(,)i(the)f(minim)n(um)14 b(in)o(v)o(en)o(tory)19 b(for)f(pro)q(duct)h Ff(p)144 2375 y Fq(in)f(p)q(erio)q(d)g Ff(t)g Fq(is)g(de\014ned)h(to)e(b)q(e)i(its)f(demand)f(in)h(the)g(follo)o (wing)e(p)q(erio)q(d)i(times)f(either)i Ff(pir)e Fq(or)h Ff(rir)p Fq(,)144 2425 y(dep)q(ending)c(on)g(whether)h(it)f(will)e(b)q(e)j(promoted:) 308 2502 y Fg(param)j(minv)g({p)g(in)h(prd,)f(t)i(in)e(time})406 2548 y(:=)h(dem[p,t+1)o(])d(*)k(\(if)e(pro[p,t+1])e(then)i(pir)g(else)h (rir\);)144 2628 y Fq(The)12 b(expression)g(follo)o(wing)c Ff(:=)j Fq(is)g(ev)n(aluated)g(for)g(eac)o(h)g(com)o(bination)e(of)h(a)h(mem) o(b)q(er)f Ff(p)g Fq(from)g Ff(prd)g Fq(and)h(a)948 2768 y(19)p eop %%Page: 18 47 bop 717 65 a Fq(Iterated)110 b(Underlying)712 115 y(op)q(erator)63 b(binary)13 b(op)q(erator)p 712 140 154 2 v 928 140 285 2 v 756 200 a Ff(sum)237 b(+)745 250 y(prod)226 b(*)756 300 y(min)756 350 y(max)724 400 y(exists)192 b(or)724 449 y(forall)181 b(and)673 539 y Fo(T)l(able)15 b(3{2.)k Fl(Iterated)c(op)q(erators.)206 713 y Fq(Expressions)g(can)f(also)e(b)q(e)j(built)d(b)o(y)h(iterating)g (certain)h(op)q(erations)g(o)o(v)o(er)g(sets.)19 b(Most)14 b(common)c(is)144 763 y(the)k(iterated)h(summation,)10 b(represen)o(ted)17 b(b)o(y)d(a)f(\006)h(in)g(algebraic)f(notation)g(and)h(b)o(y)f Ff(sum)h Fq(in)f(AMPL:)308 846 y Fg(sum)18 b({p)h(in)g(prd})f(dem[p,w])144 929 y Fq(An)o(y)12 b(indexing)e(expression)j(ma)o(y)d(follo)o(w)f Ff(sum)p Fq(.)17 b(The)12 b(subsequen)o(t)h(arithmetic)e(expression)i(is)e (ev)n(aluated)144 979 y(once)g(for)f(eac)o(h)g(mem)o(b)q(er)f(of)g(the)i (index)f(set,)i(and)e(all)e(the)j(resulting)f(v)n(alues)g(are)h(added.)17 b(Th)o(us)10 b(the)h(ab)q(o)o(v)o(e)144 1028 y(sum)i(from)f Fe(dist)h Fq(represen)o(ts)k(the)d(total)g(demand)e(for)i(all)f(pro)q(ducts)i (at)f(w)o(arehouse)h Ff(w)p Fq(.)j(In)c(precedence)144 1078 y(the)g Ff(sum)f Fq(op)q(erator)h(lies)f(b)q(et)o(w)o(een)i(binary)e Ff(+)g Fq(and)g Ff(*)p Fq(,)g(so)h(that)f(the)h(expression)h(follo)o(wing)c Ff(sum)h Fq(includes)144 1128 y(ev)o(erything)i(up)g(to)g(the)g(next)h(+)f (or)g Fk(\000)g Fq(not)g(within)f(a)g(paren)o(thesized)j(sub)q(expression.) 206 1194 y(By)h(allo)o(wing)e(an)o(y)i(indexing)f(expression)i(after)f Ff(sum)p Fq(,)g(AMPL)g(pro)o(vides)g(a)g(general)g(and)g(\015exible)144 1244 y(notation)9 b(for)g(summations.)k(Ev)o(en)d(the)g(complicated)f(sums)f (in)i(linear)f(constrain)o(ts)h(can)f(b)q(e)h(transcrib)q(ed)144 1294 y(straigh)o(tforw)o(ardly)m(,)20 b(as)g(examples)f(in)g(Section)i(4)e (will)g(sho)o(w.)37 b(Moreo)o(v)o(er,)21 b(the)g(generalit)o(y)e(of)h(this) 144 1344 y(notation)15 b(actually)g(mak)o(es)g(the)i(language)e(simpler,)g (in)g(that)h(the)h(rules)g(for)e(indexing)h(a)f Ff(sum)h Fq(are)g(no)144 1394 y(di\013eren)o(t)h(from)d(the)j(rules)f(for)g(indexing)f(a)h Ff(param)f Fq(declaration.)24 b(The)16 b(AMPL)h(user)g(needs)g(to)f(learn)144 1444 y(only)d(one)h(syn)o(tax)g(for)g(index)f(sets.)206 1510 y(Other)h(asso)q(ciativ)o(e,)e(comm)o(utativ)n(e)e(op)q(erators)j(can)f(b)q (e)h(iterated)g(just)g(lik)o(e)e Ff(sum)p Fq(.)17 b(T)m(able)11 b(3{2)h(sho)o(ws)144 1560 y(those)k(a)o(v)n(ailable)c(in)j(AMPL)g(for)f (arithmetic)g(and)h(logical)e(op)q(erations.)21 b(An)15 b(example)f(of)g Ff(forall)p Fq(,)f(an)144 1610 y(iterated)i(op)q(erator)f(that)g(returns)h(a) f(logical)e(result,)i(is)g(found)g(in)f(the)h Fe(egypt)g Fq(mo)q(del:)308 1693 y Fg(forall)j({u)i(in)g(unit:)e(util[u,pr])f(>)j(0})g(u)h(in)e (m_pos[pl])144 1776 y Fq(Giv)o(en)c(a)g(pro)q(cess)j Ff(pr)d Fq(and)g(a)g(plan)o(t)g Ff(pl)p Fq(,)g(this)h(expression)h(is)e(true)i(if)d (and)i(only)f(if,)f(for)h(ev)o(ery)i(mem)o(b)q(er)144 1825 y Ff(u)g Fq(of)f Ff(unit)g Fq(suc)o(h)i(that)f Ff(util[u,pr])e Fq(is)i(p)q(ositiv)o(e,)g Ff(u)g Fq(is)g(also)f(a)h(mem)o(b)q(er)e(of)i(the)g (set)h Ff(m_pos[pl])p Fq(.)23 b(In)144 1875 y(other)13 b(w)o(ords,)f(since)i Ff(m_pos[pl])c Fq(is)i(the)h(set)h(of)d(units)i(for)f(whic)o(h)g(initial)f (capacit)o(y)h(exists)h(at)f(plan)o(t)g Ff(pl)p Fq(,)144 1925 y(while)g Ff(util[u,pr])f Fq(is)h(p)q(ositiv)o(e)h(exactly)f(when)h(pro)q (cess)i Ff(pr)d Fq(requires)i(unit)e Ff(u)p Fq(,)h(the)g(expression)h(is)e (true)144 1975 y(if)h(and)h(only)f(if)g(there)i(is)f(initial)e(capacit)o(y)i (at)f(the)i(plan)o(t)e(for)h(ev)o(ery)g(unit)g(required)h(b)o(y)e(the)i(pro)q (cess.)206 2041 y(\(There)g(are)e(also)f(iterated)i(union)f(and)g(in)o (tersection)h(op)q(erations)f(on)g(sets,)h(as)f(w)o(ell)f(as)h(an)g(iterated) 144 2091 y Ff(setof)g Fq(op)q(erator)i(that)g(builds)f(sets)i(from)c (arbitrarily)i(sp)q(eci\014ed)i(mem)o(b)q(ers.)i(As)d(an)g(illustration,)d (the)144 2141 y Fe(train)i Fq(mo)q(del)e(de\014nes)j(a)e(set)i Ff(links)e Fq(of)g(all)f(cit)o(y)i(pairs)f(that)h(ma)o(y)e(app)q(ear)i(in)f (the)i(sc)o(hedule;)f(w)o(e)g(ha)o(v)o(e)144 2191 y(sp)q(eci\014ed)h(this)f (set)h(as)f(part)g(of)f(the)i(data,)e(but)h(it)g(could)f(instead)i(b)q(e)f (computed)f(as)308 2274 y Fg(set)18 b(links)g(:=)h(setof)e({\(c1,t1,c2,)o(t2) o(\))g(in)i(schedule)o(})e(\(c1,c2\);)144 2357 y Fq(The)d(same)f(set)i(could) f(b)q(e)g(de\014ned)h(b)o(y)f(use)h(of)e(the)h(iterated)h Ff(exists)e Fq(op)q(erator:)308 2434 y Fg(set)18 b(links)g(:=)h({c1)f(in)h(cities,)e(c2)i (in)g(cities:)406 2480 y(exists)e({t1)i(in)f(times,)g(t2)h(in)f(times})g (\(c1,t1,c2)o(,t2)o(\))e(in)j(schedule};)144 2560 y Fq(The)13 b Ff(setof)e Fq(expression)j(is)f(easier)g(to)f(read,)h(ho)o(w)o(ev)o(er,)g (and)f(p)q(ermits)g(the)i(AMPL)e(translator)h(to)f(carry)144 2610 y(out)18 b(the)h(computation)e(of)h Ff(links)f Fq(more)g(e\016cien)o (tly)m(.)31 b(These)20 b(concerns)g(ha)o(v)o(e)e(pro)o(v)o(ed)h(particularly) 948 2768 y(18)p eop %%Page: 17 48 bop 144 30 a Fq(the)14 b(\014rst:)308 99 y Fg(param)k(first)f(>)i(0)h (integer;)308 145 y(param)e(last)g(>)h(first)e(integer;)144 225 y Fq(Similarly)l(,)11 b(in)i(ev)o(ery)i(p)q(erio)q(d,)e(the)i(maxim)n(um) 10 b(crew)15 b(size)f(m)o(ust)f(b)q(e)i(no)e(less)i(than)f(the)g(minim)n(um)o (:)308 302 y Fg(param)k(cmin)g({time})f(>=)i(0;)308 348 y(param)f(cmax)g({t)g (in)h(time})f(>=)h(cmin[t];)144 428 y Fq(In)f(a)f(few)h(cases,)i(simple)c (inequalities)i(are)g(insu\016cien)o(t)g(to)f(express)j(the)f(desired)g (restrictions.)31 b(T)m(o)144 478 y(accommo)q(date)14 b(all)g(p)q (ossibilities,)h(w)o(e)h(ha)o(v)o(e)g(included)g(in)f(our)h(design)g(a)f (separate)i Ff(check)e Fq(statemen)o(t)144 528 y(that)g(ma)o(y)f(accompan)o (y)f(a)i(parameter)g(declaration;)g(as)h(an)f(example,)f(the)h(follo)o(wing)e (could)i(b)q(e)h(used)144 577 y(to)e(require)g(that)g(the)h(minim)n(um)10 b(crew)15 b(sizes)g(b)q(e)f(nondecreasing:)308 655 y Fg(param)k(cmin)g ({first..)o(las)o(t};)406 700 y(check)g({t)g(in)h(first..las)o(t-1)o(})d (cmin[t])h(<=)i(cmin[t+1];)144 780 y Fq(In)13 b(general,)h(a)f Ff(check)f Fq(statemen)o(t)i(can)g(app)q(ear)f(at)h(an)o(y)f(con)o(v)o(enien) o(t)h(place)f(in)g(an)h(AMPL)g(mo)q(del,)d(and)144 830 y(can)16 b(sp)q(ecify)h(an)o(y)e(logical)g(condition)g(on)h(the)g(sets)i(and)e (parameters;)g(the)h(translator)f(tests)h(all)e(suc)o(h)144 880 y(conditions)f(and)f(rep)q(orts)j(an)o(y)d(violations.)206 946 y(The)j(parameters)f(of)g(an)g(AMPL)g(mo)q(del)f(most)g(commonly)e (represen)o(t)17 b(n)o(umerical)d(v)n(alues.)21 b(Ho)o(w-)144 996 y(ev)o(er,)12 b(parameters)f(ma)o(y)e(b)q(e)i(declared)h Ff(symbolic)d Fq(to)i(sp)q(ecify)h(that)f(their)g(v)n(alues)g(are)g (arbitrary)g(ob)r(jects)144 1046 y(suc)o(h)k(as)f(migh)o(t)d(b)q(e)k(the)f (mem)o(b)q(ers)f(of)g(an)o(y)h(set.)144 1162 y Fo(3.2)36 b(Arithmeti)o(c)14 b(and)h(logical)f(expressions)206 1229 y Fq(Arithmetic)k(expressions)h(in)f (AMPL)g(ev)n(aluate)g(to)g(\015oating-p)q(oin)o(t)e(n)o(um)o(b)q(ers.)30 b(An)o(y)18 b(parameter)144 1278 y(reference)f(or)e(n)o(umerical)f(literal)g (\()p Ff(17)p Fq(,)g Ff(2.71828)p Fq(,)f Ff(1.0e+30)p Fq(\))h(is)h(an)f (arithmetic)g(expression)i(b)o(y)f(itself.)144 1328 y(Common)c(arithmetic)j (functions)h(of)f(one)h(v)n(ariable)e(\()p Ff(abs)p Fq(,)h Ff(ceil)p Fq(,)g Ff(floor)p Fq(\))g(and)g(of)g(t)o(w)o(o)h(or)f(more)g(v)n (ari-)144 1378 y(ables)h(\()p Ff(min)p Fq(,)g Ff(max)p Fq(\))f(are)i(also)e (expressions,)j(as)e(seen)h(in)f Fe(train)p Fq(.)22 b(Longer)15 b(arithmetic)f(expressions)j(are)144 1428 y(built)c(up)h(b)o(y)g(use)h(of)e (the)h(familiar)d(op)q(erators)k(suc)o(h)f(as)g Ff(+)g Fq(and)f Ff(*)p Fq(.)206 1494 y(AMPL's)d(logical)d(expressions)k(ev)n(aluate)e(to)g (true)i(or)e(false.)16 b(They)10 b(are)g(most)e(often)h(created)i(through)144 1544 y(the)i(use)g(of)e(standard)h(comparison)f(op)q(erators)i(lik)o(e)e Ff(=)h Fq(and)g Ff(<=)p Fq(.)17 b(AMPL)12 b(also)g(pro)o(vides)g(a)g(set)h (mem)o(b)q(er-)144 1594 y(ship)i(op)q(erator,)g Ff(in)p Fq(,)f(whic)o(h)h (pro)q(duces)h(a)e(true)i(result)g(if)e(and)g(only)g(if)g(its)h(left)f(op)q (erand)i(in)e(a)h(mem)o(b)q(er)144 1644 y(of)d(its)h(righ)o(t)f(op)q(erand.) 18 b(Finally)m(,)11 b(logical)g(expressions)j(can)f(b)q(e)h(com)o(bined)d (and)i(extended)h(b)o(y)f(logic)e(op-)144 1694 y(erators)k(lik)o(e)f Ff(or)g Fq(and)g Ff(not)p Fq(.)19 b(T)m(able)14 b(3{1)g(pro)o(vides)g(a)g (summary)e(of)i(op)q(erators)h(and)g(op)q(erations,)f(listed)144 1743 y(in)f(order)i(of)e(decreasing)i(precedence.)410 1911 y(Op)q(erator)208 b(Op)q(eration)p 285 1936 415 2 v 782 1936 857 2 v 488 1996 a Ff(^)272 b Fq(exp)q(onen)o(tiation)394 2046 y Ff(+)44 b(-)f(not)191 b Fq(unary)14 b(plus,)g(min)o(us,)e(logical)g (negation)394 2096 y Ff(*)44 b(/)f(mod)191 b Fq(m)o(ultiplication,)10 b(division,)j(remainder)406 2146 y Ff(sum,)21 b Fq(etc.)203 b(iterated)15 b(addition,)d(etc.)19 b(\(see)d(T)m(able)d(3{2\))383 2196 y Ff(+)44 b(-)f(less)180 b Fq(addition,)13 b(subtraction,)h(non-negativ) o(e)f(subtraction)471 2245 y Ff(in)267 b Fq(set)15 b(mem)o(b)q(ership)340 2295 y Ff(<)21 b(<=)h(=)f(>=)h(>)f(<>)137 b Fq(comparison)460 2345 y Ff(and)256 b Fq(logical)13 b(conjunction)471 2395 y Ff(or)267 b Fq(logical)13 b(disjunction)285 2445 y Ff(if...then...else...)79 b Fq(conditional)13 b(ev)n(aluation)228 2534 y Fo(T)l(able)i(3{1.)k Fl(Arithmetic)13 b(and)h(logical)e(op)q(erators,)i(in)g(order)g(of)f (decreasing)i(precedence)q(.)948 2768 y Fq(17)p eop %%Page: 16 49 bop 144 30 a Fr(3.)42 b(Numerical)16 b(V)-5 b(alues)206 109 y Fq(An)10 b(e\013ectiv)o(e)h(large-scale)f(mo)q(deling)e(language)h(m)o(ust) g(b)q(e)h(able)g(to)f(describ)q(e)j(\\v)o(ectors")e(and)g(\\matri-)144 159 y(ces")j(and)g(similar)d(collections)i(of)g(n)o(umerical)f(v)n(alues)h (indexed)h(o)o(v)o(er)g(sets.)18 b(As)13 b(the)g(preceding)h(sections)144 209 y(ha)o(v)o(e)f(explained,)f(only)g(a)h(sym)o(b)q(olic)e(description)i(of) f(these)j(v)n(alues)d(need)i(app)q(ear)f(in)g(the)g(mo)q(del,)e(while)144 258 y(the)20 b(actual)e(data)h(can)g(b)q(e)h(giv)o(en)e(separately)i(in)f (some)f(con)o(v)o(enien)o(t)h(w)o(a)o(y)g(\(suc)o(h)g(as)h(in)e(the)i(format) 144 308 y(describ)q(ed)c(b)o(y)d(Section)i(5\).)206 375 y(In)f(AMPL)g(a)f (single)g(sym)o(b)q(olic)f(n)o(umerical)g(v)n(alue)h(is)g(called)g(a)h Fp(p)n(ar)n(ameter)p Fq(.)j(Since)d(parameters)g(are)144 424 y(most)i(often)h(indexed)g(o)o(v)o(er)g(sets,)h(w)o(e)f(will)f(lo)q(osely)g (refer)i(to)e(an)h(indexed)g(collection)g(of)f(parameters)144 474 y(as)e(\\a)g(parameter")f(when)i(the)g(meaning)d(is)i(clear.)19 b(T)m(o)13 b(b)q(egin)h(this)h(section,)f Fk(x)p Fq(3.1)f(describ)q(es)k (AMPL's)144 524 y(rules)e(for)e(declaring)h(indexed)g(parameters)g(and)g(for) f(sp)q(ecifying)h(simple)e(conditions)i(on)g(them.)206 590 y(Represen)o(tations)j(of)d(n)o(umerical)g(v)n(alues)h(are)g(com)o(bined)f(b) o(y)h(arithmetic)f(and)h(logical)f(op)q(erations)144 640 y(to)g(pro)q(duce)i (the)f(expressions)h(in)e(a)g(mo)q(del's)e(ob)r(jectiv)o(e)j(and)g(constrain) o(ts.)20 b(Along)13 b(with)h(the)h(familiar)144 690 y(unary)c(and)f(binary)g (op)q(erators,)i(con)o(v)o(en)o(tional)d(algebraic)h(notation)g(pro)o(vides)h Fp(iter)n(ate)n(d)f Fq(op)q(erators)h(suc)o(h)144 740 y(as)195 709 y Fj(P)239 719 y Fm(m)239 752 y(i)p Fi(=1)309 740 y Fq(for)j(addition)f (and)618 709 y Fj(Q)657 719 y Fm(n)657 752 y(j)r Fi(=1)730 740 y Fq(for)h(m)o(ultiplication.)h(AMPL's)g(v)o(ersions)f(of)g(these)h(op)q (erators)h(are)144 790 y(surv)o(ey)o(ed)e(in)e Fk(x)p Fq(3.2,)g(with)g (particular)g(atten)o(tion)h(to)f(the)i(use)f(of)f(AMPL)h(sets)h(in)e (indexing)g(the)h(iterated)144 840 y(summations)f(that)j(are)g(essen)o(tial)g (to)g(linear)f(programming.)k(W)m(e)c(also)g(in)o(tro)q(duce)i(a)e (conditional)g(\(if-)144 889 y(then-else\))e(construction)g(that)f(is)g (frequen)o(tly)g(useful)g Fp(within)f Fq(the)h(arithmetic)f(expressions)i(of) e(complex)144 939 y(mo)q(dels.)206 1006 y(An)i(AMPL)f(n)o(umerical)f (expression)j(ma)o(y)c(b)q(e)j(used)g(almost)e(an)o(ywhere)i(in)e(a)h(mo)q (del)f(that)i(a)f(n)o(um)o(b)q(er)144 1055 y(is)g(appropriate.)17 b(Ho)o(w)o(ev)o(er,)11 b(an)g(algebraic)f(mo)q(del)g(is)g(easiest)i(to)f (read)g(and)g(to)g(v)o(erify)f(if)g(the)h(expressions)144 1105 y(in)20 b(its)g(ob)r(jectiv)o(e)h(and)f(constrain)o(ts)h(are)f(k)o(ept)h (fairly)e(simple.)35 b(Th)o(us)20 b(AMPL)h(pro)o(vides)f(for)g(using)144 1155 y(arithmetic)14 b(expressions)i(to)e(de\014ne)i(new)f(parameters)g(in)f (terms)g(of)g(previously-de\014ned)i(parameters)144 1205 y(and)e(sets,)g(as)g (explained)g(in)f Fk(x)q Fq(3.3.)144 1321 y Fo(3.1)36 b(P)o(arameters)206 1388 y Fq(An)18 b(AMPL)f(parameter)g(declaration)g(describ)q(es)i(certain)f (data)f(required)h(b)o(y)f(a)g(mo)q(del,)f(and)h(in-)144 1437 y(dicates)i(ho)o(w)g(the)g(mo)q(del)e(will)g(refer)j(to)e(those)h(data)g(in)f (sym)o(b)q(olic)f(expressions.)33 b(Syn)o(tactically)m(,)18 b(a)144 1487 y(parameter)e(declaration)g(consists)i(of)d(the)i(k)o(eyw)o(ord) g Ff(param)e Fq(follo)o(w)o(ed)g(b)o(y)h(an)g(iden)o(ti\014er)h(and)f(b)o(y)g (op-)144 1537 y(tional)d(phrases)i(for)e(indexing,)g(c)o(hec)o(king)h(and)g (other)g(purp)q(oses.)206 1603 y(The)i(formation)d(of)i(indexing)g (expressions)i(and)e(the)h(declaration)f(of)g(indexed)h(parameters)f(ha)o(v)o (e)144 1653 y(b)q(een)g(in)o(tro)q(duced)g(in)e(Sections)i(1)e(and)h(2.)k(A)c (straigh)o(tforw)o(ard)f(example)g(is)308 1736 y Fg(param)18 b(io)g({commod,pr)o(oc})o(;)144 1819 y Fq(whic)o(h)d(de\014nes)i(the)f (input-output)f(co)q(e\016cien)o(ts)i(for)d(the)i Fe(egypt)g Fq(mo)q(del.)k(Giv)o(en)15 b(mem)o(b)q(ers)f Ff(c)h Fq(and)g Ff(p)144 1869 y Fq(of)i(the)i(sets)g Ff(commod)d Fq(and)i Ff(proc)p Fq(,)f(resp)q(ectiv)o(ely)m(,)j(the)e(corresp)q(onding)h(parameter)e(v)n (alue)g(is)h(denoted)144 1919 y Ff(io[c,p])p Fq(.)206 1985 y(Unlik)o(e)f Ff(io)p Fq(,)h(most)e(parameters)i(cannot)f(meaningfully)e (assume)i(arbitrary)g(p)q(ositiv)o(e)h(and)f(nega-)144 2035 y(tiv)o(e)g(v)n(alues.)26 b(Th)o(us)17 b(t)o(ypical)e(declarations)i(con)o (tain)f(a)h(qualifying)d(expression,)k(as)f(in)f(the)i(follo)o(wing)144 2085 y(examples)13 b(from)f Fe(pr)o(od)p Fq(:)308 2162 y Fg(param)18 b(iinv)g({prd})f(>=)i(0;)308 2208 y(param)f(cri)g({prd})g(>)h(0;)308 2254 y(param)f(life)g(>)h(0)g(integer;)144 2334 y Fq(All)e(v)n(alues)g(for)g Ff(iinv)g Fq(m)o(ust)f(b)q(e)i(nonnegativ)o(e,)g(and)f(all)g(for)g Ff(cri)g Fq(m)o(ust)f(b)q(e)i(strictly)g(p)q(ositiv)o(e;)h Ff(life)144 2383 y Fq(m)o(ust)12 b(b)q(e)i(a)e(p)q(ositiv)o(e)h(in)o(teger.) 18 b(These)c(restrictions)h(are)e(essen)o(tial)h(to)e(the)i(v)n(alidit)o(y)d (of)h(the)i(mo)q(del,)d(and)144 2433 y(are)j(enforced)i(b)o(y)d(the)i (translator)f(when)h(it)e(gets)i(to)f(the)h(p)q(oin)o(t)e(of)h(insp)q(ecting) g(the)h(data)f(v)n(alues.)k(An)o(y)144 2483 y(violation)12 b(is)i(treated)h(as)f(an)f(error.)206 2549 y(Although)f(simple)e (restrictions)k(lik)o(e)d(nonnegativit)o(y)g(and)h(in)o(tegralit)o(y)f(are)h (most)f(common,)e(others)144 2599 y(are)14 b(sometimes)f(appropriate.)18 b(In)c Fe(pr)o(od)p Fq(,)g(the)h(last)f(p)q(erio)q(d)g(of)g(the)g(planning)f (horizon)h(m)o(ust)f(b)q(e)i(after)948 2768 y(16)p eop %%Page: 15 50 bop 144 30 a Fq(b)q(e)14 b(represen)o(ted)j(instead)d(as)g(sets)h(of)e (ordered)i(pairs)f(within)f Ff(plant)g(cross)f(proc)p Fq(,)h(in)g(whic)o(h)h (case)g(the)144 80 y(pro)q(cess)h(p)q(ossibilities)d(w)o(ould)g(b)q(e)h(giv)o (en)f(b)o(y)h Ff(set)f(p_pos)f(:=)i(p_cap)e(diff)h(p_except)f Fq(and)i(the)g(pro)q(cess)144 130 y(lev)o(el)j(v)n(ariables)h(w)o(ould)f(b)q (e)h(declared)h(as)f Ff(var)f(Z)g({p_pos})g(>=)g(0)p Fq(.)27 b(The)17 b(unit-plan)o(t)f(pairs)h(for)f(whic)o(h)144 180 y(there)f(is)f(p)q (ositiv)o(e)g(capacit)o(y)f(could)h(lik)o(ewise)f(b)q(e)i(declared)g(b)o(y) 308 263 y Fg(set)j(m_pos)g(:=)h({u)g(in)f(unit,)g(pl)h(in)g(plant:)e (icap[u,pl])f(>)j(0};)144 346 y Fq(All)13 b(of)g(the)i(other)f(sets)h(of)f (sets)h(in)e Fe(egypt)h Fq(can)g(b)q(e)h(similarly)c(con)o(v)o(erted.)206 412 y(Con)o(v)o(ersely)m(,)k(the)h(set)g(of)e(pairs)h Ff(rt)g Fq(in)g(the)g Fe(dist)f Fq(mo)q(del)g(could)h(b)q(e)h(represen)o(ted)i (instead)d(as)g(a)g(set)144 462 y(of)e(sets:)308 545 y Fg(set)18 b(rt)h({d)g(in)g(dctr})e(:=)i({w)g(in)g(whse:)f(d)h(<>)g(w)g(and)f(sc[d,w])f (<)j(huge};)144 628 y Fq(F)m(or)12 b(eac)o(h)g(distribution)f(cen)o(ter)j Ff(d)p Fq(,)e(this)g(w)o(ould)f(de\014ne)i Ff(rt[d])e Fq(as)h(the)g(subset)i (of)d(w)o(arehouses)i(to)f(whic)o(h)144 678 y(the)i(cen)o(ter)i(can)e(ship.) 206 744 y(Almost)g(an)o(y)g(mo)q(del)f(that)i(uses)h(sets)g(of)e(sets)i(can)f (b)q(e)h(made)d(to)i(use)h(ordered)g(pairs)e(instead,)h(and)144 794 y(vice)g(v)o(ersa.)20 b(The)15 b(c)o(hoice)g(dep)q(ends)h(on)e(whic)o(h)g (notation)g(the)h(mo)q(deler)e(\014nds)i(more)f(appropriate)g(and)144 844 y(con)o(v)o(enien)o(t.)26 b(The)17 b(examples)f(ab)q(o)o(v)o(e)g(suggest) h(that)g(ordered)g(pairs)g(sometimes)d(o\013er)j(more)f(concise)144 894 y(but)c(less)g(descriptiv)o(e)h(expressions.)19 b(The)12 b(most)f(imp)q(ortan)o(t)f(di\013erences,)k(ho)o(w)o(ev)o(er,)e(are)g(lik)o (ely)e(to)i(arise)144 943 y(in)h(the)i(form)o(ulation)c(of)i(the)i(constrain) o(ts,)f(discussed)h(further)g(in)e(Section)i(4.)948 2768 y(15)p eop %%Page: 14 51 bop 144 30 a Fq(A)16 b(v)n(ariable)f Ff(X)h Fq(represen)o(ting)h(the)g(n)o (um)o(b)q(er)e(of)g(cars)i(in)f(eac)o(h)g(train)g(is)f(declared)i(b)o(y)f (indexing)f(it)h(o)o(v)o(er)144 80 y(the)e(set)h(of)f(quadruples:)308 163 y Fg(var)k(X)i({schedul)o(e})c(>=)j(0;)144 246 y Fq(In)14 b(the)g(data)f(for)h(this)f(mo)q(del)g(\(App)q(endix)h(D\))f Ff(cities)g Fq(has)h(4)f(mem)o(b)q(ers)f(and)i Ff(last)f Fq(is)g(48.)18 b(There)d(are)144 296 y(4)9 b Fk(\002)h Fq(48)g Fk(\002)g Fq(4)f Fk(\002)h Fq(48)i(=)h(36864)g(p)q(oten)o(tial)h(quadruples,)h(y)o(et)g Ff(schedule)e Fq(has)i(only)e(ab)q(out)i(200)f(mem)o(b)q(ers.)144 346 y(The)g(ordered)h(quadruples)g(are)f(essen)o(tial)g(to)g(a)g(clear)g(and) g(e\016cien)o(t)g(mo)q(del)f(description.)144 462 y Fo(2.4)36 b(Sets)15 b(of)g(sets)206 528 y Fq(Just)20 b(as)e(parameters,)i(v)n(ariables) e(and)g(constrain)o(ts)h(can)g(b)q(e)g(indexed)g(o)o(v)o(er)g(sets,)i(it)d (sometimes)144 578 y(mak)o(es)c(sense)j(to)e(de\014ne)h(a)f(collection)g(of)f (sets)j(indexed)e(o)o(v)o(er)g(some)g(other)h(set.)22 b(The)16 b Fe(egypt)f Fq(mo)q(del,)144 628 y(for)20 b(example,)g(p)q(ostulates)h(a)f (set)i(of)e(fertilizer)g Fp(plants)h Fq(and)f(a)g(set)h(of)f(pro)q(duction)h Fp(pr)n(o)n(c)n(esses)p Fq(.)37 b(A)o(t)144 678 y(eac)o(h)15 b(plan)o(t,)f(ho)o(w)o(ev)o(er,)h(a)f(certain)i(subset)g(of)e(pro)q(cesses)j (is)e(prohibited.)20 b(The)c(collection)e(of)g(all)g(these)144 727 y(prohibited)g(subsets)h(is)f(a)g(\\set)g(of)g(sets")h(indexed)f(o)o(v)o (er)g(the)g(set)h(of)e(plan)o(ts.)206 794 y(In)g(AMPL,)f(the)h(collection)f (of)g(subsets)i(of)e(prohibited)g(pro)q(cesses)j(is)d(declared)i(straigh)o (tforw)o(ardly:)308 871 y Fg(set)k(plant;)308 917 y(set)g(proc;)308 963 y(set)g(p_except)f({plant})g(within)g(proc;)144 1043 y Fq(One)d(set)h Ff(p_except[pl])c Fq(is)i(here)i(de\014ned)f(for)g(eac)o(h)g (mem)o(b)q(er)e Ff(pl)h Fq(in)g Ff(plant)p Fq(.)k(All)12 b(of)h(these)i(sets) g(m)o(ust)144 1092 y(b)q(e)f(subsets)h(of)e Ff(proc)p Fq(;)f(their)h(actual)g (mem)o(b)q(ership)f(is)h(sp)q(eci\014ed)i(along)d(with)h(the)h(rest)g(of)f (the)h(set)g(data,)144 1142 y(as)g(seen)h(in)f(the)g(App)q(endix)g(B)h (listing.)206 1209 y(AMPL's)h(set)h(op)q(erators)f(can)g(b)q(e)g(used)h(to)e (de\014ne)i(new)f(collections)f(of)g(sets)i(from)d(ones)i(that)g(are)144 1258 y(similarly)7 b(indexed.)17 b(F)m(or)9 b(instance,)i(a)f(second)h(set)f (of)g(sets,)h Ff(p_cap)p Fq(,)e(represen)o(ts)j(the)f(subset)g(of)e(pro)q (cesses)144 1308 y(for)16 b(whic)o(h)h(capacit)o(y)g(is)f(a)o(v)n(ailable)f (at)h(eac)o(h)i(plan)o(t.)26 b(Then)17 b(the)g(subset)i(of)d(all)f Fp(p)n(ossible)j(pr)n(o)n(c)n(esses)e Fq(at)144 1358 y(eac)o(h)e(plan)o(t)g (is)f(declared)i(as)308 1441 y Fg(set)j(p_pos)g({pl)g(in)h(plant})f(:=)g (p_cap[pl])f(diff)h(p_except[)o(pl)o(];)144 1524 y Fq(F)m(or)d(eac)o(h)h Ff(pl)f Fq(in)g Ff(plant)p Fq(,)f(this)h(declaration)h(de\014nes)g(a)f (separate)i(set)f Ff(p_pos[pl])e Fq(equal)h(to)g(the)h(\\dif-)144 1574 y(ference")21 b(of)e Ff(p_cap[pl])e Fq(and)i Ff(p_except[pl])p Fq(.)32 b(Th)o(us,)21 b(for)e(eac)o(h)h(plan)o(t,)f(the)h(subset)h(of)e(p)q (ossible)144 1624 y(pro)q(cesses)e(consists)d(of)g(the)g(ones)h(that)f(ha)o (v)o(e)f(capacit)o(y)h(a)o(v)n(ailable)e(and)h(that)h(are)h(not)e (prohibited.)206 1690 y(AMPL's)21 b(indexing)e(expressions)j(can)f(also)f(b)q (e)h(used)g(to)f(de\014ne)h(indexed)g(collections)f(of)g(sets.)144 1740 y(Consider)c(the)h(set)g Ff(unit)e Fq(of)g(pro)q(duction)i(units)f(that) g(ma)o(y)e(b)q(e)i(found)g(in)f(fertilizer)i(plan)o(ts;)f(for)f(eac)o(h)144 1790 y(com)o(bination)d(of)h(unit)h Ff(u)g Fq(and)f(plan)o(t)h Ff(pl)p Fq(,)f(there)i(is)f(an)g(initial)e(capacit)o(y)i Ff(icap[u,pl])p Fq(.)i(It)f(is)f(desirable)144 1840 y(to)g(de\014ne)h Ff(m_pos[pl])d Fq(as)i(the)g(subset)h(of)f(units)g(that)g(ha)o(v)o(e)f(p)q(ositiv)o(e)h (initial)e(capacit)o(y)i(at)f(plan)o(t)h Ff(pl)p Fq(:)308 1923 y Fg(set)k(m_pos)g({pl)g(in)h(plant})f(:=)g({u)h(in)g(unit:)f(icap[u,pl)o(])f (>)i(0};)144 2006 y Fq(More)14 b(complicated)d(expressions)k(of)d(this)h (kind)g(de\014ne)h(sev)o(eral)g(other)f(con)o(v)o(enien)o(t)h(sets)g(of)e (sets)j(in)d(the)144 2055 y Fe(egypt)i Fq(mo)q(del.)206 2122 y(Sets)19 b(of)e(sets)h(are)g(t)o(ypically)e(emplo)o(y)o(ed)g(in)h(comp)q (ound)f(indexing)h(expressions)i(for)e(parameters,)144 2172 y(v)n(ariables)g(and)g(constrain)o(ts.)29 b(As)18 b(an)f(example,)f(the)i(v)n (ariables)f Ff(Z[pl,pr])f Fq(represen)o(t)j(the)f(lev)o(els)g(of)144 2221 y(pro)q(cesses)f Ff(pr)c Fq(at)h(plan)o(ts)f Ff(pl)p Fq(.)18 b(They)c(are)g(declared)h(b)o(y)308 2304 y Fg(var)j(Z)i({pl)e(in)h(plant,)e (p_pos[pl]})f(>=)j(0;)144 2387 y Fq(The)c(simpler)f(indexing)g(expression)i Ff({plant,proc})c Fq(migh)o(t)g(ha)o(v)o(e)j(b)q(een)h(used,)f(but)g(then)h (a)e(v)n(ariable)144 2437 y(w)o(ould)e(ha)o(v)o(e)g(b)q(een)i(de\014ned)f (for)f(ev)o(ery)i(com)o(bination)c(of)i(plan)o(t)f(and)i(pro)q(cess.)19 b(The)13 b(ab)q(o)o(v)o(e)f(declaration)144 2487 y(creates)i(a)d(v)n(ariable) g(only)h(for)f(ev)o(ery)i(com)o(bination)c(of)j(a)f(plan)o(t)h(and)g(a)f(p)q (ossible)h(pro)q(cess)i(at)e(that)g(plan)o(t.)206 2554 y(Sets)k(of)e(sets)h (ha)o(v)o(e)g(m)o(uc)o(h)e(in)h(common)e(with)i(ordered)h(pairs.)20 b(Both)15 b(allo)o(w)e(a)h(mo)q(del)f(to)h(sp)q(ecify)h(a)144 2603 y(sparse)i(subset)f(of)f(the)h(cross)h(pro)q(duct)f(of)f(t)o(w)o(o)g (sets.)23 b(The)16 b(sets)h Ff(p_cap)d Fq(and)h Ff(p_except)f Fq(ab)q(o)o(v)o(e)h(could)948 2768 y(14)p eop %%Page: 13 52 bop 144 30 a Fq(of)15 b(the)h(righ)o(t)f(op)q(erand.)24 b(Th)o(us)15 b(the)h(ab)q(o)o(v)o(e)g(statemen)o(ts)f(sa)o(y)h(that)f(the)i(data)e(for)g Ff(rt)g Fq(m)o(ust)f(consist)j(of)144 80 y(ordered)e(pairs)f(whose)g(\014rst) g(comp)q(onen)o(ts)g(come)f(from)f Ff(dctr)h Fq(and)g(whose)i(second)f(comp)q (onen)o(ts)g(come)144 130 y(from)e Ff(whse)p Fq(.)206 196 y(An)i(indexing)f (expression)j(for)d Ff(rt)h Fq(migh)o(t)d(b)q(e)k(either)g(of)308 274 y Fg({rt})308 319 y({\(d,w\))i(in)i(rt})144 399 y Fq(dep)q(ending)c(on)f (whether)h(the)g(dumm)o(y)c(indices)k(are)f(needed.)21 b(Indexing)14 b(expressions)i(ma)o(y)c(also)h(com-)144 449 y(bine)h Ff(rt)f Fq(with)h(other)g(sets,)h(as)f(in)308 532 y Fg(var)k(Ship)g({prd,rt})f(>=)i (0;)144 615 y Fq(In)11 b(the)h(ob)r(jectiv)o(e)g(and)f(constrain)o(ts)h(of)f Fe(dist)p Fq(,)f(references)k(to)d(these)i(pro)q(duct)f(shipmen)o(t)f(v)n (ariables)f(ha)o(v)o(e)144 665 y(the)k(form)f Ff(Ship[p,d,w])p Fq(,)e(where)k Ff(p)e Fq(is)h(a)g(mem)o(b)q(er)e(of)h Ff(prd)g Fq(and)h Ff(\(d,w\))f Fq(is)h(a)f(mem)o(b)q(er)g(of)g Ff(rt)p Fq(.)206 731 y(If)19 b(the)h(shipmen)o(t)e(routes)i(are)g(to)f(b)q(e)h(read)f (directly)h(as)f(data,)g(then)h(a)f(h)o(uman)f(mo)q(deler)g(m)o(ust)144 781 y(compile)13 b(the)j(list)e(of)h(route)h(pairs)e(and)h(en)o(ter)h(them)f (in)o(to)f(the)i(data)e(\014le.)22 b(F)m(or)14 b(the)i Fe(dist)e Fq(application,)144 831 y(ho)o(w)o(ev)o(er,)f(the)h(p)q(ermitted)f(routes)h (are)g(alw)o(a)o(ys)e(a)h(certain)g(function)g(of)g(the)h(shipping)e(costs)i (and)f(other)144 881 y(n)o(umerical)d(data.)17 b(Th)o(us)11 b(a)g(more)f(con)o(v)o(enien)o(t)i(and)f(more)g(reliable)f(AMPL)i(mo)q(del)e (de\014nes)j Ff(rt)d Fq(in)h(terms)144 930 y(of)k(logical)e(conditions)i(on)h (the)g(parameters,)f(b)o(y)g(use)h(of)f(an)g(indexing)g(expression.)24 b(First)15 b(of)g(all,)f(the)144 980 y(shipping)f(cost)i(rates)g(are)f(sp)q (eci\014ed)h(b)o(y)308 1058 y Fg(param)j(sc)g({dctr,whse)o(})f(>=)i(0;)308 1103 y(param)f(huge)g(>)h(0;)144 1183 y Fq(Only)13 b(the)h(routes)g(from)e Ff(d)h Fq(to)g Ff(w)g Fq(for)g(whic)o(h)g Ff(sc[d,w])f Fq(is)h(less)h(than)f Ff(huge)f Fq(are)i(to)f(b)q(e)h(p)q(ermitted.)k(Th)o(us)144 1233 y Ff(rt)13 b Fq(can)i(b)q(e)f(de\014ned)h(b)o(y)308 1316 y Fg(set)j(rt)h(:=)g({d)g(in)g(dctr,)e(w)j(in)e(whse:)g(sc[d,w])f(<)i(huge};) 144 1399 y Fq(Since)d(eac)o(h)g(distribution)e(cen)o(ter)j(is)f(also)e(a)h(w) o(arehouse,)h(ho)o(w)o(ev)o(er,)g(this)f(set)i(con)o(tains)e(a)g(route)h (from)144 1449 y(eac)o(h)g(distribution)f(cen)o(ter)j(to)d(itself.)24 b(Suc)o(h)16 b(routes)h(ha)o(v)o(e)e(a)h(shipping)f(rate)h(of)f(zero)i(in)e (the)h(data,)g(so)144 1499 y(they)e(need)h(to)f(b)q(e)g(ruled)h(out)e (separately:)308 1582 y Fg(set)18 b(rt)h(:=)g({d)g(in)g(dctr,)e(w)j(in)e (whse:)g(d)h(<>)g(w)g(and)g(sc[d,w])e(<)i(huge};)144 1665 y Fq(In)e(the)g(full)f Fe(dist)f Fq(example,)h(a)g(route)i(ma)o(y)d(also)h(b)q (e)h(disallo)o(w)o(ed)e(if)h(it)h(runs)g(to)g(a)f(w)o(arehouse)i(where)144 1715 y(there)c(is)f(no)g(demand)f(\(unless)i(the)g(w)o(arehouse)g(is)f(also)g (a)f(distribution)h(cen)o(ter\),)h(or)g(if)e(it)h(is)g(sub)r(ject)h(to)144 1764 y(a)e(\\minim)n(um)7 b(size)13 b(restriction")g(and)e(the)i(total)e (demand)g(at)h(the)h(w)o(arehouse)g(\014lls)e(less)i(than)f(a)f(certain)144 1814 y(n)o(um)o(b)q(er)i(of)g(shipping)h(pallets.)k(The)c(en)o(tire)g (de\014nition)g(is)308 1892 y Fg(set)k(rt)h(:=)g({d)g(in)g(dctr,)e(w)j(in)e (whse:)406 1937 y(d)h(<>)g(w)39 b(and)f(sc[d,w])17 b(<)i(huge)38 b(and)406 1983 y(\(w)19 b(in)g(dctr)f(or)g(sum)h({p)g(in)g(prd})f(dem[p,w])e (>)j(0\))39 b(and)406 2029 y(not)18 b(\(msr[d,w])e(and)j(sum)f({p)h(in)g (prd})f(1000*dem[p)o(,w])o(/c)o(pp[)o(p])e(<)j(dsr[d]\))e(};)144 2108 y Fq(The)d(length)o(y)f(logical)f(condition)h(in)g(the)h(indexing)f (expression)i(is)e(built)g(up)g(mainly)e(from)h(arithmetic)144 2158 y(comparisons)j(connected)i(b)o(y)e Ff(and)p Fq(,)g Ff(or)g Fq(and)h Ff(not)p Fq(.)22 b(It)16 b(also)f(uses)i(the)f(logical)e(expression) j Ff(w)e(in)g(dctr)p Fq(,)144 2208 y(whic)o(h)f(is)g(true)g(if)f(and)h(only)f (if)g Ff(w)h Fq(is)g(a)f(mem)o(b)q(er)f(of)i(the)g(set)h Ff(dctr)p Fq(.)206 2274 y(Sets)20 b(of)f(longer)f(ordered)i(lists)f(are)h(handled)f(in) f(an)h(analogous)e(fashion.)33 b(As)19 b(an)g(example,)f(in)144 2324 y Fe(train)c Fq(eac)o(h)g(line)f(of)g(the)h(railroad)e(sc)o(hedule)j(is) e(an)h(ordered)g(quadruple:)k(cit)o(y)c(of)f(departure,)h(time)f(of)144 2374 y(departure,)i(cit)o(y)f(of)f(arriv)n(al,)f(time)g(of)i(arriv)n(al.)i (The)f(AMPL)f(declarations)g(are)308 2451 y Fg(set)k(cities;)308 2497 y(param)g(last)g(>)h(0)g(integer;)308 2543 y(set)f(times)g(:=)h (1..last;)308 2588 y(set)f(schedule)f(dimen)g(4;)948 2768 y Fq(13)p eop %%Page: 12 53 bop 144 30 a Fq(The)15 b(sets)h(are)f(ev)n(aluated)f(from)f(left)h(to)h(righ) o(t.)k(Th)o(us,)c(in)f(the)h(last)f(example)f(ab)q(o)o(v)o(e,)h Ff(p)h Fq(runs)g(through)144 80 y(all)f(mem)o(b)q(ers)h(of)g Ff(prd)f Fq(and)i Ff(v)f Fq(runs)h(from)e Ff(1)i Fq(to)f Ff(life-1)p Fq(;)g(for)g(eac)o(h)h(suc)o(h)g(com)o(bination,)d Ff(a)i Fq(runs)i(from)144 130 y Ff(v+1)e Fq(to)g Ff(life)p Fq(.)22 b(This)15 b(is)g(a)g(natural)g(w)o (a)o(y)g(to)g(de\014ne)i(a)e(\\triangular")f(arra)o(y)h(of)g(index)g(v)n (alues.)23 b(AMPL)144 180 y(also)13 b(p)q(ermits)h(\\square")g(arra)o(ys,)f (as)h(in)g Fe(egypt)p Fq(:)308 263 y Fg({p1)k(in)h(plant,)e(p2)i(in)g(plant}) 144 346 y Fq(This)f(expression)i(sp)q(eci\014es)g(indexing)e(o)o(v)o(er)h (all)e(p)q(ossible)i(pairs)f(of)g(mem)o(b)q(ers)f(from)g Ff(plant)p Fq(,)h(in)g(the)144 395 y(de\014nition)13 b(of)h(a)f(table)h(of)f(in)o (terplan)o(t)h(distances.)206 462 y(Realistic)h(mo)q(dels)f(often)h(require)h (more)f(complicated)f(indexing,)g(in)h(whic)o(h)g(the)h(mem)o(b)q(ership)e (of)144 512 y(the)20 b(indexing)f(set)h(is)f(someho)o(w)f(restricted.)37 b(AMPL)20 b(pro)o(vides)f(for)g(this)h(p)q(ossibilit)o(y)e(b)o(y)h(allo)o (wing)144 561 y(a)g(logical)f(condition)h(to)h(b)q(e)g(sp)q(eci\014ed)i (after)d(the)i(set)f(or)g(sets)h(in)e(the)i(indexing)e(expression.)36 b(F)m(or)144 611 y(example,)10 b Fe(dist)h Fq(indexes)h(a)f(collection)h(of)f (constrain)o(ts)h(o)o(v)o(er)g(all)e(pro)q(duct-factory)i(pairs)g(for)f(whic) o(h)g(the)144 661 y(pro)q(duction)j(cost)h(is)e(sp)q(eci\014ed)j(as)e(zero:) 308 744 y Fg({p)19 b(in)g(prd,)f(f)h(in)g(fact:)e(rpc[p,f])g(=)i(0})144 827 y Fq(The)c(quali\014cation)f(in)g(an)h(indexing)f(expression)i(ma)o(y)d (also)i(compare)f(the)h(dumm)o(y)d(indices)k(directly)m(.)144 877 y(Th)o(us)e(w)o(e)g(could)g(write)308 960 y Fg({p1)k(in)h(plant,)e(p2)i (in)g(plant:)e(p1)i(<>)g(p2})144 1043 y Fq(to)14 b(index)g(o)o(v)o(er)f(all)g (p)q(ossible)h(pairs)g(of)f(di\013eren)o(t)i(mem)o(b)q(ers)e(from)f Ff(plant)p Fq(.)144 1159 y Fo(2.3)36 b(Comp)q(ound)14 b(sets)206 1226 y Fq(It)f(is)f(often)h(most)e(natural)h(to)g(think)g(of)g(a)g(set)i(as)e (comprising)f(not)h(individual)f(items,)g(but)i(ordered)144 1275 y(pairs)e(of)g(items,)g(or)g(p)q(ossibly)g(ordered)i(triples,)f (quadruples)g(or)f(longer)h(lists.)17 b(As)12 b(an)f(example,)f(in)h Fe(dist)144 1325 y Fq(the)j(allo)o(w)o(ed)f(shipmen)o(t)g(routes)h(comprise)f (a)h(set)g(of)g(ordered)h(pairs)e(\()p Fn(d;)7 b(w)q Fq(\))13 b(suc)o(h)i(that)e Fn(d)h Fq(is)f(a)h(mem)o(b)q(er)144 1375 y(of)j(the)h(set)g(of)f(distribution)g(cen)o(ters)i(and)e Fn(w)h Fq(is)f(a)g(mem)o(b)q(er)f(of)h(the)h(set)g(of)f(w)o(arehouses.)30 b(V)m(ariables)144 1425 y(represen)o(ting)16 b(shipmen)o(t)c(amoun)o(ts)h (are)h(indexed)h(o)o(v)o(er)e(these)j(pairs.)206 1491 y(If)i(ev)o(ery)h (distribution)f(cen)o(ter)i(could)e(ship)g(to)g(ev)o(ery)i(w)o(arehouse,)f (then)g(AMPL)g(could)f(handle)144 1541 y(\()p Fn(d;)7 b(w)q Fq(\))17 b(pairs)h(b)o(y)g(means)g(of)f(the)i(expressions)g(in)o(tro)q(duced) g(in)f Fk(x)q Fq(2.2)f(ab)q(o)o(v)o(e.)30 b(Indeed,)20 b(the)f(indexing)144 1591 y(expression)14 b Ff({dctr,whse})c Fq(or)j Ff({d)g(in)f(dctr,)g(w)g(in)h (whse})e Fq(sp)q(eci\014es)k(precisely)f(the)f(set)h(of)e(all)g(ordered)144 1641 y(pairs)i(of)f(cen)o(ters)j(and)e(w)o(arehouses.)20 b(In)14 b(the)h(application)d(that)i(giv)o(es)g(rise)h(to)f(the)g Fe(dist)f Fq(mo)q(del,)g(ho)o(w-)144 1691 y(ev)o(er,)g(shipmen)o(ts)e(from)g(a)g (distribution)h(cen)o(ter)h(are)g(p)q(ermitted)f(only)f(to)h(certain)g (related)h(w)o(arehouses.)144 1740 y(Th)o(us)19 b(the)g(set)g(of)f(shipmen)o (t)f(routes)j(is)e(a)g(\\sparse")h(subset)h(of)e(the)h(cen)o(ter-w)o (arehouse)i(pairs,)e(and)144 1790 y(the)e(v)n(ariables)f(represen)o(ting)i (shipmen)o(ts)e(are)h(de\014ned)h(only)d(for)i(the)g(pairs)f(in)g(this)h (subset.)27 b(Suc)o(h)17 b(a)144 1840 y(situation)11 b(is)h(common)d(in)j (distribution)f(and)h(net)o(w)o(ork)g(mo)q(dels.)k(T)m(o)c(handle)f(it)h (naturally)m(,)e(a)i(mo)q(deling)144 1890 y(language)k(m)o(ust)f(b)q(e)i (able)g(to)f(index)g(o)o(v)o(er)h(\\all)e(\()p Fn(d;)7 b(w)q Fq(\))16 b(in)g(the)h(set)g(of)f(routes")i(and)e(similar)e(kinds)j(of)144 1940 y(sets.)206 2006 y(In)d(AMPL)g(the)h(set)g(of)e(shipmen)o(t)g(routes)i (could)e(b)q(e)i(declared)g(most)e(simply)e(as)j(follo)o(ws:)308 2089 y Fg(set)k(rt)h(dimen)f(2;)144 2172 y Fq(This)c(w)o(ould)g(sa)o(y)h (that)f Ff(rt)g Fq(is)h(a)f(set)h(whose)g(mem)o(b)q(ers)f(m)o(ust)f(b)q(e)i (\\2-dimensional":)h(ordered)g(pairs)f(of)144 2222 y(ob)r(jects.)j(The)11 b(routes)h(in)e Fe(dist)p Fq(,)g(ho)o(w)o(ev)o(er,)i(cannot)f(b)q(e)g(just)g (an)o(y)f(pairs)h(of)f(ob)r(jects;)j(eac)o(h)e(mem)o(b)q(er)e(m)o(ust)144 2272 y(b)q(e)16 b(a)g(distribution)f(cen)o(ter)i(paired)f(with)g(a)f(w)o (arehouse.)25 b(A)16 b(more)e(appropriate)i(AMPL)g(declaration)144 2322 y(has)e(the)h(follo)o(wing)c(form:)308 2399 y Fg(set)18 b(whse;)308 2445 y(set)g(dctr)g(within)g(whse;)308 2490 y(set)g(rt)h(within)e (\(dctr)h(cross)g(whse\);)144 2570 y Fq(The)11 b(set)g(op)q(erator)g Ff(cross)e Fq(is)h(a)g(cross,)i(or)f(Cartesian,)f(pro)q(duct;)i(applied)e(to) g(t)o(w)o(o)g(simple)f(sets,)j(its)e(result)144 2620 y(is)h(the)i(set)f(of)f (all)g(ordered)h(pairs)g(comprising)e(a)h(mem)o(b)q(er)f(of)h(the)h(left)g (op)q(erand)g(follo)o(w)o(ed)e(b)o(y)h(a)h(mem)o(b)q(er)948 2768 y(12)p eop %%Page: 11 54 bop 206 30 a Fq(Simple)10 b(sets)i(ma)o(y)d(also)i(b)q(e)h(de\014ned)g(in)f (terms)g(of)g(other)g(sets)i(or)e(parameters,)g(rather)h(than)g(directly)144 80 y(from)h(the)i(data.)k(AMPL)14 b(pro)o(vides)h(op)q(erators)g(for)f(the)h (union,)f(in)o(tersection)h(and)f(di\013erence)i(of)e(sets,)144 130 y(as)i(used)g(in)f Fe(egypt)h Fq(to)f(build)g(the)h(set)h(of)e(commo)q (diti)o(es)f(from)f(the)k(sets)f(of)f(\014nal,)g(in)o(termediate)g(and)144 180 y(ra)o(w)f(materials:)308 263 y Fg(set)k(commod)g(:=)g(c_final)f(union)h (c_inter)f(union)h(c_raw;)144 346 y Fq(There)12 b(is)f(also)f(the)i Ff(..)17 b Fq(op)q(erator)12 b(that)f(constructs)i(sets)f(of)f(consecutiv)o (e)h(in)o(tegers)g(b)q(et)o(w)o(een)g(t)o(w)o(o)f(limits.)144 395 y(In)g Fe(pr)o(od)p Fq(,)h(the)g(name)e Ff(time)h Fq(is)g(giv)o(en)f(to)i (the)f(set)i(of)d(in)o(tegers)i(b)q(eginning)f(with)g(the)h(v)n(alue)f(of)f (parameter)144 445 y Ff(first)j Fq(and)h(ending)f(with)h(the)g(v)n(alue)g(of) f(parameter)g Ff(last)p Fq(:)308 523 y Fg(param)18 b(first)f(>)i(0)h (integer;)308 568 y(param)e(last)g(>)h(first)e(integer;)308 614 y(set)h(time)g(:=)h(first)f(..)h(last;)144 694 y Fq(Set)d(expressions)g (built)f(from)e(these)k(op)q(erators)f(can)f(also)f(b)q(e)i(used)g(an)o (ywhere)g(else)g(that)f(a)g(set)h(v)n(alue)144 744 y(is)e(required)h(in)e(an) h(AMPL)g(mo)q(del.)i(F)m(or)e(example,)e(a)i(declaration)f(suc)o(h)i(as)308 827 y Fg(set)j(c_prod)g(within)f(c_final)g(union)g(c_inter;)144 910 y Fq(w)o(ould)c(declare)i(a)e(set)i Ff(c_prod)e Fq(whose)h(mem)o(b)q(ers) f(m)o(ust)g(lie)g(within)g(either)i Ff(c_final)d Fq(or)i Ff(c_inter)p Fq(.)144 1026 y Fo(2.2)36 b(Indexing)14 b(expressions)206 1092 y Fq(A)i(more)f(general)h(syn)o(tax)g(is)f(required)i(to)f(sp)q(ecify)g(the)g (sets)h(o)o(v)o(er)f(whic)o(h)g(parameters,)g(v)n(ariables)144 1142 y(and)g(constrain)o(ts)h(are)f(indexed.)25 b(The)16 b(same)f(syn)o(tax)h (can)g(then)h(b)q(e)g(used)g(to)e(describ)q(e)j(the)f(sets)g(o)o(v)o(er)144 1192 y(whic)o(h)d(summations)d(and)j(other)g(op)q(erations)g(are)h(iterated,) f(as)g(explained)f(in)h(Section)g(3)g(b)q(elo)o(w.)206 1258 y(In)d(algebraic)g(notation,)f(indexing)g(is)h(indicated)g(informally)d(b)o (y)i(a)h(phrase)h(suc)o(h)g(as)f(\\for)f(all)g Fn(i)i Fk(2)f(P)f Fq(")144 1308 y(or)k(\\for)f Fn(t)e Fq(=)h(1)p Fn(;)7 b Fq(.)g(.)g(.)e Fn(;)i(T)12 b Fq(".)18 b(AMPL)c(formalizes)e(these)j(phrases)g(as)f Fp(indexing)h(expr)n(essions)f Fq(delimited)e(b)o(y)144 1358 y(braces.)19 b(As)14 b(seen)g(in)f Fe(pr)o(od)p Fq(,)h(the)g(simplest)e(kind) h(of)f(indexing)h(expression)h(is)f(just)h(the)g(name)e(of)h(a)g(set,)144 1408 y(optionally)f(preceded)k(b)o(y)e(a)f(named)g(dumm)o(y)e(index:)308 1485 y Fg({prd})308 1531 y({t)19 b(in)g(time})144 1611 y Fq(The)14 b(set)h(in)f(an)f(indexing)g(expression)i(ma)o(y)d(also)i(b)q(e)g(sp)q (eci\014ed)i(b)o(y)d(use)i(of)e(set)i(op)q(erators:)308 1688 y Fg({first-1.)o(.la)o(st)o(})308 1734 y({a)k(in)g(1..life})144 1814 y Fq(In)g(k)o(eeping)f(with)h(the)g(con)o(v)o(en)o(tions)f(of)g (algebraic)h(notation,)f(w)o(e)h(do)f(not)h(require)g(that)g(the)g(name)144 1864 y(of)e(a)h(dumm)o(y)d(index)j(b)q(ear)h(an)o(y)e(particular)h(relation)f (to)h(the)h(name)d(of)i(an)o(y)f(set.)32 b(Sometimes)15 b(it)j(is)144 1913 y(con)o(v)o(enien)o(t)f(to)g(use)h(the)f(same)f(index)h(name)e(with)i (di\013eren)o(t)h(sets)g(\(as)f Ff(t)f Fq(is)h(used)h(with)e(sev)o(eral)i (sets)144 1963 y(represen)o(ting)f(times)d(in)h Fe(pr)o(od)p Fq(\))g(or)g(di\013eren)o(t)h(index)g(names)e(with)h(the)g(same)g(set)h(\(as) f Ff(pl)p Fq(,)f Ff(p1)p Fq(,)h Ff(p2)g Fq(are)144 2013 y(used)g(with)e Ff(plant)g Fq(in)h Fe(egypt)p Fq(\).)k(The)c(dumm)o(y)d(index)j(ma)o(y)e(b)q (e)i(dropp)q(ed)h(en)o(tirely)f(in)g(parameter)f(and)144 2063 y(v)n(ariable)g(declarations)h(where)h(it)e(is)h(not)g(needed.)206 2129 y(Large)g(mo)q(dels)f(cannot)h(b)q(e)g(adequately)g(describ)q(ed)h(b)o (y)f(indexing)f(o)o(v)o(er)h(the)g(mem)o(b)q(ers)e(of)h(individ-)144 2179 y(ual)j(sets.)28 b(Man)o(y)16 b(parameters,)h(v)n(ariables)f(and)h (constrain)o(ts)g(are)g(most)f(naturally)f(indexed)i(o)o(v)o(er)g(all)144 2229 y(com)o(binations)9 b(of)h(mem)o(b)q(ers)f(from)g(t)o(w)o(o)h(or)h(more) f(sets.)18 b(AMPL)11 b(denotes)h(suc)o(h)f(indexing)f(b)o(y)h(listing)e(the) 144 2279 y(sets)17 b(sequen)o(tially)d(within)h(the)h(braces)g(of)f(an)g (indexing)g(expression,)h(as)f(in)g(the)h(follo)o(wing)d(examples)144 2328 y(from)f Fe(pr)o(od)p Fq(:)308 2398 y Fg({prd,time)o(})308 2443 y({prd,firs)o(t..)o(la)o(st+)o(1})308 2489 y({prd,time)o(,1.)o(.l)o(ife) o(})308 2535 y({p)19 b(in)g(prd,)f(t)h(in)g(time})308 2580 y({p)g(in)g(prd,)f(v)h(in)g(1..life-1)o(,)d(a)k(in)e(v+1..life})948 2768 y Fq(11)p eop %%Page: 10 55 bop 144 30 a Fr(2.)42 b(Sets)18 b(and)h(Indexing)206 109 y Fq(Index)c(sets)g(are)g(the)g(fundamen)o(tal)d(building)g(blo)q(c)o(ks)j(of)e (an)o(y)h(large)g(linear)f(programming)e(mo)q(del.)144 159 y(Most)j(of)f(a)g(mo)q(del's)f(comp)q(onen)o(ts)h(are)h(indexed)g(o)o(v)o(er) g(some)e(com)o(bination)f(of)i(these)i(sets;)g(for)e(mo)q(dels)144 209 y(of)f(practical)h(in)o(terest,)h(moreo)o(v)o(er,)e(the)h(sets)h(are)g (seldom)d(as)i(easy)h(to)f(describ)q(e)h(as)f Fk(P)s Fq(,)g Fk(R)g Fq(and)g(1)p Fn(;)7 b Fq(.)g(.)g(.)e Fn(;)i(T)144 258 y Fq(in)17 b(Figure)g(1{1.)28 b(Th)o(us)17 b(the)h(design)f(of)g(a)g(mo)q (deling)e(language)i(cannot)g(a\013ord)g(to)g(place)h(to)q(o)f(man)o(y)144 308 y(restrictions)c(on)e(the)h(v)n(ariet)o(y)f(of)g(set)i(and)e(indexing)g (expressions.)18 b(An)o(y)12 b(restriction)g(is)g(lik)o(ely)e(to)h(reduce)144 358 y(the)j(range)h(of)e(mo)q(dels)g(that)h(can)g(b)q(e)g(con)o(v)o(enien)o (tly)g(represen)o(ted.)206 424 y(In)g(ligh)o(t)e(of)g(these)j(observ)n (ations,)e(w)o(e)h(ha)o(v)o(e)f(sough)o(t)g(to)g(o\013er)h(a)f(particularly)f (broad)i(v)n(ariet)o(y)e(of)h(set)144 474 y(t)o(yp)q(es)k(in)f(our)g(mo)q (deling)e(language.)24 b(AMPL)17 b(pro)o(vides)f(for)g(\\sparse")h(subsets,)h (for)e(sets)h(of)f(ordered)144 524 y(pairs,)g(triples)g(and)g(longer)g (\\tuples",)g(and)g(for)g(indexed)h(collections)f(of)f(sets.)26 b(Sets)17 b(can)f(b)q(e)h(de\014ned)144 574 y(b)o(y)d(applying)g(op)q (erations)g(lik)o(e)g(union)g(and)h(in)o(tersection)g(to)g(other)g(sets,)h (or)e(b)o(y)h(sp)q(ecifying)f(arbitrary)144 624 y(logical)i(conditions)h(for) g(mem)o(b)q(ership.)26 b(P)o(arameters,)18 b(v)n(ariables)f(and)g(constrain)o (ts)h(can)g(b)q(e)f(indexed)144 674 y(o)o(v)o(er)d(an)o(y)g(set;)g(common)d (iterated)k(op)q(erations,)f(suc)o(h)h(as)f(summation,)c(are)15 b(indexed)f(o)o(v)o(er)g(sets)i(in)d(the)144 723 y(same)g(w)o(a)o(y)m(.)206 790 y(W)m(e)j(b)q(egin)f(this)h(section)h(b)o(y)e(in)o(tro)q(ducing)h(the)g (simpler)f(kinds)h(of)f(AMPL)h(sets)h(in)e Fk(x)q Fq(2.1,)g(and)g(the)144 840 y(concept)j(of)f(an)f(indexing)h(expression)h(in)e Fk(x)q Fq(2.2.)26 b(W)m(e)16 b(then)i(tak)o(e)f(a)g(longer)f(lo)q(ok)g(at)h(sets)h (of)f(ordered)144 889 y(pairs)d(and)g(other)g(comp)q(ound)f(sets)i(in)e Fk(x)q Fq(2.3,)f(and)i(at)g(indexed)g(collections)g(of)f(sets)i(in)f Fk(x)p Fq(2.4.)206 956 y(Most)19 b(examples)f(in)g(this)h(and)f(subsequen)o (t)i(sections)g(are)f(tak)o(en)g(from)e(four)h(extensiv)o(e)i(AMPL)144 1006 y(mo)q(dels)11 b(that)g(are)h(collected)h(in)e(the)h(app)q(endices.)19 b Fe(pr)o(od)12 b Fq(and)g Fe(dist)e Fq(are)j(adapted)f(from)d(a)j(m)o(ultip) q(erio)q(d)144 1055 y(pro)q(duction)g(mo)q(del)e(and)i(a)f(m)o(ulticomm)o (odit)o(y)e(distribution)i(mo)q(del)f(that)i(w)o(ere)h(dev)o(elop)q(ed)f(for) g(a)f(large)144 1105 y(man)o(ufacturer.)24 b Fe(egypt)15 b Fq(is)h(a)g(static)g(mo)q(del)f(of)g(the)h(Egyptian)g(fertilizer)g(industry)g (\(Choksi,)g(Meer-)144 1155 y(aus)h(and)g(Stoutjesdijk)g(1980\).)28 b Fe(train)17 b Fq(is)g(an)g(adaptation)f(of)h(a)g(mo)q(del)e(of)i(railroad)f (passenger-car)144 1205 y(requiremen)o(ts)e(\(F)m(ourer,)g(Gertler)h(and)e (Simk)o(o)o(witz)f(1977,)g(1978\).)144 1321 y Fo(2.1)36 b(Simple)13 b(sets)206 1388 y Fq(An)g(unordered)g(set)g(of)f(arbitrary)g(ob)r(jects)h (can)g(b)q(e)g(de\014ned)g(b)o(y)f(giving)f(its)h(name)f(in)h(an)f(AMPL)i (set)144 1437 y(declaration:)308 1507 y Fg(set)18 b(prd;)308 1552 y(set)g(center;)308 1598 y(set)g(whse;)144 1678 y Fq(AMPL)13 b(also)f(pro)o(vides)g(for)g(the)h(declaration)g(of)e(arbitrary)i(subsets.)19 b(As)13 b(an)f(example,)f Fe(dist)h Fq(is)g(form)o(u-)144 1728 y(lated)h(on)f(the)h(assumption)f(that)g(distribution)g(cen)o(ters)j(are)e (lo)q(cated)g(at)f(a)h(subset)h(of)e(the)h(w)o(arehouses,)144 1777 y(and)h(that)g(factories)g(are)g(lo)q(cated)g(at)g(a)g(subset)h(of)e (the)i(distribution)e(cen)o(ters:)308 1847 y Fg(set)18 b(dctr)g(within)g (whse;)308 1892 y(set)g(fact)g(within)g(dctr;)144 1972 y Fq(These)c(subset)g (declarations)f(serv)o(e)h(b)q(oth)f(as)g(an)g(aid)f(to)g(an)o(y)o(one)h (reading)f(the)i(mo)q(del,)d(and)i(as)f(a)h(c)o(hec)o(k)144 2022 y(on)k(the)g(data.)27 b(If)16 b(the)i(data)e(include,)h(sa)o(y)m(,)g(a)f (mem)o(b)q(er)g(of)g(set)i Ff(fact)e Fq(that)h(is)f(not)h(a)g(mem)o(b)q(er)e (of)h(set)144 2072 y Ff(dctr)p Fq(,)d(then)h(the)h(translator)e(will)g (reject)i(the)g(data)e(for)h Ff(fact)f Fq(and)g(rep)q(ort)i(an)f(error.)206 2138 y(The)k(actual)e(set)i(declarations)f(in)f Fe(dist)g Fq(are)h(a)g (little)f(longer)h(than)f(those)i(ab)q(o)o(v)o(e,)f(b)q(ecause)h(they)144 2188 y(include)c(a)g(quoted)g Fp(alias)f Fq(follo)o(wing)f(the)i(set)h(iden)o (ti\014er:)308 2266 y Fg(set)j(whse)g(\015warehouse)o(s\015;)308 2311 y(set)g(dctr)g(\015distribut)o(ion)e(centers\015)g(within)i(whse;)308 2357 y(set)g(fact)g(\015factories)o(\015)f(within)g(dctr;)144 2437 y Fq(An)12 b(alias)e(can)i(b)q(e)g(regarded)g(either)h(as)e(a)h(brief)f (commen)o(t,)e(or)j(as)f(a)h(long)e(iden)o(ti\014er)i(to)f(b)q(e)i(passed)f (along)144 2487 y(b)o(y)h(the)i(AMPL)f(translator)g(for)f(ev)o(en)o(tual)h (use)g(in)f(rep)q(orts.)20 b(A)14 b(similar)d(syn)o(tax)j(is)f(used)i(in)e (app)q(ending)144 2536 y(aliases)h(to)h(other)g(iden)o(ti\014ers)h(in)e(an)h (AMPL)g(mo)q(del.)k(T)m(o)14 b(sa)o(v)o(e)h(space,)g(ho)o(w)o(ev)o(er,)g(w)o (e)g(will)f(henceforth)144 2586 y(omit)e(aliases)h(in)h(quotations)f(from)f (our)i(examples.)948 2768 y(10)p eop %%Page: 9 56 bop 144 30 a Fq(implemen)o(tatio)o(n)14 b(of)h(an)h(AMPL)h(translator)f(ma)o (y)e(accept)j(data)f(in)g(whatev)o(er)h(formats)d(its)j(creators)144 80 y(deem)c(appropriate.)k(As)d(a)f(practical)g(matter,)f(ho)o(w)o(ev)o(er,)h (w)o(e)h(wish)f(to)g(ha)o(v)o(e)g(a)f(standard)i(data)f(format)144 130 y(that)k(all)f(v)o(ersions)i(of)f(the)h(translator)f(will)f(accept.)29 b(Figure)17 b(1{4)g(sho)o(ws)g(a)g(small)e(data)i(set)h(for)f(the)144 180 y(sample)e(LP)i(in)f(our)g(standard)h(format;)f(it)g(is)g(a)h(largely)e (self-explanatory)h(transcription)h(of)f(Figure)144 229 y(1{2a.)h(Section)d (5)g(considers)h(the)g(data)e(format)f(in)i(more)e(detail.)206 296 y(Once)i(the)f(data)f(v)n(alues)h(ha)o(v)o(e)f(b)q(een)i(read)f (successfully)m(,)g(the)g(mem)o(b)q(ers)e(of)h(all)g(sets)i(and)e(the)h(v)n (alues)144 346 y(of)k(all)g(parameters)g(are)h(kno)o(wn.)30 b(The)18 b(AMPL)g(translator)f(can)h(then)h(iden)o(tify)e(the)h(v)n(ariables) f(that)144 395 y(will)c(app)q(ear)h(in)g(the)h(resulting)f(linear)g(program,) e(determine)i(the)h(co)q(e\016cien)o(ts)g(and)f(constan)o(ts)i(in)d(the)144 445 y(ob)r(jectiv)o(e)d(and)g(constrain)o(ts,)h(and)f(write)g(the)g(output)g (suitable)g(for)f(an)h(algorithm.)k(Section)c(6)g(describ)q(es)144 495 y(our)k(implemen)o(tatio)o(n)d(of)j(an)f(AMPL)h(translator.)959 2768 y(9)p eop %%Page: 8 57 bop 206 30 a Fq(In)15 b(writing)g Ff(1..T+1)e Fq(ab)q(o)o(v)o(e,)i(w)o(e)g (use)h(an)f(arithmetic)f(expression)i(to)f(help)g(de\014ne)h(a)e(set.)23 b(F)m(or)14 b(the)144 80 y(most)f(part,)g(expressions)j(ma)o(y)c(b)q(e)i (used)h(in)e(AMPL)i(an)o(ywhere)f(that)g(a)g(n)o(umeric)f(v)n(alue)g(is)h (needed.)144 196 y Fo(1.5)36 b(Ob)s(jectiv)o(e)206 263 y Fq(An)20 b(ob)r(jectiv)o(e)g(function)f(can)h(b)q(e)h(an)o(y)e(linear)g(expression)i (in)e(the)h(parameters)g(and)f(v)n(ariables.)144 312 y(The)c(AMPL)h(represen) o(tation)g(of)f(the)g(ob)r(jectiv)o(e)h(in)e(Figure)h(1{3)f(is)h(transcrib)q (ed)i(from)c(the)i(algebraic)144 362 y(ob)r(jectiv)o(e)f(expression)h(in)f (Figure)g(1{1.)206 429 y(AMPL)f(represen)o(tations)i(of)d(indexed)h(sums)f (app)q(ear)h(for)f(the)h(\014rst)g(time)f(in)g(our)g(example's)f(ob)r(jec-) 144 478 y(tiv)o(e.)18 b(The)c(sum)f(of)g(the)i(estimated)e(pro\014ts)i(for)e (p)q(erio)q(d)h Ff(t)g Fq(is)g(t)o(ypical:)308 561 y Fg(sum)k({j)h(in)g(prd}) f(profit[j,t)o(])e(*)k(Make[j,t])144 644 y Fq(The)d(iden)o(ti\014er)f Ff(j)g Fq(is)g(a)g(dumm)o(y)d(index)j(that)g(has)h(exactly)f(the)h(same)e (purp)q(ose)i(and)f(meaning)f(as)h(its)144 694 y(coun)o(terpart)f(in)f(the)h (algebraic)f(notation.)k(It)c(is)g(de\014ned)h(for)f(the)h(scop)q(e)g(of)f (the)g Ff(sum)p Fq(,)f(whic)o(h)i(extends)144 744 y(to)f(the)g(end)h(of)e (the)h(follo)o(wing)e(term.)144 860 y Fo(1.6)36 b(Constrain)o(ts)206 927 y Fq(A)16 b(constrain)o(t)g(ma)o(y)d(b)q(e)j(an)o(y)f(linear)g(equalit)o (y)g(or)g(inequalit)o(y)f(in)h(the)h(parameters)g(and)f(v)n(ariables.)144 977 y(Th)o(us)g(a)f(mo)q(del's)f(constrain)o(ts)j(use)f(all)e(the)j(same)d (kinds)i(of)f(expressions)i(as)f(its)f(ob)r(jectiv)o(e.)21 b(Whereas)144 1026 y(the)11 b(ob)r(jectiv)o(e)f(in)g(Figure)g(1{1)f(is)h(a)g (single)g(expression,)h(ho)o(w)o(ev)o(er,)g(the)f(constrain)o(ts)h(come)e(in) h(collections)144 1076 y(indexed)k(o)o(v)o(er)g(sets.)20 b(There)15 b(is)e(one)h(pro)q(duction-limit)e(constrain)o(t,)i(for)f(example,)f(in)i (eac)o(h)g(p)q(erio)q(d.)206 1143 y(The)j(AMPL)g(represen)o(tation)h(for)f(a) f(collection)g(of)g(constrain)o(ts)h(m)o(ust)f(sp)q(ecify)h(t)o(w)o(o)f (things:)23 b(the)144 1192 y(set)13 b(o)o(v)o(er)g(whic)o(h)f(the)i (constrain)o(ts)f(are)g(indexed,)g(and)f(the)h(expression)h(for)e(the)h (constrain)o(ts.)19 b(Th)o(us)12 b(the)144 1242 y(pro)q(duction)i(limits)e (lo)q(ok)h(lik)o(e)g(this:)308 1325 y Fg(subject)k(to)i(limit)e({t)i(in)g (1..T}:)e(sum)i({j)g(in)f(prd})g(Make[j,t])f(<=)h(max_prd;)144 1408 y Fq(F)m(ollo)o(wing)11 b(the)j(k)o(eyw)o(ords)f Ff(subject)f(to)h Fq(and)g(the)h(iden)o(ti\014er)f Ff(limit)p Fq(,)f(the)i(expression)h(in)e (braces)h(giv)o(es)144 1458 y Ff(1..T)d Fq(as)i(the)g(indexing)f(set.)18 b(The)13 b(iden)o(ti\014er)g Ff(t)f Fq(is)g(another)h(dumm)o(y)c(index,)j (pla)o(ying)f(the)i(same)f(role)g(as)144 1508 y(its)j(coun)o(terpart)h(in)f (the)h(algebraic)e(form;)f(its)j(scop)q(e)g(is)f(the)g(en)o(tire)h(inequalit) o(y)e(follo)o(wing)e(the)k(colon.)144 1558 y(Th)o(us)e(the)h(declaration)f (sp)q(eci\014es)i(a)e(di\013eren)o(t)h(inequalit)o(y)e(constrain)o(t)i(for)f (eac)o(h)g(c)o(hoice)h(of)f(a)g(mem)o(b)q(er)144 1608 y Ff(t)g Fq(from)e Ff(1..T)p Fq(.)206 1674 y(AMPL)h(constrain)o(t)g(expressions)h (need)f(not)g(ha)o(v)o(e)f(all)f(the)i(v)n(ariables)f(on)g(the)h(left)f(of)g (the)h(relational)144 1724 y(op)q(erator,)j(or)f(all)f(the)i(constan)o(t)g (terms)f(on)g(the)h(righ)o(t.)22 b(The)16 b Ff(balance)d Fq(constrain)o(ts)j (are)g(an)f(example)144 1774 y(of)e(a)h(more)f(general)h(form:)308 1851 y Fg(subject)j(to)i(balance)d({i)j(in)g(raw,)f(t)h(in)g(1..T}:)406 1897 y(Store[i,t)o(+1])d(=)j(Store[i,t])d(-)j(sum)g({j)f(in)h(prd})f (units[i,j])e(*)j(Make[j,t];)144 1977 y Fq(The)d(reference)h(to)e Ff(Store[i,t+1])e Fq(sho)o(ws)j(ho)o(w)f(a)f(mem)o(b)q(er)g(of)h(the)g(set)i Ff(1..T)d Fq(is)h(con)o(v)o(enien)o(tly)g(used)144 2026 y(in)e(an)h (arithmetic)f(expression.)206 2093 y(The)i Ff(start)f Fq(constrain)o(ts)h (can)g(b)q(e)h(regarded)f(as)g(simple)e(upp)q(er)j(b)q(ounds)f(on)g(the)g Ff(Store)f Fq(v)n(ariables)144 2143 y(for)j(p)q(erio)q(d)i(1.)29 b(Most)18 b(LP)g(optimizers)f(w)o(ork)h(more)e(e\016cien)o(tly)i(b)o(y)g (handling)e(suc)o(h)j(b)q(ounds)f(as)g(im-)144 2192 y(plicit)13 b(restrictions)j(on)d(the)i(v)n(ariables,)e(rather)i(than)f(as)g(an)g (explicit)g(part)g(of)f(the)i(constrain)o(t)f(matrix.)144 2242 y(Nev)o(ertheless,)20 b(b)q(ounds)e(ma)o(y)d(b)q(e)j(sp)q(eci\014ed)h(in)e (AMPL)g(just)h(lik)o(e)f(an)o(y)f(other)i(algebraic)f(constrain)o(t;)144 2292 y(detection)e(and)f(treatmen)o(t)f(of)g(b)q(ounds)i(are)f(left)g(for)f (the)i(computer)e(system)h(to)f(carry)i(out)f(as)g(part)g(of)144 2342 y(its)g(pro)q(cessing)h(of)e(the)i(mo)q(del.)206 2408 y(Most)f(of)g(Section)g(4)g(is)f(dev)o(oted)i(to)f(issues)h(that)f(arise)g (in)f(represen)o(ting)j(AMPL)e(constrain)o(ts.)144 2524 y Fo(1.7)36 b(Data)206 2591 y Fq(Once)13 b(the)f(AMPL)f(translator)h(has)f(read)h(and)f (pro)q(cessed)j(the)e(con)o(ten)o(ts)h(of)d(Figure)i(1{3,)e(it)h(is)h(ready) 144 2641 y(to)k(read)h(the)g(data.)26 b(Strictly)16 b(sp)q(eaking,)h(the)g (rules)g(for)f(the)h(data)f(are)h(not)f(a)h(part)f(of)g(AMPL;)g(eac)o(h)959 2768 y(8)p eop %%Page: 7 58 bop 144 30 a Fq(commen)o(ts)12 b(when)i(declarations)g(are)h(presen)o(ted)h (as)e(examples)f(in)g(the)i(follo)o(wing)c(text.)206 97 y(Another)16 b(kind)f(of)f(set)i(is)f(a)g(sequence)i(of)e(in)o(tegers.)23 b(In)15 b(the)g(sample)f(mo)q(del,)g(the)h(sequence)j(of)c(all)144 146 y(p)q(erio)q(ds)g(from)d(1)i(to)g Fn(T)19 b Fq(is)13 b(suc)o(h)g(a)g (set.)19 b(It)13 b(is)g(represen)o(ted)j(in)c(AMPL)h(b)o(y)g(the)h (expression)g Ff(1..T)p Fq(,)e(where)144 196 y Ff(T)i Fq(is)f(a)h(parameter)g (whose)g(v)n(alue)g(is)f(the)i(n)o(um)o(b)q(er)e(of)h(p)q(erio)q(ds.)k(The)d (mem)o(b)q(ers)e(of)g(a)h(sequence)i(set)f(are)144 246 y(ob)o(viously)e (ordered,)h(and)g(ma)o(y)e(app)q(ear)i(in)g(arithmetic)e(expressions.)206 312 y(Section)j(2)e(considers)i(the)g(requiremen)o(ts)f(of)f(sets)i(and)f (indexing)f(in)h(detail.)144 429 y Fo(1.3)36 b(P)o(arameters)206 495 y Fq(A)15 b(parameter)e(is)h(an)o(y)g(n)o(umerical)f(v)n(alue)g(p)q (ertinen)o(t)i(to)g(a)e(mo)q(del.)18 b(The)c(simplest)g(kind)f(of)h(param-) 144 545 y(eter)k(is)f(a)g(single,)g(indep)q(enden)o(t)h(v)n(alue,)f(suc)o(h)g (as)g(the)h(n)o(um)o(b)q(er)e(of)h(p)q(erio)q(ds)g(or)g(the)h(maxim)n(um)13 b(total)144 595 y(pro)q(duction)h(in)g(our)f(example.)206 661 y(Most)d(AMPL)g(statemen)o(ts)g(that)g(declare)h(parameters)f(also)f(sp)q (ecify)h(certain)h(restrictions)g(on)e(them.)144 711 y(F)m(or)k(instance,)i (the)f(n)o(um)o(b)q(er)f(of)h(p)q(erio)q(ds)g(is)g(declared)h(b)o(y)308 794 y Fg(param)j(T)h(>)g(0)g(integer;)144 877 y Fq(whic)o(h)14 b(sa)o(ys)h(that)f(the)h(v)n(alue)f(of)g Ff(T)g Fq(m)o(ust)g(b)q(e)h(a)f(p)q (ositiv)o(e)g(in)o(teger.)20 b(The)15 b(in)o(teger)g(restriction)g(is)f (under-)144 927 y(sto)q(o)q(d)h(implicitly)c(b)o(y)j(the)h(h)o(uman)e(reader) j(of)d(the)i(algebraic)f(mo)q(del,)f(but)i(it)f(m)o(ust)f(b)q(e)i(made)e (explicit)144 977 y(for)h(the)h(computer)f(system)g(that)g(translates)h (AMPL.)f(Data)f(inconsisten)o(t)i(with)f(this)g(restriction)i(are)144 1026 y(rejected)g(b)o(y)d(the)i(translator.)206 1093 y(Most)j(of)e(a)h(mo)q (del's)e(parameters)i(are)h(not)f(individual)e(v)n(alues,)i(but)g(are)h (instead)f(group)q(ed)h(in)o(to)144 1143 y(arra)o(ys)11 b(indexed)f(o)o(v)o (er)h(sets.)18 b(The)11 b(initial)d(sto)q(c)o(ks)k(are)f(a)f(t)o(ypical)f (case;)k(there)e(is)g(one)f(sto)q(c)o(k)h(lev)o(el,)g Fn(b)1682 1149 y Fm(i)1695 1143 y Fq(,)g(that)144 1192 y(m)o(ust)g(b)q(e)i(sp)q (eci\014ed)h(for)e(eac)o(h)h(ra)o(w)f(material)f Fn(i)h Fq(in)g(the)h(set)h Fk(R)p Fq(.)j(AMPL)c(expresses)i(this)d(relationship)g(b)o(y)308 1275 y Fg(param)18 b(init_sto)o(ck)e({raw})i(>=)h(0;)144 1358 y Fq(whic)o(h)e(declares)h(one)g(nonnegativ)o(e)e(parameter)h(corresp)q (onding)h(to)f(eac)o(h)h(mem)o(b)q(er)d(of)h(the)i(set)g Ff(raw)p Fq(.)144 1408 y(Later,)11 b(in)e(describing)h(the)g(constrain)o(ts,)h(an)f (index)f Ff(i)h Fq(is)f(de\014ned)i(and)f(the)g(parameter)f(corresp)q(onding) i(to)144 1458 y(mem)o(b)q(er)f Ff(i)h Fq(of)g Ff(raw)g Fq(is)g(denoted)i Ff(init_stock[i])p Fq(.)h(\(AMPL)e(expressions)h(in)e(braces)i(alw)o(a)o(ys)e (represen)o(t)144 1508 y(en)o(tire)k(sets,)f(while)g(expressions)h(in)f(brac) o(k)o(ets)g(represen)o(t)j(sp)q(eci\014c)e(mem)o(b)q(ers)e(of)g(sets.\))206 1574 y(The)18 b(parameters)e Fn(a)534 1580 y Fm(ij)580 1574 y Fq(and)h Fn(c)682 1580 y Fm(j)r(t)729 1574 y Fq(are)g(arra)o(ys)g(indexed)g (o)o(v)o(er)g(t)o(w)o(o)g(sets.)28 b(The)17 b(AMPL)g(declaration)144 1624 y(corresp)q(onding)e(to)f Fn(c)480 1630 y Fm(j)r(t)523 1624 y Fq(is)308 1707 y Fg(param)k(profit)f({prd,1..T)o(};)144 1790 y Fq(This)12 b(de\014nes)i(one)e(parameter)g(for)f(eac)o(h)i(com)o (bination)d(of)h(a)h(mem)o(b)q(er)f(from)f Ff(prd)h Fq(and)h(a)g(mem)o(b)q (er)f(from)144 1840 y Ff(1..T)p Fq(.)16 b(Naturally)m(,)11 b(the)h(parameter)g(corresp)q(onding)h(to)f(a)f(particular)h Ff(j)g Fq(in)f Ff(prd)g Fq(and)h Ff(t)g Fq(in)f Ff(1..T)g Fq(is)h(later)144 1890 y(denoted)k Ff(profit[j,t])p Fq(.)21 b(\(AMPL)16 b(resp)q(ects)i(the)e (case)g(of)f(letters,)h(so)g(the)g(index)f Ff(t)h Fq(is)f(not)g(confused)144 1940 y(with)f(the)g(set)h Ff(T)p Fq(.\))206 2006 y(Section)g(3)e(tak)o(es)h (a)g(closer)h(lo)q(ok)e(at)g(the)i(handling)e(of)g(parameters)h(and)f (expressions.)144 2122 y Fo(1.4)36 b(V)l(ariables)206 2189 y Fq(A)12 b(linear)g(program's)e(v)n(ariables)h(are)i(declared)g(m)o(uc)o(h)d (lik)o(e)h(its)h(parameters.)18 b(The)12 b(only)f(substan)o(tial)144 2238 y(di\013erence)20 b(is)e(that)g(the)h(v)n(alues)f(of)g(the)h(v)n (ariables)e(are)i(to)f(b)q(e)h(determined)f(through)g(optimization,)144 2288 y(whereas)d(the)g(v)n(alues)e(of)h(the)g(parameters)g(are)g(data)g(giv)o (en)f(in)h(adv)n(ance.)206 2355 y(A)g(t)o(ypical)f(declaration)h(of)f(v)n (ariables)g(is)h(the)h(one)f(for)f(ra)o(w)h(material)e(in)h(storage:)308 2438 y Fg(var)18 b(Store)g({raw,1..T)o(+1})e(>=)j(0;)144 2521 y Fq(One)d(nonnegativ)o(e)f(v)n(ariable)g(is)g(here)i(de\014ned)f(for)g(eac)o (h)g(com)o(bination)d(of)i(a)g(mem)o(b)q(er)f(from)f Ff(raw)i Fq(and)144 2571 y(a)f(mem)o(b)q(er)f(from)f Ff(1..T+1)p Fq(.)18 b(By)d(analogy)e(with)h(the)h(notation)e(for)h(a)g(parameter,)g(the)h(v)n (ariable)e(corre-)144 2620 y(sp)q(onding)h(to)f(a)h(particular)g Ff(i)f Fq(in)h Ff(raw)f Fq(and)h Ff(t)f Fq(in)h Ff(1..T+1)e Fq(is)i(denoted)h Ff(Store[i,t])p Fq(.)959 2768 y(7)p eop %%Page: 6 59 bop 474 62 a Fg(data;)474 117 y(set)19 b(prd)f(:=)h(nuts)f(bolts)g(washers;) 474 159 y(set)h(raw)f(:=)h(iron)f(nickel;)474 214 y(param)g(T)h(:=)g(4;)474 256 y(param)f(max_prd)f(:=)i(123.7;)474 338 y(param)f(units)g(:)97 b(nuts)77 b(bolts)57 b(washers)37 b(:=)631 393 y(iron)116 b(.79)h(.83)f(.92) 631 434 y(nickel)76 b(.21)117 b(.17)f(.08)78 b(;)474 517 y(param)18 b(profit)f(:)118 b(1)137 b(2)f(3)h(4)78 b(:=)631 572 y(nuts)136 b(1.73)77 b(1.8)97 b(1.6)g(2.2)631 613 y(bolts)116 b(1.82)77 b(1.9)97 b(1.7)g(2.5)631 655 y(washers)76 b(1.05)h(1.1)116 b(.95)78 b(1.33)37 b(;)474 737 y(param)18 b(:)176 b(init_stock)75 b(cost)i(value)37 b(:=)631 792 y(iron)136 b(35.8)g(.03)116 b(.02)631 834 y(nickel)96 b(7.32)136 b(.025)77 b(-.01)57 b(;)474 916 y(end;)372 988 y Fo(Figure)14 b(1{4.)19 b Fl(Data)13 b(from)f(Figure)i (1{2a)f(in)g(standard)h(AMPL)h(format.)206 1162 y Fq(When)e(AMPL)g(is)g(used) h(in)e(this)h(w)o(a)o(y)m(,)e(the)j(ma)r(jor)d(w)o(ork)h(left)h(to)f(p)q (eople)h(is)g(the)g(form)o(ulation)d(of)i(the)144 1211 y(mo)q(del)h(and)i (the)g(collection)g(of)f(the)h(data.)21 b(In)15 b(addition,)e(if)h(a)g(mo)q (del)g(is)g(initially)f(form)o(ulated)g(b)o(y)h(use)144 1261 y(of)i(the)h(traditional)e(algebraic)i(notation,)f(then)h(a)f(p)q(erson)i(m)o (ust)e(con)o(v)o(ert)h(it)f(to)h(AMPL)g(statemen)o(ts)144 1311 y(b)q(efore)c(the)g(translator)g(can)f(b)q(e)h(applied.)k(AMPL)c(is)f (designed,)h(ho)o(w)o(ev)o(er,)g(so)f(that)g(suc)o(h)i(a)e(con)o(v)o(ersion) 144 1361 y(is)h(more)f Fp(tr)n(anscription)g Fq(than)h(translation.)k(Almost) 12 b(ev)o(ery)h(expression)i(in)d(Figure)h(1{3,)f(for)h(example,)144 1411 y(can)h(b)q(e)g(determined)f(in)g(a)g(straigh)o(tforw)o(ard)g(w)o(a)o(y) g(from)e(some)i(analogous)f(expression)j(in)e(Figure)g(1{1.)206 1477 y(Because)k(AMPL)f(is)e(read)i(b)o(y)f(a)f(computer,)h(it)g(do)q(es)g (di\013er)h(from)d(algebraic)i(notation)f(in)g(sev)o(eral)144 1527 y(ob)o(vious)k(w)o(a)o(ys.)33 b(The)19 b(syn)o(tax)g(is)f(more)g (regular;)j(ev)o(ery)f(declaration)e(of)g(parameters)h(b)q(egins)g(with)144 1577 y Ff(param)p Fq(,)e(for)g(instance,)h(and)g(ends)g(with)f(a)g (semicolon.)27 b(T)m(raditional)16 b(mathematical)e(notations)j(lik)o(e)144 1631 y Fn(a)166 1637 y Fm(ij)195 1631 y Fn(x)219 1637 y Fm(j)r(t)249 1631 y Fq(,)k Fn(i)15 b Fk(2)g(R)20 b Fq(and)496 1600 y Fj(P)540 1610 y Fm(T)540 1643 y(t)p Fi(=1)616 1631 y Fq(are)h(replaced)g(b)o(y)f(unam) o(biguous)e(expressions)j(that)g(use)f(only)g(ASCI)q(I)144 1681 y(c)o(haracters.)h(The)15 b(AMPL)g(syn)o(tax)f(do)q(es)h(p)q(ermit)e(m)o (ultic)o(haracter)h(names,)f(ho)o(w)o(ev)o(er,)h(in)g(place)h(of)e(the)144 1730 y(single)h(letters)h(that)f(are)g(more)f(appropriate)h(to)g(algebraic)f (expressions.)206 1797 y(The)i(\014v)o(e)g(ma)r(jor)d(parts)j(of)f(an)g (algebraic)f(mo)q(del|sets,)h(parameters,)g(v)n(ariables,)f(ob)r(jectiv)o(es) i(and)144 1847 y(constrain)o(ts|are)h(also)f(the)i(\014v)o(e)f(kinds)f(of)g (comp)q(onen)o(ts)h(in)f(an)g(AMPL)h(mo)q(del.)22 b(The)16 b(remainder)g(of)144 1897 y(this)c(section)h(brie\015y)f(in)o(tro)q(duces)h (eac)o(h)g(comp)q(onen)o(t)e(and)h(its)g(AMPL)h(represen)o(tation;)h(at)e (the)g(end,)h(w)o(e)144 1946 y(also)g(remark)g(on)h(the)g(data)g(format.)144 2063 y Fo(1.2)36 b(Sets)206 2129 y Fq(A)15 b(set)h(can)f(b)q(e)h(an)o(y)e (unordered)i(collection)f(of)f(ob)r(jects)i(p)q(ertinen)o(t)g(to)f(a)g(mo)q (del.)k(Tw)o(o)c(unordered)144 2179 y(sets)i(in)e(our)h(example)f(are)h(the)g (set)h Fk(P)i Fq(of)c(\014nal)g(pro)q(ducts)i(and)f(the)g(set)h Fk(R)f Fq(of)f(ra)o(w)h(materials.)22 b(They)144 2229 y(are)14 b(declared)h(b)o(y)f(the)g(AMPL)h(statemen)o(ts)308 2306 y Fg(set)j(prd;)116 b(#)20 b(products)308 2352 y(set)e(raw;)116 b(#)20 b(raw)e(materials)144 2434 y Fq(The)13 b(mem)o(b)q(ership)f(of)g (these)j(sets)f(is)f(sp)q(eci\014ed)i(as)e(part)g(of)f(the)i(LP)f(data)g (\(in)g(Figures)g(1{2a)f(and)h(1{4\).)206 2500 y(Commen)o(ts)f(accompan)o (ying)g(the)i(declarations)g(of)f Ff(prd)h Fq(and)f Ff(raw)h Fq(b)q(egin)f(with)h(the)g(sym)o(b)q(ol)e Ff(#)i Fq(and)144 2550 y(extend)f(to)f(the)h(end)g(of)e(the)i(line.)k(Mo)q(dels)c(are)f(almost) f(alw)o(a)o(ys)g(easier)i(to)f(understand)h(if)f(they)g(con)o(tain)144 2600 y(appropriate)h(commen)o(ts,)d(suc)o(h)k(as)e(those)i(throughout)e (Figure)h(1{3.)k(F)m(or)12 b(brevit)o(y)m(,)g(ho)o(w)o(ev)o(er,)h(w)o(e)g (omit)959 2768 y(6)p eop %%Page: 5 60 bop 144 131 a Fg(###)38 b(SETS)g(###)144 199 y(set)18 b(prd;)430 b(#)20 b(products)144 240 y(set)e(raw;)430 b(#)20 b(raw)e(materials)144 318 y(###)38 b(PARAMETERS)d(###)144 386 y(param)18 b(T)h(>)g(0)g(integer;)193 b(#)20 b(number)d(of)i(productio)o(n)e(periods)144 445 y(param)h(max_prd)f(>) i(0;)234 b(#)20 b(maximum)d(units)g(of)i(production)d(per)i(period)144 504 y(param)g(units)f({raw,prd})g(>=)h(0;)58 b(#)20 b(units[i,j)o(])c(is)j (the)g(quantity)d(of)j(raw)g(material)d(i)732 546 y(#)k(needed)d(to)i (manufactu)o(re)d(one)j(unit)f(of)h(product)d(j)144 605 y(param)i(init_stoc)o (k)e({raw})i(>=)h(0;)38 b(#)20 b(init_stoc)o(k[)o(i])c(is)j(the)g(maximum)d (initial)h(stock)732 647 y(#)j(of)e(raw)h(material)d(i)144 706 y(param)i(profit)f({prd,1..T})o(;)114 b(#)20 b(profit[j,)o(t])c(is)j(the) f(estimated)e(value)i(\(if)h(>=)f(0\))732 748 y(#)i(or)e(disposal)f(cost)h (\(if)h(<=)f(0\))h(of)732 789 y(#)h(a)f(unit)f(of)h(product)e(j)i(in)g (period)e(t)144 849 y(param)h(cost)g({raw})f(>=)i(0;)156 b(#)20 b(cost[i])d(is)h(the)h(storage)e(cost)732 890 y(#)j(per)e(unit)g(per)h (period)e(of)i(raw)f(material)f(i)144 949 y(param)h(value)f({raw};)233 b(#)20 b(value[i])c(is)j(the)f(estimated)f(residual)f(value)732 991 y(#)k(\(if)e(>=)h(0\))g(or)g(disposal)d(cost)i(\(if)h(<=)g(0\))732 1032 y(#)h(of)e(raw)h(material)d(i)k(after)d(the)i(last)f(period)144 1110 y(###)38 b(VARIABLES)e(###)144 1178 y(var)18 b(Make)h({prd,1..)o(T})d (>=)j(0;)97 b(#)20 b(Make[j,t])c(is)j(the)f(number)f(of)i(units)f(of)h (product)e(j)732 1219 y(#)j(manufactu)o(re)o(d)d(in)h(period)g(t)144 1279 y(var)g(Store)g({raw,1..T+)o(1})e(>=)j(0;)38 b(#)20 b(Store[i,t)o(])c (is)j(the)g(number)e(of)i(units)f(of)g(raw)h(material)d(i)732 1320 y(#)k(in)e(storage)f(at)i(the)g(beginning)d(of)j(period)e(t)144 1398 y(###)38 b(OBJECTIVE)e(###)144 1465 y(maximize)17 b(total_pr)o(ofi)o(t:) 262 1525 y(sum)h({t)h(in)g(1..T})f(\()h(sum)f({j)h(in)g(prd})f(profit[j,)o (t])e(*)k(Make[j,t)o(])d(-)595 1566 y(sum)i({i)f(in)h(raw})f(cost[i])f(*)i (Store[i,t])d(\))222 1626 y(+)k(sum)e({i)h(in)g(raw})f(value[i])e(*)k (Store[i,T)o(+1)o(];)517 1685 y(#)f(Total)f(over)g(all)g(periods)f(of)i (estimated)d(profit,)517 1727 y(#)j(minus)f(total)f(over)h(all)h(periods)e (of)i(storage)d(cost,)517 1768 y(#)j(plus)f(value)g(of)g(remaining)f(raw)h (materials)e(after)i(last)g(period)144 1836 y(###)38 b(CONSTRAINT)o(S)e(###) 144 1903 y(subject)17 b(to)i(limit)e({t)i(in)g(1..T}:)37 b(sum)18 b({j)h(in)g(prd})f(Make[j,t])e(<=)j(max_prd;)517 1963 y(#)g(Total)f(producti) o(on)e(in)j(each)f(period)g(must)g(not)g(exceed)f(maximum)144 2030 y(subject)g(to)i(start)e({i)i(in)g(raw}:)37 b(Store[i,1])16 b(<=)j(init_stock)o([i)o(];)517 2090 y(#)g(Units)f(of)g(each)g(raw)h (material)d(in)j(storage)e(at)i(beginning)517 2131 y(#)g(of)g(period)e(1)i (must)f(not)h(exceed)e(initial)g(stock)144 2199 y(subject)g(to)i(balance)e ({i)i(in)f(raw,)g(t)i(in)e(1..T}:)242 2240 y(Store[i,t+)o(1])e(=)j (Store[i,t])d(-)j(sum)g({j)g(in)f(prd})g(units[i,j])e(*)j(Make[j,t];)517 2300 y(#)g(Units)f(of)g(each)g(raw)h(material)d(in)j(storage)517 2341 y(#)g(at)g(the)f(beginning)e(of)j(any)g(period)e(t+1)h(must)g(equal)517 2383 y(#)h(units)f(in)g(storage)f(at)i(the)g(beginning)d(of)j(period)e(t,)517 2424 y(#)i(less)f(units)g(used)g(for)g(production)e(in)j(period)e(t)385 2516 y Fo(Figure)d(1{3.)k Fl(The)c(mo)q(del)f(of)g(Figure)h(1{1)f(transcrib)q (ed)j(in)o(to)d(AMPL.)959 2768 y Fq(5)p eop %%Page: 4 61 bop 723 259 a Fk(P)15 b Fq(=)d Fk(f)p Fl(n)o(uts)r Fn(;)h Fl(b)q(olts)r Fn(;)g Fl(w)o(ashers)r Fk(g)723 309 y(R)f Fq(=)g Fk(f)o Fl(iron)p Fn(;)h Fl(nic)o(k)o(el)r Fk(g)723 371 y Fn(T)18 b Fq(=)12 b(4)p Fn(;)20 b(M)c Fq(=)c(123)p Fn(:)p Fq(7)p 665 417 609 2 v 664 467 2 50 v 715 452 a Fn(a)737 458 y Fm(ij)p 816 467 V 842 452 a Fl(n)o(uts)50 b(b)q(olts)g(w)o(ashers)p 1272 467 V 665 468 609 2 v 664 518 2 50 v 705 503 a(iron)p 816 518 V 77 w Fq(.79)79 b(.83)111 b(.92)p 1272 518 V 664 568 V 690 553 a Fl(nic)o(k)o(el)p 816 568 V 61 w Fq(.21)79 b(.17)111 b(.08)p 1272 568 V 665 570 609 2 v 637 625 664 2 v 636 675 2 50 v 708 660 a Fn(c)726 666 y Fm(j)r(t)p 826 675 V 879 660 a Fq(1)92 b(2)g(3)103 b(4)p 1300 675 V 637 677 664 2 v 636 726 2 50 v 693 712 a Fl(n)o(uts)p 826 726 V 82 w Fq(1.73)49 b(1.8)f(1.6)70 b(2.2)p 1300 726 V 636 776 V 688 761 a Fl(b)q(olts)p 826 776 V 75 w Fq(1.82)49 b(1.9)f(1.7)70 b(2.5)p 1300 776 V 636 826 V 662 811 a Fl(w)o(ashers)p 826 826 V 51 w Fq(1.05)49 b(1.1)69 b(.95)49 b(1.33)p 1300 826 V 637 828 664 2 v 691 883 556 2 v 690 933 2 50 v 760 918 a Fn(i)p 843 933 V 126 w(b)918 924 y Fm(i)1032 918 y Fn(d)1054 924 y Fm(i)1162 918 y Fn(f)1182 924 y Fm(i)p 1246 933 V 691 935 556 2 v 690 985 2 50 v 732 970 a Fl(iron)p 843 985 V 65 w Fq(35.8)69 b(.03)102 b(.02)p 1246 985 V 690 1034 V 716 1020 a Fl(nic)o(k)o(el)p 843 1034 V 70 w Fq(7.32)49 b(.025)g Fk(\000)p Fq(.01)p 1246 1034 V 691 1036 556 2 v 152 1119 a Fo(Figure)14 b(1{2a.)19 b Fl(Data)13 b(for)g(Figure)h(1{1)f(with)h(t)o(w)o(o)f(ra)o(w)h (materials,)e(three)j(pro)q(ducts,)g(four)e(p)q(erio)q(ds.)442 1328 y Fq(Maximize)40 b(1)p Fn(:)p Fq(73)p Fn(x)758 1334 y Fi(11)801 1328 y Fq(+)9 b(1)p Fn(:)p Fq(82)p Fn(x)941 1334 y Fi(21)984 1328 y Fq(+)h(1)p Fn(:)p Fq(05)p Fn(x)1125 1334 y Fi(31)1168 1328 y Fk(\000)f Fn(:)p Fq(03)p Fn(s)1282 1334 y Fi(11)1326 1328 y Fk(\000)h Fn(:)p Fq(025)p Fn(s)1462 1334 y Fi(21)659 1377 y Fq(+1)p Fn(:)p Fq(8)p Fn(x)769 1383 y Fi(12)812 1377 y Fq(+)g(1)p Fn(:)p Fq(9)p Fn(x)932 1383 y Fi(22)975 1377 y Fq(+)f(1)p Fn(:)p Fq(1)p Fn(x)1094 1383 y Fi(32)1138 1377 y Fk(\000)g Fn(:)p Fq(03)p Fn(s)1252 1383 y Fi(12)1296 1377 y Fk(\000)h Fn(:)p Fq(025)p Fn(s)1432 1383 y Fi(22)659 1427 y Fq(+1)p Fn(:)p Fq(6)p Fn(x)769 1433 y Fi(13)812 1427 y Fq(+)g(1)p Fn(:)p Fq(7)p Fn(x)932 1433 y Fi(23)975 1427 y Fq(+)f Fn(:)p Fq(95)p Fn(x)1094 1433 y Fi(33)1138 1427 y Fk(\000)g Fn(:)p Fq(03)p Fn(s)1252 1433 y Fi(13)1296 1427 y Fk(\000)h Fn(:)p Fq(025)p Fn(s)1432 1433 y Fi(23)659 1477 y Fq(+2)p Fn(:)p Fq(2)p Fn(x)769 1483 y Fi(14)812 1477 y Fq(+)g(2)p Fn(:)p Fq(5)p Fn(x)932 1483 y Fi(24)975 1477 y Fq(+)f(1)p Fn(:)p Fq(33)p Fn(x)1115 1483 y Fi(34)1158 1477 y Fk(\000)h Fn(:)p Fq(03)p Fn(s)1273 1483 y Fi(14)1317 1477 y Fk(\000)f Fn(:)p Fq(025)p Fn(s)1452 1483 y Fi(24)659 1527 y Fq(+)p Fn(:)p Fq(02)p Fn(s)764 1533 y Fi(15)808 1527 y Fk(\000)h Fn(:)p Fq(01)p Fn(s)923 1533 y Fi(25)957 1527 y Fn(;)442 1616 y Fq(sub)r(ject)d(to)44 b Fn(x)683 1622 y Fi(11)727 1616 y Fq(+)9 b Fn(x)792 1622 y Fi(21)837 1616 y Fq(+)g Fn(x)902 1622 y Fi(31)949 1616 y Fk(\024)i Fq(123)p Fn(:)p Fq(7)p Fn(;)659 1666 y(x)683 1672 y Fi(12)727 1666 y Fq(+)e Fn(x)792 1672 y Fi(22)837 1666 y Fq(+)g Fn(x)902 1672 y Fi(32)949 1666 y Fk(\024)i Fq(123)p Fn(:)p Fq(7)p Fn(;)659 1716 y(x)683 1722 y Fi(13)727 1716 y Fq(+)e Fn(x)792 1722 y Fi(23)837 1716 y Fq(+)g Fn(x)902 1722 y Fi(33)949 1716 y Fk(\024)i Fq(123)p Fn(:)p Fq(7)p Fn(;)659 1766 y(x)683 1772 y Fi(14)727 1766 y Fq(+)e Fn(x)792 1772 y Fi(24)837 1766 y Fq(+)g Fn(x)902 1772 y Fi(34)949 1766 y Fk(\024)i Fq(123)p Fn(:)p Fq(7)p Fn(;)659 1839 y(s)678 1845 y Fi(11)725 1839 y Fk(\024)h Fq(35)p Fn(:)p Fq(8)p Fn(;)659 1889 y(s)678 1895 y Fi(21)725 1889 y Fk(\024)g Fq(7)p Fn(:)p Fq(32)p Fn(;)659 1962 y(s)678 1968 y Fi(12)725 1962 y Fq(=)g Fn(s)788 1968 y Fi(11)833 1962 y Fk(\000)d Fn(:)p Fq(79)p Fn(x)952 1968 y Fi(11)995 1962 y Fk(\000)h Fn(:)p Fq(83)p Fn(x)1115 1968 y Fi(21)1158 1962 y Fk(\000)g Fn(:)p Fq(92)p Fn(x)1278 1968 y Fi(31)1311 1962 y Fn(;)659 2012 y(s)678 2018 y Fi(13)725 2012 y Fq(=)i Fn(s)788 2018 y Fi(12)833 2012 y Fk(\000)d Fn(:)p Fq(79)p Fn(x)952 2018 y Fi(12)995 2012 y Fk(\000)h Fn(:)p Fq(83)p Fn(x)1115 2018 y Fi(22)1158 2012 y Fk(\000)g Fn(:)p Fq(92)p Fn(x)1278 2018 y Fi(32)1311 2012 y Fn(;)659 2061 y(s)678 2067 y Fi(14)725 2061 y Fq(=)i Fn(s)788 2067 y Fi(13)833 2061 y Fk(\000)d Fn(:)p Fq(79)p Fn(x)952 2067 y Fi(13)995 2061 y Fk(\000)h Fn(:)p Fq(83)p Fn(x)1115 2067 y Fi(23)1158 2061 y Fk(\000)g Fn(:)p Fq(92)p Fn(x)1278 2067 y Fi(33)1311 2061 y Fn(;)659 2111 y(s)678 2117 y Fi(15)725 2111 y Fq(=)i Fn(s)788 2117 y Fi(14)833 2111 y Fk(\000)d Fn(:)p Fq(79)p Fn(x)952 2117 y Fi(14)995 2111 y Fk(\000)h Fn(:)p Fq(83)p Fn(x)1115 2117 y Fi(24)1158 2111 y Fk(\000)g Fn(:)p Fq(92)p Fn(x)1278 2117 y Fi(34)1311 2111 y Fn(;)659 2161 y(s)678 2167 y Fi(22)725 2161 y Fq(=)i Fn(s)788 2167 y Fi(21)833 2161 y Fk(\000)d Fn(:)p Fq(21)p Fn(x)952 2167 y Fi(11)995 2161 y Fk(\000)h Fn(:)p Fq(17)p Fn(x)1115 2167 y Fi(21)1158 2161 y Fk(\000)g Fn(:)p Fq(08)p Fn(x)1278 2167 y Fi(31)1311 2161 y Fn(;)659 2211 y(s)678 2217 y Fi(23)725 2211 y Fq(=)i Fn(s)788 2217 y Fi(22)833 2211 y Fk(\000)d Fn(:)p Fq(21)p Fn(x)952 2217 y Fi(12)995 2211 y Fk(\000)h Fn(:)p Fq(17)p Fn(x)1115 2217 y Fi(22)1158 2211 y Fk(\000)g Fn(:)p Fq(08)p Fn(x)1278 2217 y Fi(32)1311 2211 y Fn(;)659 2261 y(s)678 2267 y Fi(24)725 2261 y Fq(=)i Fn(s)788 2267 y Fi(23)833 2261 y Fk(\000)d Fn(:)p Fq(21)p Fn(x)952 2267 y Fi(13)995 2261 y Fk(\000)h Fn(:)p Fq(17)p Fn(x)1115 2267 y Fi(23)1158 2261 y Fk(\000)g Fn(:)p Fq(08)p Fn(x)1278 2267 y Fi(33)1311 2261 y Fn(;)659 2311 y(s)678 2317 y Fi(25)725 2311 y Fq(=)i Fn(s)788 2317 y Fi(24)833 2311 y Fk(\000)d Fn(:)p Fq(21)p Fn(x)952 2317 y Fi(14)995 2311 y Fk(\000)h Fn(:)p Fq(17)p Fn(x)1115 2317 y Fi(24)1158 2311 y Fk(\000)g Fn(:)p Fq(08)p Fn(x)1278 2317 y Fi(34)1311 2311 y Fn(:)372 2400 y Fo(Figure)k(1{2b.)k Fl(Linear)13 b(program)g(de\014ned)i(b)o(y)e(Figures)i(1{1)e(and)g(1{2a.)959 2768 y Fq(4)p eop %%Page: 3 62 bop 144 412 a Fl(Giv)o(en)124 b Fk(P)169 b Fq(a)14 b(set)h(of)e(pro)q(ducts,) 375 462 y Fk(R)163 b Fq(a)14 b(set)h(of)e(ra)o(w)h(materials,)375 535 y Fn(T)k(>)11 b Fq(0)92 b(the)15 b(n)o(um)o(b)q(er)e(of)g(pro)q(duction)h (p)q(erio)q(ds,)375 585 y Fn(M)i(>)c Fq(0)77 b(maxim)n(um)10 b(total)j(pro)q(duction)h(p)q(er)h(p)q(erio)q(d;)144 658 y Fl(and)164 b Fn(a)397 664 y Fm(ij)438 658 y Fk(\025)12 b Fq(0)70 b Fn(i)14 b Fk(2)f(R)p Fq(,)i Fn(j)h Fk(2)e(P)s Fq(:)20 b(units)15 b(of)g(ra)o(w)g(material)e Fn(i)i Fq(needed)i(to)e(man)o(ufacture)f(one)573 708 y(unit)g(of)f(pro)q(duct)i Fn(j)r Fq(;)375 781 y Fn(b)393 787 y Fm(i)418 781 y Fk(\025)d Fq(0)90 b Fn(i)12 b Fk(2)f(R)p Fq(:)18 b(maxim)o(um)9 b(initial)j(sto)q(c)o(k)j(of)e(ra)o(w)g(material)f Fn(i)p Fq(;)375 854 y Fn(c)393 860 y Fm(j)r(t)573 854 y Fn(j)17 b Fk(2)e(P)s Fq(,)h Fn(t)f Fq(=)g(1)p Fn(;)7 b Fq(.)g(.)g(.)t Fn(;)g(T)f Fq(:)22 b(estimated)15 b(pro\014t)h(\(if)f Fk(\025)g Fq(0\))h(or)g(disp)q(osal)f(cost)i(\(if)573 904 y Fk(\024)12 b Fq(0\))i(of)f(pro)q(duct)i Fn(j)h Fq(in)e(p)q(erio)q(d)g Fn(t)p Fq(;)375 977 y Fn(d)397 983 y Fm(i)422 977 y Fk(\025)e Fq(0)86 b Fn(i)12 b Fk(2)f(R)p Fq(:)18 b(storage)d(cost)f(p)q(er)h(p)q(erio)q (d)f(p)q(er)h(unit)f(of)f(ra)o(w)h(material)e Fn(i)p Fq(;)375 1050 y Fn(f)395 1056 y Fm(i)573 1050 y Fn(i)g Fk(2)f(R)p Fq(:)18 b(estimated)12 b(residual)g(v)n(alue)g(\(if)g Fk(\025)g Fq(0\))h(or)f(disp)q (osal)g(cost)i(\(if)e Fk(\024)f Fq(0\))i(of)573 1100 y(ra)o(w)h(material)e Fn(i)i Fq(after)g(the)h(last)e(p)q(erio)q(d.)144 1181 y Fl(De\014ne)117 b Fn(x)399 1187 y Fm(j)r(t)440 1181 y Fk(\025)12 b Fq(0)68 b Fn(j)14 b Fk(2)d(P)s Fq(,)j Fn(t)e Fq(=)f(1)p Fn(;)c Fq(.)g(.)g(.)e Fn(;)i(T)f Fq(:)17 b(units)d(of)g(pro)q(duct)g Fn(j)j Fq(man)o(ufactured)c (in)g(p)q(erio)q(d)i Fn(t)p Fq(;)375 1254 y Fn(s)394 1260 y Fm(it)432 1254 y Fk(\025)d Fq(0)76 b Fn(i)15 b Fk(2)f(R)p Fq(,)h Fn(t)f Fq(=)h(1)p Fn(;)7 b Fq(.)g(.)g(.)t Fn(;)g(T)16 b Fq(+)11 b(1:)20 b(units)c(of)f(ra)o(w)g(material)f Fn(i)h Fq(in)g(storage)h(at)g(the) 573 1304 y(b)q(eginning)d(of)h(p)q(erio)q(d)g Fn(t)p Fq(.)144 1385 y Fl(Maximize)375 1354 y Fj(P)419 1364 y Fm(T)419 1398 y(t)p Fi(=1)482 1339 y Fj(\020)507 1354 y(P)551 1398 y Fm(j)r Fh(2P)624 1385 y Fn(c)642 1391 y Fm(j)r(t)672 1385 y Fn(x)696 1391 y Fm(j)r(t)735 1385 y Fk(\000)776 1354 y Fj(P)820 1398 y Fm(i)p Fh(2R)892 1385 y Fn(d)914 1391 y Fm(i)927 1385 y Fn(s)946 1391 y Fm(it)973 1339 y Fj(\021)1007 1385 y Fq(+)1048 1354 y Fj(P)1092 1398 y Fm(i)p Fh(2R)1164 1385 y Fn(f)1184 1391 y Fm(i)1198 1385 y Fn(s)1217 1391 y Fm(i;T)t Fi(+1)1307 1385 y Fq(:)573 1470 y(total)19 b(o)o(v)o(er)h(all)f(p)q(erio)q(ds)i(of)e (estimated)g(pro\014t)i(less)f(storage)h(cost,)g(plus)573 1520 y(v)n(alue)13 b(of)h(remaining)e(ra)o(w)h(materials)f(after)j(the)f(last)g(p) q(erio)q(d;)144 1601 y Fl(sub)r(ject)h(to)375 1570 y Fj(P)419 1614 y Fm(j)r Fh(2P)492 1601 y Fn(x)516 1607 y Fm(j)r(t)557 1601 y Fk(\024)d Fn(M)5 b Fq(,)573 1678 y Fn(t)20 b Fq(=)g(1)p Fn(;)7 b Fq(.)g(.)g(.)e Fn(;)i(T)f Fq(:)27 b(total)18 b(pro)q(duction)h(in)f (p)q(erio)q(d)i(t)f(m)o(ust)e(not)i(exceed)i(the)573 1727 y(sp)q(eci\014ed)16 b(maxim)n(um)o(;)375 1809 y Fn(s)394 1815 y Fm(i)p Fi(1)436 1809 y Fk(\024)c Fn(b)498 1815 y Fm(i)512 1809 y Fq(,)49 b Fn(i)12 b Fk(2)g(R)p Fq(:)19 b(units)14 b(of)g(ra)o(w)g(material)e Fn(i)i Fq(on)g(hand)g(at)g(the)h(b)q(eginning)e(of)h(p)q(erio)q(d)573 1859 y(1)g(m)o(ust)f(not)g(exceed)j(the)f(sp)q(eci\014ed)g(maxim)n(um)o(;)375 1940 y Fn(s)394 1946 y Fm(i;t)p Fi(+1)484 1940 y Fq(=)d Fn(s)547 1946 y Fm(it)583 1940 y Fk(\000)625 1909 y Fj(P)669 1952 y Fm(j)r Fh(2P)741 1940 y Fn(a)763 1946 y Fm(ij)792 1940 y Fn(x)816 1946 y Fm(j)r(t)846 1940 y Fq(,)573 2016 y Fn(i)h Fk(2)e(R)p Fq(,)j Fn(t)f Fq(=)f(1)p Fn(;)7 b Fq(.)g(.)g(.)t Fn(;)g(T)f Fq(:)19 b(units)14 b(of)g(ra)o(w)g(material)e Fn(i)i Fq(on)g(hand)g(at)h(the) f(b)q(egin-)573 2066 y(ning)g(of)f(p)q(erio)q(d)h Fn(t)c Fq(+)f(1)14 b(m)o(ust)f(equal)g(units)h(on)g(hand)g(at)g(the)g(b)q(eginning)g(of)573 2116 y(p)q(erio)q(d)g Fn(t)g Fq(less)h(units)f(used)h(for)e(pro)q(duction)h (in)g(p)q(erio)q(d)g Fn(t)p Fq(.)229 2205 y Fo(Figure)g(1{1.)19 b Fl(Algebraic)13 b(form)o(ulation)e(of)j(a)f(maxim)n(um)o(-rev)o(en)o(ue)f (pro)q(duction)i(problem.)959 2768 y Fq(3)p eop %%Page: 2 63 bop 144 30 a Fq(in)o(terpret)16 b(a)f(mo)q(del)e(and)i(its)g(asso)q(ciated)g (data.)21 b(The)15 b(translator's)g(output)g(is)g(a)g(represen)o(tation)h(of) e(a)144 80 y(mathematical)d(program)i(that)h(is)g(suitable)g(as)g(input)g (for)g(most)f(algorithms.)k(Timings)12 b(for)i(a)g(v)n(ariet)o(y)144 130 y(of)j(realistic)g(problems,)f(ranging)h(to)g(o)o(v)o(er)g(a)g(thousand)g (constrain)o(ts)h(and)f(ten)h(thousand)f(v)n(ariables,)144 180 y(suggest)d(that)e(the)h(computing)f(cost)h(of)f(translation)g(is)g (quite)h(reasonable)g(in)f(comparison)g(to)g(the)h(cost)144 229 y(of)g(optimization.)206 296 y(W)m(e)i(in)o(tend)g(AMPL)h(to)f(b)q(e)h (able)f(to)g(express)i(man)o(y)d(kinds)h(of)f(mathematical)e(programs.)21 b(In)15 b(the)144 346 y(in)o(terest)e(of)f(k)o(eeping)g(this)g(pap)q(er)g(to) g(a)g(reasonable)g(length,)g(ho)o(w)o(ev)o(er,)g(w)o(e)g(con\014ne)h(the)g (discussion)f(and)144 395 y(examples)h(to)g(linear)h(programmi)o(ng.)h (Section)f(7)g(compares)f(AMPL)h(to)g(the)g(languages)f(used)i(b)o(y)f(v)n (ar-)144 445 y(ious)f(linear)g(programming)d(systems,)j(but)h(also)f (indicates)h(ho)o(w)f(AMPL)h(is)f(b)q(eing)h(extended)h(to)e(other)144 495 y(kinds)j(of)f(mo)q(dels)g(and)h(ho)o(w)g(it)f(ma)o(y)f(b)q(e)j(in)o (tegrated)g(with)e(other)i(mo)q(deling)d(soft)o(w)o(are.)24 b(App)q(endices)144 545 y(list)13 b(the)i(four)f(AMPL)g(linear)f(programs)g (from)f(whic)o(h)i(the)g(illustrations)f(in)g(the)i(text)f(are)h(extracted.) 144 661 y Fo(1.1)36 b(An)15 b(in)o(tro)q(ductory)e(example)206 727 y Fq(Figure)19 b(1{1)e(displa)o(ys)h(the)h(algebraic)f(form)o(ulation)d (of)j(a)g(simple)e(linear)i(programming)d(mo)q(del,)144 777 y(as)g(it)g(migh)o(t)e(app)q(ear)j(in)f(a)g(rep)q(ort)h(or)f(pap)q(er.)23 b(The)16 b(form)o(ulation)c(b)q(egins)k(with)f(a)g(description)h(of)e(the)144 827 y(index)h Fp(sets)g Fq(and)g(n)o(umerical)f Fp(p)n(ar)n(ameters)g Fq(that)i(the)g(mo)q(del)d(requires.)24 b(Next,)15 b(the)h(decision)f Fp(variables)144 877 y Fq(are)i(de\014ned.)29 b(Finally)16 b(the)h Fp(obje)n(ctive)g Fq(and)g Fp(c)n(onstr)n(aints)g Fq(are)g(sp)q (eci\014ed)i(as)e(expressions)i(in)d(the)i(sets,)144 927 y(parameters)c(and)g (v)n(ariables.)206 993 y(The)20 b(algebraic)f(form)o(ulation)e(in)i(Figure)g (1{1)g(do)q(es)h(not)g(de\014ne)g(an)o(y)f(particular)h(optimization)144 1043 y(problem.)30 b(The)19 b(purp)q(ose)h(of)e(this)g(form)o(ulation)d(is)k (to)f(sp)q(ecify)h(a)f(general)h(class)g(of)e(problems)h(that)144 1093 y(share)f(a)f(certain)g(structure)i(and)e(purp)q(ose:)24 b(pro)q(duction)16 b(o)o(v)o(er)g(time)e(to)i(maximi)o(ze)e(rev)o(en)o(ues.) 26 b(If)16 b(w)o(e)144 1143 y(w)o(an)o(t)e(to)h(de\014ne)g(a)g(sp)q(eci\014c) h(problem,)d(w)o(e)i(m)o(ust)f(supplemen)o(t)g(this)h(form)o(ulatio)o(n)d (with)i(v)n(alues)h(for)f(all)144 1192 y(of)j(the)h(sets)h(and)e(parameters.) 29 b(Eac)o(h)18 b(di\013eren)o(t)h(sp)q(eci\014cation)f(of)f(set)i(and)e (parameter)g(v)n(alues)g(will)144 1242 y(yield)d(one)g(di\013eren)o(t)h (problem.)j(T)m(o)c(distinguish)g(b)q(et)o(w)o(een)h(a)f(general)h(form)o (ulation)c(and)j(a)g(particular)144 1292 y(problem,)e(w)o(e)i(call)f(the)i (former)e(a)g Fp(mo)n(del)h Fq(and)g(the)g(latter)g(a)g Fp(line)n(ar)g(pr)n (o)n(gr)n(am)f Fq(or)h Fp(LP)p Fq(.)206 1358 y(The)f(distinction)e(b)q(et)o (w)o(een)i(general)f(mo)q(dels)f(and)h(sp)q(eci\014c)h(LPs)g(is)e(essen)o (tial)i(in)e(dealing)g(with)h(v)o(ery)144 1408 y(large)i(linear)h (optimization)d(problems.)19 b(As)d(an)e(illustration,)f(Figure)i(1{2a)f (presen)o(ts)j(a)d(collection)h(of)144 1458 y(data)i(for)g(a)g(small)d (instance)k(of)f(the)h(preceding)g(form)o(ulation:)k(2)16 b(ra)o(w)h (materials,)f(3)h(\014nal)g(pro)q(ducts)144 1508 y(and)h(4)g(p)q(erio)q(ds.) 33 b(In)18 b(suc)o(h)i(a)e(small)e(example)h(the)i(ob)r(jectiv)o(e)g(and)f (constrain)o(ts)i(are)e(easy)h(to)g(write)144 1558 y(out)g(explicitly)m(,)g (as)h(sho)o(wn)f(in)g(Figure)g(1{2b.)34 b(Supp)q(ose)20 b(no)o(w)f(that)h (there)g(are)g(10)f(ra)o(w)g(materials,)144 1608 y(30)f(\014nal)f(pro)q (ducts)j(and)e(20)g(p)q(erio)q(ds.)32 b(The)18 b(mo)q(del)f(in)h(Figure)g (1{1)g(is)g(unc)o(hanged,)h(and)f(the)h(data)144 1657 y(tables)14 b(in)g(Figure)g(1{2a)e(still)h(\014t)h(on)g(p)q(erhaps)h(t)o(w)o(o)e(pages;)h (but)g(the)h(linear)e(program)f(expands)j(to)f(230)144 1707 y(constrain)o(ts)j(in)f(810)g(v)n(ariables,)g(and)g(its)h(explicit)f(listing) f(\(in)i(the)g(manner)e(of)h(Figure)h(1{2b\))f(is)g(to)q(o)144 1757 y(big)f(to)h(b)q(e)h(usefully)f(readable.)24 b(If)16 b(the)h(p)q(erio)q (ds)g(are)f(further)h(increased)g(to)f(40,)g(the)h(mo)q(del)d(is)i(again)144 1807 y(unc)o(hanged)g(and)f(only)f(one)i(data)f(table)g(\(the)h(exp)q(ected)h (pro\014ts)f Fn(c)1217 1813 y Fm(j)r(t)1247 1807 y Fq(\))f(doubles)h(in)e (size,)i(ev)o(en)g(though)144 1857 y(the)e(n)o(um)o(b)q(ers)g(of)f(v)n (ariables)g(and)h(constrain)o(ts)h(in)e(the)i(linear)e(program)f(are)j(b)q (oth)f(roughly)f(doubled.)206 1923 y(W)m(e)f(will)f(use)i(the)g(term)f Fp(mo)n(del)h(tr)n(anslator)e Fq(to)i(describ)q(e)h(a)e(computer)g(system)g (that)g(reads)h(a)f(mo)q(del)144 1973 y(in)f(the)i(compact)e(algebraic)g (form)f(of)h(Figure)h(1{1)f(along)g(with)g(data)h(in)f(the)h(form)e(of)i (Figure)f(1{2a,)g(and)144 2023 y(that)h(writes)h(out)f(a)g(linear)g(program)f (in)g(the)i(v)o(erb)q(ose)g(explicit)f(form)f(of)g(Figure)i(1{2b.)j(F)m(or)c (a)g(practical)144 2072 y(implemen)o(tatio)o(n,)j(the)j(data)f(input)f(can)i (b)q(e)g(giv)o(en)e(a)h(more)f(mac)o(hine-readable)g(arrangemen)o(t,)h(and) 144 2122 y(the)e(explicit)e(output)h(can)h(b)q(e)f(written)h(in)f(a)f(format) f(more)i(suitable)f(to)h(an)g(e\016cien)o(t)h(algorithm.)h(The)144 2172 y(ma)r(jor)e(c)o(hallenge)h(of)g(translation,)g(ho)o(w)o(ev)o(er,)h(is)f (to)h(devise)g(a)f(language)g(that)g(can)h(clearly)g(represen)o(t)144 2222 y(the)e(compact)g(algebraic)f(mo)q(del,)f(y)o(et)i(that)g(can)g(b)q(e)h (read)f(and)g(in)o(terpreted)h(b)o(y)f(a)f(computer)h(system.)206 2288 y(AMPL)g(is)f(suc)o(h)h(a)e(language.)17 b(The)d(AMPL)f(represen)o (tation)i(of)d(Figure)h(1{1's)g(mo)q(del)e(is)i(sho)o(wn)g(in)144 2338 y(Figure)h(1{3,)f(and)g(is)h(used)h(throughout)f(this)g(in)o(tro)q (duction)f(to)h(illustrate)g(the)g(language's)f(features.)206 2405 y(An)g(AMPL)h(translator)f(starts)h(b)o(y)f(reading,)f(parsing)h(and)g (in)o(terpreting)g(a)g(mo)q(del)e(lik)o(e)i(the)g(one)g(in)144 2454 y(Figure)j(1{3.)24 b(The)17 b(translator)f(then)h(reads)g(some)e (represen)o(tation)j(of)d(particular)h(data;)g(Figure)h(1{4)144 2504 y(displa)o(ys)h(one)g(suitable)g(format)e(for)i(the)h(data)e(of)h (Figure)g(1{2a.)30 b(The)18 b(mo)q(del)f(and)h(data)g(are)g(then)144 2554 y(pro)q(cessed)g(to)f(determine)f(the)g(linear)g(program)f(that)h(they)h (represen)o(t,)h(and)e(the)h(linear)f(program)e(is)144 2604 y(written)g(out)g(in)g(some)f(appropriate)h(form.)959 2768 y(2)p eop %%Page: 1 64 bop 144 30 a Fr(1.)42 b(In)n(tro)r(duction)206 109 y Fq(Practical)15 b(large-scale)f(mathematical)d(programming)g(in)o(v)o(olv)o(es)i(more)g(than) i(just)f(the)h(minim)o(iza-)144 159 y(tion)f(or)h(maxim)o(izatio)o(n)d(of)i (an)g(ob)r(jectiv)o(e)i(function)e(sub)r(ject)i(to)f(constrain)o(t)g (equations)f(and)h(inequal-)144 209 y(ities.)30 b(Before)18 b(an)o(y)g(optimizing)d(algorithm)g(can)j(b)q(e)g(applied,)g(some)f(e\013ort) i(m)o(ust)d(b)q(e)j(exp)q(ended)g(to)144 258 y(form)o(ulate)e(the)i (underlying)f(mo)q(del)f(and)i(to)f(generate)i(the)f(requisite)g (computational)e(data)h(struc-)144 308 y(tures.)206 375 y(If)c(algorithms)e (could)h(deal)h(with)g(optimization)d(problems)i(as)h(p)q(eople)g(do,)g(then) g(the)h(form)o(ulation)144 424 y(and)g(generation)h(phases)h(of)e(mo)q (deling)e(migh)o(t)h(b)q(e)i(relativ)o(ely)f(easy)m(.)23 b(In)15 b(realit)o(y)m(,)g(ho)o(w)o(ev)o(er,)h(there)h(are)144 474 y(man)o(y)10 b(di\013erences)k(b)q(et)o(w)o(een)g(the)e(form)e(in)i(whic)o(h) f(h)o(uman)g(mo)q(delers)g(understand)i(a)f(problem)f(and)g(the)144 524 y(form)k(in)i(whic)o(h)g(algorithms)e(solv)o(e)i(it.)27 b(Reliable)16 b Fp(tr)n(anslation)h Fq(from)e(the)j(\\mo)q(deler's)e(form")f (to)i(the)144 574 y(\\algorithm's)11 b(form")h(is)i(often)f(a)h(considerable) h(exp)q(ense.)206 640 y(In)21 b(the)g(traditional)e(approac)o(h)i(to)f (translation,)h(the)g(w)o(ork)g(is)f(divided)g(b)q(et)o(w)o(een)i(h)o(uman)d (and)144 690 y(computer.)f(First,)13 b(a)h(p)q(erson)g(who)g(understands)h (the)g(mo)q(deler's)d(form)g(writes)j(a)e(computer)h(program)144 740 y(whose)j(output)f(will)f(represen)o(t)j(the)f(required)g(data)f (structures.)27 b(Then)17 b(a)e(computer)h(compiles)f(and)144 790 y(executes)h(the)f(program)d(to)i(create)i(the)e(algorithm's)e(form.)17 b(This)d(arrangemen)o(t)f(is)h(often)g(costly)g(and)144 840 y(error-prone;)e(most)d(seriously)m(,)h(the)g(program)f(m)o(ust)g(b)q(e)h (debugged)h(b)o(y)e(a)h(h)o(uman)e(mo)q(deler)i(ev)o(en)g(though)144 889 y(its)k(output|the)g(algorithm's)d(form|is)h(not)i(mean)o(t)e(for)i(p)q (eople)g(to)g(read.)206 956 y(In)g(the)g(imp)q(ortan)o(t)e(sp)q(ecial)i(case) h(of)e(linear)g(programmi)o(ng,)d(the)15 b(largest)f(part)f(of)g(the)i (algorithm's)144 1006 y(form)j(is)i(the)g(represen)o(tation)i(of)d(the)i (constrain)o(t)f(co)q(e\016cien)o(t)h(matrix.)34 b(T)o(ypically)18 b(this)i(is)g(a)g(v)o(ery)144 1055 y(sparse)d(matrix)e(whose)i(ro)o(ws)f(and) g(columns)f(n)o(um)o(b)q(er)g(in)h(the)h(h)o(undreds)g(or)f(thousands,)h(and) f(whose)144 1105 y(nonzero)f(elemen)o(ts)g(app)q(ear)g(in)g(in)o(tricate)f (patterns.)22 b(A)15 b(computer)g(program)e(that)i(pro)q(duces)h(a)e(com-)144 1155 y(pact)j(represen)o(tation)i(of)e(the)g(co)q(e\016cien)o(ts)i(is)e (called)g(a)f(matrix)g(generator.)28 b(Sev)o(eral)18 b(programmi)o(ng)144 1205 y(languages)e(ha)o(v)o(e)h(b)q(een)h(designed)f(sp)q(eci\014cally)g(for) g(writing)f(matrix)f(generators)j(\(Ha)o(v)o(erly)e(Systems)144 1255 y(1977,)c(Creegan)j(1985\))e(and)h(standard)g(languages)f(lik)o(e)g(F)m (ortran)h(are)g(also)g(often)g(used)g(\(Beale)h(1970\).)206 1321 y(Man)o(y)h(of)g(the)g(di\016culties)g(of)g(translation)f(from)g(mo)q (deler's)g(form)f(to)i(algorithm's)e(form)g(can)i(b)q(e)144 1371 y(circum)o(v)o(en)o(ted)e(b)o(y)h(the)g(use)g(of)f(a)g(computer)h Fp(mo)n(deling)g(language)h Fq(for)e(mathematical)d(programming)o(.)144 1421 y(A)k(mo)q(deling)e(language)h(is)h(designed)g(to)g(express)i(the)f(mo)q (deler's)e(form)f(in)h(a)h(w)o(a)o(y)f(that)h(can)h(serv)o(e)g(as)144 1471 y(direct)c(input)g(to)f(a)g(computer)g(system.)17 b(Then)12 b(the)g(translation)f(to)g(the)h(algorithm's)d(form)h(can)h(b)q(e)h(p)q(er-) 144 1520 y(formed)h(en)o(tirely)i(b)o(y)f(computer,)g(without)g(the)h(in)o (termediate)e(stage)i(of)f(programming)o(.)j(The)e(adv)n(an-)144 1570 y(tages)f(of)f(mo)q(deling)f(languages)h(o)o(v)o(er)h(matrix)e (generators)j(ha)o(v)o(e)e(b)q(een)i(analyzed)f(in)f(detail)g(b)o(y)h(F)m (ourer)144 1620 y(\(1983\).)28 b(Implemen)o(tations)15 b(suc)o(h)j(as)g(GAMS) f(\(Bissc)o(hop)i(and)e(Meeraus)i(1982;)f(Bro)q(ok)o(e,)g(Kendric)o(k)144 1670 y(and)13 b(Meeraus)h(1988\))e(and)h(MGG)g(\(Simons)e(1987\))h(w)o(ere)i (under)g(w)o(a)o(y)e(in)h(the)h(1970's,)d(and)i(the)h(pace)g(of)144 1720 y(dev)o(elopmen)o(t)f(has)h(increased)h(in)f(recen)o(t)h(y)o(ears.)206 1786 y(W)m(e)j(describ)q(e)i(in)d(this)h(pap)q(er)h(the)f(design)h(and)e (implemen)o(tation)e(of)i(AMPL,)h(a)g(new)g(mo)q(deling)144 1836 y(language)d(for)h(mathematical)d(programmi)o(ng.)21 b(Compared)15 b(to)h(previous)h(languages,)e(AMPL)h(is)g(no-)144 1886 y(table)c(for)f(the)h (generalit)o(y)f(of)g(its)h(syn)o(tax,)f(and)h(for)f(the)h(similarit)o(y)d (of)i(its)h(expressions)h(to)e(the)h(algebraic)144 1935 y(notation)g (customarily)g(used)i(in)f(the)h(mo)q(deler's)e(form.)k(It)d(o\013ers)h(a)f (v)n(ariet)o(y)g(of)g(t)o(yp)q(es)h(and)f(op)q(erations)144 1985 y(for)j(the)g(de\014nition)g(of)g(indexing)f(sets,)i(as)g(w)o(ell)e(as)h (a)g(range)g(of)g(logical)e(expressions.)26 b(AMPL)17 b(dra)o(ws)144 2035 y(considerable)d(inspiration)e(from)f(the)j(XML)f(protot)o(yp)q(e)h (language)e(\(F)m(ourer)i(1983\),)e(but)h(incorp)q(orates)144 2085 y(man)o(y)f(c)o(hanges)j(and)e(extensions.)206 2151 y(AMPL)h(is)g(in)o (tro)q(duced)g(b)q(elo)o(w)f(through)h(the)g(example)e(of)h(a)h(simple)e (maxim)n(um)o(-)o(rev)o(en)o(ue)g(pro)q(duc-)144 2201 y(tion)e(problem.)16 b(Sections)11 b(2,)f(3)g(and)h(4)f(then)h(use)h(more)d(complex)g(examples)h (to)g(examine)f(ma)r(jor)g(asp)q(ects)144 2251 y(of)14 b(the)g(language)g (design)g(in)g(detail.)19 b(W)m(e)13 b(ha)o(v)o(e)i(attempted)f(to)g(touc)o (h)g(up)q(on)g(most)f(of)h(the)h(language's)144 2301 y(fundamen)o(tal)f (features,)j(while)f(a)o(v)o(oiding)e(the)j(length)o(y)e(sp)q(eci\014cs)j (that)e(w)o(ould)g(b)q(e)g(appropriate)g(to)g(a)144 2351 y(user's)d(guide)g (or)f(reference)j(man)o(ual.)g(Our)e(emphasis)f(is)g(on)g(asp)q(ects)j(of)c (the)j(language)d(that)i(represen)o(t)144 2400 y(particularly)g(imp)q(ortan)o (t)f(or)i(di\016cult)f(design)h(decisions.)206 2467 y(By)h(itself,)e(AMPL)h (can)g(only)g(b)q(e)g(emplo)o(y)o(ed)f(to)h Fp(sp)n(e)n(cify)f Fq(classes)i(of)f(mathematical)d(programmi)o(ng)144 2517 y(mo)q(dels.)17 b(F)m(or)c(the)h(language)e(to)h(b)q(e)h(useful,)f(it)g(m)o(ust)f(b)q(e)i (incorp)q(orated)g(in)o(to)f(a)g(system)g(that)g(manages)144 2566 y(data,)19 b(mo)q(dels)f(and)g(solutions.)32 b(Th)o(us)19 b(Section)g(5)f(discusses)j(a)d(standard)h(represen)o(tation)h(of)e(data)144 2616 y(for)d(an)g(AMPL)h(mo)q(del,)e(and)h(Section)h(6)g(describ)q(es)h(our)f (implem)o(en)o(tation)d(of)i(a)g(translator)g(that)h(can)959 2768 y(1)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF %!PS-Adobe-2.0 %%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software %%Title: cover.dvi %%Pages: 1 1 %%BoundingBox: 0 0 612 792 %%EndComments %%BeginProcSet: texc.pro /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10 N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{ /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{ statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail} B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}bind{ adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc X nd}bind{1 add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}bind]N /D{ /cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval (Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{ /SS save N}B /eos{clear SS restore}B end %%EndProcSet TeXDict begin 1000 300 300 @start /Fa 1 94 df<1380A21220A713E01227123FEAFF8012 FC12E01220AC13E01227123FEAFF8012FC12E01220A41300A20B277E9D10>93 D E /Fb 2 55 df51 D<137EEA03FF38078180380F03C0EA1E07123CEB038048C7FCA212F813F8EAFB0E38 FA0780EAFC0314C000F813E0A41278A214C0123CEB0780381E0F00EA07FEEA03F8131B7E9A18> 54 D E /Fc 37 122 df<1202A3EAC218EAF278EA3AE0EA0F80A2EA3AE0EAF278EAC218EA0200 A30D0E7E9812>42 D<126012F0A212701210A21220A21240A2040A7D830A>44 DI48 D<12035AB4FC1207B1EA7FF00C157E9412>III54 D56 DI68 DI73 D<00FEEB03F8001E14C000171305A338138009A23811C0 11A33810E021A2EB7041A3EB3881A2EB1D01A2130EA2123839FE040FF81D177F9620>77 D<00FC13FE001E1338001F13101217EA1380EA11C0A2EA10E013701338A2131C130E130F1307EB 0390EB01D0A2EB00F014701430123800FE131017177F961A>I83 D<38FF80FE381C00381410B06C132012066C13403801818038007E001717 7F961A>85 D97 D99 D<137E130EA8EA07CEEA1C3EEA300E1270126012E0A412601270EA301EEA18 2E3807CFC012177F9614>IIII<12FC121CA8137CEA1D8EEA1E07 121CAA38FF9FE01317809614>I<1218123CA212181200A5127C121CAC12FF081780960A>I<12FC 121CB3A3EAFF80091780960A>108 D<38FC7C1F391D8E6380391E0781C0001C1301AA39FF9FE7 F81D0E808D1E>IIII114 DI<1208A31218A21238EAFF80EA3800A71340A4 EA1C80EA0F000A147F930E>III<38FCFE7C3838383814 10381C3C20A2134C380E4E40A2138638078780A2130300031300A2160E7F8D19>I 121 D E /Fd 31 122 df<1230127812F0126005047C830D>46 D<13021306130C131C137CEA03 9CEA0038A41370A413E0A4EA01C0A4EA0380A41207EAFFF00F1C7C9B15>49 D<131E1361EB8180EA0180380300C0A238060180A3380703001386EA03CC13F01201EA0378EA06 3CEA081EEA180E1230EA6006A3485AA25BEA60105BEA30C0000FC7FC121D7C9B15>56 D<133C13C6EA0183EA03031206120E000C1380121C1400A2485AA35B130EEA181EA2EA0C6CEA07 9CEA001C1318133813305BEAE0C0A2EA81800086C7FC127C111D7B9B15>I<3801FFFE39003C07 8090383803C01401A313701403A2EC078001E01300140E143CEBFFF83801C01C80140FA2EA0380 A43807001E141C143C5C380E01E0B512801A1C7D9B1D>66 D<3801FFFE39003C078090383801C0 A2EC00E0A24913F01570A215F05BA43901C001E0A315C0380380031580140715003807000E5C5C 5C380E01C0B5C7FC1C1C7D9B1F>68 D<48B512C038003C01EB38001580A35BA214201500495AA2 14C013FF3801C080A4D80381C7FC1380A348C8FCA45AEAFFF01A1C7D9B1B>70 D<903803F02090381E0C6090383002E09038E003C03801C001EA038048C7FC000E1480121E121C 123C15005AA35AA2903801FFC09038001E00141CA400705BA27E001813786C139038070710D801 F8C7FC1B1E7A9C20>I74 D<3901FFC0FF39003C003C0138133015401580EC0100EB7002 5C14105C495A14C013E113E53801C8E013D013E0EBC070EA0380A280A2EA070080A348131E39FF E0FF80201C7D9B20>I77 D<3801FFF838003C0EEB3807EC0380A3EB7007A3EC0F00EBE0 0E5C1470EBFFC0EA01C014601470A2EA0380A4380700F01540A2158048137839FFE07900C7121E 1A1D7D9B1E>82 DI<3AFF83FF0FF03A3C007001C00038158002F013001502EB01705D13025DEA1C04 5D13085D13105D13205DEB407192C7FCEB8072121DEB0074121E1478121C147012181460121024 1D779B29>87 D97 D<123F1207A2120EA45AA4EA39C0EA3E60EA3830A2EA7038A4EAE0 70A3136013E0EAC0C012C1EA6180EA6300123C0D1D7B9C13>IIII<13F3EA018FEA030FEA0607EA0E0E120C121CA2EA381CA4133812 30A2EA187813F0EA0F701200A213E0A2EAC0C012E1EAC300127E101A7D9113>103 DII<393C1E078039266318C0394683A0E0384703C0008E 1380A2120EA2391C0701C0A3EC0380D8380E1388A2EC0708151039701C032039300C01C01D127C 9122>109 DII114 DI<13C01201A3EA03 80A4EAFFE0EA0700A3120EA45AA4EA3840A31380EA1900120E0B1A7D990E>III121 D E /Fe 18 118 df<1238127C12FEA3127C12381200A81238127C12FEA3127C123807167C9510>58 D<1470A214F8A3497EA2497EA3EB06FF80010E7FEB0C3FA201187F141F01387FEB300FA201607F 140701E07F90B5FCA239018001FCA200038090C7FCA20006147FA23AFFE00FFFF8A225227EA12A >65 D76 DI80 D97 D99 D<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3 127CA2127E003E13186C1330380FC0703803FFC0C6130015167E951A>101 D<3803FC1E380FFF7F381F0F8F383E07CF383C03C0007C13E0A5003C13C0EA3E07381F0F80EBFF 00EA13FC0030C7FCA21238383FFF806C13F06C13F84813FCEA380048133E00F0131EA40078133C 007C137C383F01F8380FFFE00001130018217E951C>103 DI<121C123E127FA3123E121CC7FCA7B4 FCA2121FB2EAFFE0A20B247EA310>I108 D<3AFF07F007F090391FFC1FFC3A1F303E303E01401340496C487EA201001300AE3BFFE0FFE0FF E0A22B167E9530>I<38FF07E0EB1FF8381F307CEB403CEB803EA21300AE39FFE1FFC0A21A167E 951F>I<13FE3807FFC0380F83E0381E00F0003E13F848137CA300FC137EA7007C137CA26C13F8 381F01F0380F83E03807FFC03800FE0017167E951C>I114 D<487EA41203A21207A2120F123FB5FCA2EA0F80 ABEB8180A5EB8300EA07C3EA03FEEA00F811207F9F16>116 D<38FF01FEA2381F003EAF147E14 FE380F81BE3907FF3FC0EA01FC1A167E951F>I E /Ff 49 124 df34 D<13E0EA0190EA0308A21207A45B A25B5B3903C03FE09038800F0014061404EA05C000095B3810E010123038607020A238E0384013 3CEB1C8090380F00207F0070EB8040383009C0391830E1803907C03E001B1F7E9D20>38 D<13401380EA0100120212065AA25AA25AA212701260A312E0AC1260A312701230A27EA27EA27E 12027EEA008013400A2A7D9E10>40 D<7E12407E7E12187EA27EA27EA213801201A313C0AC1380 A312031300A21206A25AA25A12105A5A5A0A2A7E9E10>II<126012F0A212701210A412 20A212401280040C7C830C>44 D<126012F0A2126004047C830C>46 D48 D<12035A123F12C71207B3A4EA0F80EAFFF80D1C7C9B15>I51 D<130CA2131C133CA2135C13DC139CEA011C120312 021204120C1208121012301220124012C0B512C038001C00A73801FFC0121C7F9B15>II<1240387FFF801400A2EA4002485AA25B485A A25B1360134013C0A212015BA21203A41207A66CC7FC111D7E9B15>55 DII<1306A3130FA3EB1780A3EB23C0A3EB41E0A3EB 80F0A200017FEB0078EBFFF83803007C0002133CA20006133E0004131EA2000C131F121E39FF80 FFF01C1D7F9C1F>65 DI<90381F8080EBE061380180 1938070007000E13035A14015A00781300A2127000F01400A8007014801278A212386CEB0100A2 6C13026C5B380180083800E030EB1FC0191E7E9C1E>I<39FFF3FFC0390F003C00ACEBFFFCEB00 3CAD39FFF3FFC01A1C7E9B1F>72 D74 D76 DII80 D82 D<3807E080EA1C19EA3005EA7003EA600112E01300A36C13007E127CEA7F C0EA3FF8EA1FFEEA07FFC61380130FEB07C0130313011280A300C01380A238E00300EAD002EACC 0CEA83F8121E7E9C17>I<007FB512C038700F010060130000401440A200C014201280A3000014 00B1497E3803FFFC1B1C7F9B1E>I92 D97 D<12FC121CAA137CEA1D86EA1E0338 1C018014C0130014E0A614C013011480381E0300EA1906EA10F8131D7F9C17>II<133F 1307AAEA03E7EA0C17EA180F487E1270126012E0A61260127012306C5AEA0C373807C7E0131D7E 9C17>II<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA 7FE00F1D809C0D>II<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17> I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<12FC121CB3A9EAFF80091D7F9C 0C>108 D<39FC7E07E0391C838838391D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F 9124>IIII114 DI<1204A4120CA2121C123CEAFFE0EA1C00A91310A5120CEA 0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3F014127F9117>I<39FF 3FCFE0393C0F0380381C07011500130B000E1382A21311000713C4A213203803A0E8A2EBC06800 011370A2EB8030000013201B127F911E>119 D<38FF07E0383C0380381C0100A2EA0E02A26C5A A3EA0388A213D8EA01D0A2EA00E0A31340A25BA212F000F1C7FC12F31266123C131A7F9116> 121 D123 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300 TeXDict begin %%EndSetup %%Page: 1 1 bop 677 438 a Ff(A)m(T&T)13 b(Bell)h(Lab)q(oratories)618 488 y(Murra)o(y)g(Hill,)e(New)j(Jersey)g(07974)485 928 y(Computing)c(Science)16 b(T)m(ec)o(hnical)d(Rep)q(ort)h(No.)k(133)297 1037 y Fe(AMPL:)h(A)g (Mathematical)e(Programming)f(Language)764 1147 y Fd(R)n(ob)n(ert)f(F)m(our)n (er)p Ff(*)771 1197 y Fd(David)g(M.)g(Gay)711 1247 y(Brian)g(W.)g(Kernighan) 110 1985 y Ff(Jan)o(uary)e(1987)110 2035 y Fd(R)n(evise)n(d)i(June)g(1989)75 2151 y Fc(*Departmen)o(t)8 b(of)j(Industrial)e(Engineering)g(and)h(Managemen) o(t)f(Sciences)108 2201 y(North)o(w)o(estern)g(Univ)o(ersit)o(y)m(,)h(Ev)n (anston,)f(Illinois)h(60208-3119)75 2574 y Ff(This)h(app)q(ears)h(in)f (shortened)i(form)d(as)h(\\A)g(Mo)q(deling)g(Language)g(for)g(Mathematical)e (Programming")o(,)75 2624 y Fd(Management)16 b(Scienc)n(e)f Fb(36)e Fa(])p Ff(5)h(\(1990\),)f(pp.)18 b(519{554.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF