аЯрЁБс>ўџ ўџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot Entryџџџџџџџџ*0_šюЯЛђР№^Щкч(ЦўџџџContentsџџџџџџџџџџџџХџџџџџџџџџџџџџџџџџџџџџџџџўџџџ§џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ !#џџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot Entryџџџџџџџџ*0_šюЯЛђР№^p%ееч(ЦўџџџContentsџџџџџџџџџџџџХџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџ§џџџ "џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџь‹{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}{\f3\fmodern\fprq2 Courier New;}{\f4\fswiss\fprq2 System;}{\f5\fmodern Courier New;}} {\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green175\blue0;} \deflang1033\pard\plain\f2\fs20\cf1 MODEL\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf2 ! (TSPCUT) Traveling Salesman Problem. Find the shortest tour that \par visits each city exactly once. Subtour elimination method. \par ! Keywords: TSP, traveling sales person, routing, tour;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 SETS\plain\f2\fs20\cf0 : \par CITY; \par LINK( CITY, CITY): \par DIST, \plain\f2\fs20\cf2 ! The distance matrix;\plain\f2\fs20\cf0 \par Y; \plain\f2\fs20\cf2 ! Y( I, J) = 1 if link I, J is in tour;\plain\f2\fs20\cf0 \par SUBTOUR: TOURSIZE; \par SXC(SUBTOUR,CITY): FLAG; \par \plain\f2\fs20\cf1 ENDSETS\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 DATA\plain\f2\fs20\cf0 : \par SUBTOUR = 1..20; \plain\f2\fs20\cf2 ! Number subtour cuts we allow;\plain\f2\fs20\cf0 \par CITY = NYK ATL CHI CIN HOU LAX MON PHL PIT STL SND SNF; \par \plain\f2\fs20\cf2 ! Distance matrix for cities of National League of \par US baseball, circa 2004. It need not be symmetric;\plain\f2\fs20\cf0 \par DIST = \par 0 864 845 664 1706 2844 396 92 386 1002 2892 3032 \par 864 0 702 454 842 2396 1196 772 714 554 2363 2679 \par 845 702 0 324 1093 2136 764 764 459 294 2184 2187 \par 664 454 324 0 1137 2180 798 572 284 338 2228 2463 \par 1706 842 1093 1137 0 1616 1857 1614 1421 799 1521 2021 \par 2844 2396 2136 2180 1616 0 2900 2752 2464 1842 95 405 \par 396 1196 764 798 1857 2900 0 424 514 1058 2948 2951 \par 92 772 764 572 1614 2752 424 0 305 910 2800 2951 \par 386 714 459 284 1421 2464 514 305 0 622 2512 2646 \par 1002 554 294 338 799 1842 1058 910 622 0 1890 2125 \par 2892 2363 2184 2228 1521 95 2948 2800 2512 1890 0 500 \par 3032 2679 2187 2463 2021 405 2951 2951 2646 2125 500 0; \par \plain\f2\fs20\cf1 ENDDATA\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf2 !-----------------------------------------------------------;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 SUBMODEL\plain\f2\fs20\cf0 TSP_CUT: \par \plain\f2\fs20\cf2 ! Minimize total distance traveled;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 MIN\plain\f2\fs20\cf0 = \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( LINK: DIST * Y); \par \par \plain\f2\fs20\cf2 ! The Assignment constraints;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( CITY( K): \par \plain\f2\fs20\cf2 ! City K must be entered;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY( I)| I #NE# K: Y( I, K))= 1; \par \plain\f2\fs20\cf2 ! City K must be departed;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY( J)| J #NE# K: Y( K, J))= 1; \par \plain\f2\fs20\cf2 ! Cannot go to yourself;\plain\f2\fs20\cf0 Y( K, K) = 0; \par ); \par \par \plain\f2\fs20\cf2 ! Subtour cuts;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( SUBTOUR(t): \par \plain\f2\fs20\cf2 ! FLAG(t,i) = 1 if city i is in subtour t;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY(I) | FLAG(t,i) #EQ# 1: \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY(J) | FLAG(t,j) #EQ# 1: Y(i,j))) <= TOURSIZE(t) - 1; \par ); \par \plain\f2\fs20\cf1 ENDSUBMODEL\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 CALC\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf1 @SET\plain\f2\fs20\cf0 ( 'TERSEO', 2); \par N = \plain\f2\fs20\cf1 @SIZE\plain\f2\fs20\cf0 ( CITY); \par MXCUTS = \plain\f2\fs20\cf1 @SIZE\plain\f2\fs20\cf0 (SUBTOUR); \par \plain\f2\fs20\cf2 ! Initially there are no subtour cuts;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( SXC(t,i): \par FLAG(t,i) = 0; \par ); \par \par ICUT = 1; \par \plain\f2\fs20\cf2 ! Loop over subtour cuts, ICUT;\plain\f2\fs20\cf0 \par QUIT1 = 1; \par \plain\f2\fs20\cf1 @WHILE\plain\f2\fs20\cf0 ( QUIT1 : \par \plain\f2\fs20\cf2 ! Solve current version;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SOLVE\plain\f2\fs20\cf0 ( TSP_CUT); \par \plain\f2\fs20\cf2 ! Find subtour if any;\plain\f2\fs20\cf0 \par TOURSIZE(ICUT) = 0; \par \plain\f2\fs20\cf2 ! Loop over cities KURSTOP to find subtour starting at 1;\plain\f2\fs20\cf0 \par KURSTOP = 1; \par QUIT2 = 1; \par \plain\f2\fs20\cf1 @WHILE\plain\f2\fs20\cf0 ( QUIT2: \par \plain\f2\fs20\cf2 ! Loop over possible next cities j;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 (CITY(J): \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( Y(KURSTOP, J) #GT# .5: \par NEXT1 = J; \par ););\plain\f2\fs20\cf2 ! Next j;\plain\f2\fs20\cf0 \par KURSTOP = NEXT1; \par TOURSIZE(ICUT) = TOURSIZE(ICUT) + 1; \par FLAG(ICUT,KURSTOP) = 1; \par \plain\f2\fs20\cf2 !@WRITE( ' Next stop= ', CITY(KURSTOP),' Tour size=',TOURSIZE(ICUT), @NEWLINE( 1));\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( KURSTOP #EQ# 1: \plain\f2\fs20\cf2 ! Back home/Completed the subtour?;\plain\f2\fs20\cf0 \par QUIT2 = 0; \par ); \par ); \plain\f2\fs20\cf2 ! End loop over cities in subtour;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf2 ! If subtour is in fact a full tour, or out of space, get out;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( TOURSIZE(ICUT) #EQ# N #OR# ICUT #GT# MXCUTS: \par \plain\f2\fs20\cf2 !We are done;\plain\f2\fs20\cf0 \par QUIT1 = 0; \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( LINK: Y = Y); \plain\f2\fs20\cf2 !Fix Y;\plain\f2\fs20\cf0 \par ); \par \plain\f2\fs20\cf2 ! Get ready for next cut;\plain\f2\fs20\cf0 \par ICUT = ICUT + 1; \par ); \plain\f2\fs20\cf2 !End loop over add cuts;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 ENDCALC\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 SETS\plain\f2\fs20\cf0 : \par LINKOPT( LINK) | Y( &1, &2) #GT# .5; \par \plain\f2\fs20\cf1 ENDSETS\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 CALC\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf2 ! Give simple report;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( TOURSIZE(ICUT-1) #LT# N: \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 (' Sorry, optimum not found', \plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs20\cf0 (1)); \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par KURSTOP = 1; \par CUMDIST = 0; \par K = 1; \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 ( 9*' ', 'Tour: Distance:', \plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs20\cf0 ( 1)); \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 ( ' 1: ',CITY( KURSTOP),' ', 8*' ','0',\plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs20\cf0 (1)); \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( CITY: \par \plain\f2\fs20\cf2 ! Get next city;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( LINKOPT( I, J) | I #EQ# KURSTOP: \par NEXT = J; \par CUMDIST = CUMDIST + DIST( I, NEXT); \par K = K + 1; \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 ( \plain\f2\fs20\cf1 @FORMAT\plain\f2\fs20\cf0 ( K, '5.0f'),': ',CITY( NEXT), \par ' ', \plain\f2\fs20\cf1 @FORMAT\plain\f2\fs20\cf0 ( CUMDIST, '9.0f'),\plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs2ь‹{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}{\f3\fmodern\fprq2 Courier New;}{\f4\fswiss\fprq2 System;}{\f5\fmodern Courier New;}} {\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green175\blue0;} \deflang1033\pard\plain\f2\fs20\cf1 MODEL\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf2 ! (TSPCUT) Traveling Salesman Problem. Find the shortest tour that \par visits each city exactly once. Subtour elimination method. \par ! Keywords: TSP, traveling sales person, routing, tour;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 SETS\plain\f2\fs20\cf0 : \par CITY; \par LINK( CITY, CITY): \par DIST, \plain\f2\fs20\cf2 ! The distance matrix;\plain\f2\fs20\cf0 \par Y; \plain\f2\fs20\cf2 ! Y( I, J) = 1 if link I, J is in tour;\plain\f2\fs20\cf0 \par SUBTOUR: TOURSIZE; \par SXC(SUBTOUR,CITY): FLAG; \par \plain\f2\fs20\cf1 ENDSETS\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 DATA\plain\f2\fs20\cf0 : \par SUBTOUR = 1..20; \plain\f2\fs20\cf2 ! Number subtour cuts we allow;\plain\f2\fs20\cf0 \par CITY = NYK ATL CHI CIN HOU LAX MON PHL PIT STL SND SNF; \par \plain\f2\fs20\cf2 ! Distance matrix for cities of National League of \par US baseball, circa 2004. It need not be symmetric;\plain\f2\fs20\cf0 \par DIST = \par 0 864 845 664 1706 2844 396 92 386 1002 2892 3032 \par 864 0 702 454 842 2396 1196 772 714 554 2363 2679 \par 845 702 0 324 1093 2136 764 764 459 294 2184 2187 \par 664 454 324 0 1137 2180 798 572 284 338 2228 2463 \par 1706 842 1093 1137 0 1616 1857 1614 1421 799 1521 2021 \par 2844 2396 2136 2180 1616 0 2900 2752 2464 1842 95 405 \par 396 1196 764 798 1857 2900 0 424 514 1058 2948 2951 \par 92 772 764 572 1614 2752 424 0 305 910 2800 2951 \par 386 714 459 284 1421 2464 514 305 0 622 2512 2646 \par 1002 554 294 338 799 1842 1058 910 622 0 1890 2125 \par 2892 2363 2184 2228 1521 95 2948 2800 2512 1890 0 500 \par 3032 2679 2187 2463 2021 405 2951 2951 2646 2125 500 0; \par \plain\f2\fs20\cf1 ENDDATA\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf2 !-----------------------------------------------------------;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 SUBMODEL\plain\f2\fs20\cf0 TSP_CUT: \par \plain\f2\fs20\cf2 ! Minimize total distance traveled;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 MIN\plain\f2\fs20\cf0 = \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( LINK: DIST * Y); \par \par \plain\f2\fs20\cf2 ! The Assignment constraints;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( CITY( K): \par \plain\f2\fs20\cf2 ! City K must be entered;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY( I)| I #NE# K: Y( I, K))= 1; \par \plain\f2\fs20\cf2 ! City K must be departed;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY( J)| J #NE# K: Y( K, J))= 1; \par \plain\f2\fs20\cf2 ! Cannot go to yourself;\plain\f2\fs20\cf0 Y( K, K) = 0; \par ); \par \par \plain\f2\fs20\cf2 ! Subtour cuts;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( SUBTOUR(t): \par \plain\f2\fs20\cf2 ! FLAG(t,i) = 1 if city i is in subtour t;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY(I) | FLAG(t,i) #EQ# 1: \par \plain\f2\fs20\cf1 @SUM\plain\f2\fs20\cf0 ( CITY(J) | FLAG(t,j) #EQ# 1: Y(i,j))) <= TOURSIZE(t) - 1; \par ); \par \plain\f2\fs20\cf1 ENDSUBMODEL\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 CALC\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf1 @SET\plain\f2\fs20\cf0 ( 'TERSEO', 2); \par N = \plain\f2\fs20\cf1 @SIZE\plain\f2\fs20\cf0 ( CITY); \par MXCUTS = \plain\f2\fs20\cf1 @SIZE\plain\f2\fs20\cf0 (SUBTOUR); \par \plain\f2\fs20\cf2 ! Initially there are no subtour cuts;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( SXC(t,i): \par FLAG(t,i) = 0; \par ); \par \par ICUT = 1; \par \plain\f2\fs20\cf2 ! Loop over subtour cuts, ICUT;\plain\f2\fs20\cf0 \par QUIT1 = 1; \par \plain\f2\fs20\cf1 @WHILE\plain\f2\fs20\cf0 ( QUIT1 : \par \plain\f2\fs20\cf2 ! Solve current version;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @SOLVE\plain\f2\fs20\cf0 ( TSP_CUT); \par \plain\f2\fs20\cf2 ! Find subtour if any;\plain\f2\fs20\cf0 \par TOURSIZE(ICUT) = 0; \par \plain\f2\fs20\cf2 ! Loop over cities KURSTOP to find subtour starting at 1;\plain\f2\fs20\cf0 \par KURSTOP = 1; \par QUIT2 = 1; \par \plain\f2\fs20\cf1 @WHILE\plain\f2\fs20\cf0 ( QUIT2: \par \plain\f2\fs20\cf2 ! Loop over possible next cities j;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 (CITY(J): \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( Y(KURSTOP, J) #GT# .5: \par NEXT1 = J; \par ););\plain\f2\fs20\cf2 ! Next j;\plain\f2\fs20\cf0 \par KURSTOP = NEXT1; \par TOURSIZE(ICUT) = TOURSIZE(ICUT) + 1; \par FLAG(ICUT,KURSTOP) = 1; \par \plain\f2\fs20\cf2 !@WRITE( ' Next stop= ', CITY(KURSTOP),' Tour size=',TOURSIZE(ICUT), @NEWLINE( 1));\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( KURSTOP #EQ# 1: \plain\f2\fs20\cf2 ! Back home/Completed the subtour?;\plain\f2\fs20\cf0 \par QUIT2 = 0; \par ); \par ); \plain\f2\fs20\cf2 ! End loop over cities in subtour;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf2 ! If subtour is in fact a full tour, or out of space, get out;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( TOURSIZE(ICUT) #EQ# N #OR# ICUT #GT# MXCUTS: \par \plain\f2\fs20\cf2 !We are done;\plain\f2\fs20\cf0 \par QUIT1 = 0; \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( LINK: Y = Y); \plain\f2\fs20\cf2 !Fix Y;\plain\f2\fs20\cf0 \par ); \par \plain\f2\fs20\cf2 ! Get ready for next cut;\plain\f2\fs20\cf0 \par ICUT = ICUT + 1; \par ); \plain\f2\fs20\cf2 !End loop over add cuts;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 ENDCALC\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 SETS\plain\f2\fs20\cf0 : \par LINKOPT( LINK) | Y( &1, &2) #GT# .5; \par \plain\f2\fs20\cf1 ENDSETS\plain\f2\fs20\cf0 \par \par \plain\f2\fs20\cf1 CALC\plain\f2\fs20\cf0 : \par \plain\f2\fs20\cf2 ! Give simple report;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @IFC\plain\f2\fs20\cf0 ( TOURSIZE(ICUT-1) #LT# N: \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 (' Sorry, optimum not found', \plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs20\cf0 (1)); \par \plain\f2\fs20\cf1 @ELSE\plain\f2\fs20\cf0 \par KURSTOP = 1; \par CUMDIST = 0; \par K = 1; \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 ( 9*' ', 'Tour: Distance:', \plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs20\cf0 ( 1)); \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 ( ' 1: ',CITY( KURSTOP),' ', 8*' ','0',\plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs20\cf0 (1)); \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( CITY: \par \plain\f2\fs20\cf2 ! Get next city;\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 @FOR\plain\f2\fs20\cf0 ( LINKOPT( I, J) | I #EQ# KURSTOP: \par NEXT = J; \par CUMDIST = CUMDIST + DIST( I, NEXT); \par K = K + 1; \par \plain\f2\fs20\cf1 @WRITE\plain\f2\fs20\cf0 ( \plain\f2\fs20\cf1 @FORMAT\plain\f2\fs20\cf0 ( K, '5.0f'),': ',CITY( NEXT), \par ' ', \plain\f2\fs20\cf1 @FORMAT\plain\f2\fs20\cf0 ( CUMDIST, '9.0f'),\plain\f2\fs20\cf1 @NEWLINE\plain\f2\fs20\cf0 (1)); \par ); \par KURSTOP = NEXT; \par ); \par ); \par \plain\f2\fs20\cf1 ENDCALC\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 END\plain\f2\fs20\cf0 \par \par } par \par } 0\cf0 (1)); \par ); \par KURSTOP = NEXT; \par ); \par ); \par \plain\f2\fs20\cf1 ENDCALC\plain\f2\fs20\cf0 \par \plain\f2\fs20\cf1 END\plain\f2\fs20\cf0 \par \par }