CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C This is an example call of MIDACO 6.0 C ------------------------------------- C C MIDACO solves Multi-Objective Mixed-Integer Non-Linear Problems: C C C Minimize F_1(X),... F_O(X) where X(1,...N-NI) is CONTINUOUS C and X(N-NI+1,...N) is DISCRETE C C subject to G_j(X) = 0 (j=1,...ME) equality constraints C G_j(X) >= 0 (j=ME+1,...M) inequality constraints C C and bounds XL <= X <= XU C C C The problem statement of this example is given below. You can use C this example as template to run your own problem. To do so: Replace C the objective functions 'F' (and in case the constraints 'G') given C here with your own problem and follow the below instruction steps. C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCC MAIN PROGRAM CCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PROGRAM MAIN IMPLICIT NONE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Dimensions of the optimization problem INTEGER O, N, NI, M, ME C Lower and upper bounds ('XL' & 'XU') and optimization variable 'X' DOUBLE PRECISION XL(1000), XU(1000), X(1000) C Objectives 'F(X)' and constraints 'G(X)' DOUBLE PRECISION F(10), G(1000) C MIDACO information and stop flags INTEGER IFLAG, ISTOP C MIDACO parameter DOUBLE PRECISION PARAM(13) C MIDACO integer 'IW' and real'RW' workspace and pareto front 'PF' INTEGER LIW, LRW, LPF PARAMETER (LIW = 50000, LRW = 50000, LPF = 50000) INTEGER IW(LIW) DOUBLE PRECISION RW(LRW),PF(LPF) C Parameter for stopping criteria, printing and license INTEGER MAXTIME, MAXEVAL, PRINTEVAL, SAVE2FILE, I CHARACTER*60 KEY KEY='************************************************************' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCC Step 1: Problem definition CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C Step 1.A : Problem dimensions C CCCCCCCCCCCCCCCCCCCCCCCCCCCCC O = 1 ! Number of objectives N = 26 ! Number of variables (in total) NI = 26 ! Number of integer variables (0 <= NI <= N) M = 0 ! Number of constraints (in total) ME = 0 ! Number of equality constraints (0 <= ME <= M) C C Step 1.B : Lower and upper bounds: 'XL' and 'XU' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC DO I = 1,N XL(I) = 1.0D0 XU(I) = DBLE(N) ENDDO C C Step 1.C : Starting point 'X' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCC DO I = 1,N X(I) = XL(I) + DBLE(I-1) ENDDO CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCC Step 2: Choose stopping criteria and printing options CCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C Step 2.A : Stopping criteria C CCCCCCCCCCCCCCCCCCCCCCCCCCCC MAXEVAL = 999999999 ! Maximum evaluation budget (e.g. 1000000) MAXTIME = 60*60*24 ! Maximum time limit (e.g. 60*60*24 = 1 Day) C C Step 2.B : Printing options C CCCCCCCCCCCCCCCCCCCCCCCCCCC PRINTEVAL = 10000 ! Print-Frequency for current best solution (e.g. 1000) SAVE2FILE = 1 ! Save SCREEN and SOLUTION to TXT-files [0=NO/1=YES] CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCC Step 3: Choose MIDACO parameters (FOR ADVANCED USERS) CCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC PARAM( 1) = 0.0D0 ! ACCURACY PARAM( 2) = 0.0D0 ! SEED PARAM( 3) = 937.0D0 ! FSTOP PARAM( 4) = 0.0D0 ! ALGOSTOP PARAM( 5) = 0.0D0 ! EVALSTOP PARAM( 6) = 0.0D0 ! FOCUS PARAM( 7) = 0.0D0 ! ANTS PARAM( 8) = 0.0D0 ! KERNEL PARAM( 9) = 0.0D0 ! ORACLE PARAM(10) = 0.0D0 ! PARETOMAX PARAM(11) = 0.0D0 ! EPSILON PARAM(12) = 0.0D0 ! BALANCE PARAM(13) = 3.0D0 ! CHARACTER CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C Call MIDACO by Reverse Communication C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Print MIDACO headline with basic information CALL MIDACO_PRINT(1,PRINTEVAL,SAVE2FILE,IFLAG,ISTOP,F,G,X,XL, & XU,O,N,NI,M,ME,RW,PF,MAXEVAL,MAXTIME,PARAM,1,0,KEY) DO WHILE(ISTOP.EQ.0) !~~~Start~of~reverse~communication~loop C Evaluate Objective F(X) and constraints G(X) CALL PROBLEM_FUNCTION( F, G , X) C Call MIDACO CALL MIDACO(1,O,N,NI,M,ME,X,F,G,XL,XU,IFLAG, & ISTOP,PARAM,RW,LRW,IW,LIW,PF,LPF,KEY) C Call MIDACO printing routine CALL MIDACO_PRINT(2,PRINTEVAL,SAVE2FILE,IFLAG,ISTOP,F,G,X, & XL,XU,O,N,NI,M,ME,RW,PF,MAXEVAL,MAXTIME,PARAM,1,0,KEY) ENDDO !~~~~~~~~~~~~~~~~~~~~End~of~reverse~communication~loop CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ! PRINT*," Solution F(1) = ", F(1) ! PRINT*," Solution G(1) = ", G(1) ! PRINT*," Solution X(1) = ", X(1) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCC END OF MAIN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCC OPTIMIZATION PROBLEM CCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SUBROUTINE PROBLEM_FUNCTION(F,G,X) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IMPLICIT NONE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC DOUBLE PRECISION F(*),G(*),X(*) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC INTEGER I,N,CityA,CityB,distance(100,100) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC Distance(1,1)=0 Distance(2,1)=83 Distance(3,1)=93 Distance(4,1)=129 Distance(5,1)=133 Distance(6,1)=139 Distance(7,1)=151 Distance(8,1)=169 Distance(9,1)=135 Distance(10,1)=114 Distance(11,1)=110 Distance(12,1)=98 Distance(13,1)=99 Distance(14,1)=95 Distance(15,1)=81 Distance(16,1)=152 Distance(17,1)=159 Distance(18,1)=181 Distance(19,1)=172 Distance(20,1)=185 Distance(21,1)=147 Distance(22,1)=157 Distance(23,1)=185 Distance(24,1)=220 Distance(25,1)=127 Distance(26,1)=181 Distance(1,2)=83 Distance(2,2)=0 Distance(3,2)=40 Distance(4,2)=53 Distance(5,2)=62 Distance(6,2)=64 Distance(7,2)=91 Distance(8,2)=116 Distance(9,2)=93 Distance(10,2)=84 Distance(11,2)=95 Distance(12,2)=98 Distance(13,2)=89 Distance(14,2)=68 Distance(15,2)=67 Distance(16,2)=127 Distance(17,2)=156 Distance(18,2)=175 Distance(19,2)=152 Distance(20,2)=165 Distance(21,2)=160 Distance(22,2)=180 Distance(23,2)=223 Distance(24,2)=268 Distance(25,2)=179 Distance(26,2)=197 Distance(1,3)=93 Distance(2,3)=40 Distance(3,3)=0 Distance(4,3)=42 Distance(5,3)=42 Distance(6,3)=49 Distance(7,3)=59 Distance(8,3)=81 Distance(9,3)=54 Distance(10,3)=44 Distance(11,3)=58 Distance(12,3)=64 Distance(13,3)=54 Distance(14,3)=31 Distance(15,3)=36 Distance(16,3)=86 Distance(17,3)=117 Distance(18,3)=135 Distance(19,3)=112 Distance(20,3)=125 Distance(21,3)=124 Distance(22,3)=147 Distance(23,3)=193 Distance(24,3)=241 Distance(25,3)=157 Distance(26,3)=161 Distance(1,4)=129 Distance(2,4)=53 Distance(3,4)=42 Distance(4,4)=0 Distance(5,4)=11 Distance(6,4)=11 Distance(7,4)=46 Distance(8,4)=72 Distance(9,4)=65 Distance(10,4)=70 Distance(11,4)=88 Distance(12,4)=100 Distance(13,4)=89 Distance(14,4)=66 Distance(15,4)=76 Distance(16,4)=102 Distance(17,4)=142 Distance(18,4)=156 Distance(19,4)=127 Distance(20,4)=139 Distance(21,4)=155 Distance(22,4)=180 Distance(23,4)=228 Distance(24,4)=278 Distance(25,4)=197 Distance(26,4)=190 Distance(1,5)=133 Distance(2,5)=62 Distance(3,5)=42 Distance(4,5)=11 Distance(5,5)=0 Distance(6,5)=9 Distance(7,5)=35 Distance(8,5)=61 Distance(9,5)=55 Distance(10,5)=62 Distance(11,5)=82 Distance(12,5)=95 Distance(13,5)=84 Distance(14,5)=62 Distance(15,5)=74 Distance(16,5)=93 Distance(17,5)=133 Distance(18,5)=146 Distance(19,5)=117 Distance(20,5)=128 Distance(21,5)=148 Distance(22,5)=173 Distance(23,5)=222 Distance(24,5)=272 Distance(25,5)=194 Distance(26,5)=182 Distance(1,6)=139 Distance(2,6)=64 Distance(3,6)=49 Distance(4,6)=11 Distance(5,6)=9 Distance(6,6)=0 Distance(7,6)=39 Distance(8,6)=65 Distance(9,6)=63 Distance(10,6)=71 Distance(11,6)=90 Distance(12,6)=103 Distance(13,6)=92 Distance(14,6)=71 Distance(15,6)=82 Distance(16,6)=100 Distance(17,6)=141 Distance(18,6)=153 Distance(19,6)=124 Distance(20,6)=135 Distance(21,6)=156 Distance(22,6)=181 Distance(23,6)=230 Distance(24,6)=280 Distance(25,6)=202 Distance(26,6)=190 Distance(1,7)=151 Distance(2,7)=91 Distance(3,7)=59 Distance(4,7)=46 Distance(5,7)=35 Distance(6,7)=39 Distance(7,7)=0 Distance(8,7)=26 Distance(9,7)=34 Distance(10,7)=52 Distance(11,7)=71 Distance(12,7)=88 Distance(13,7)=77 Distance(14,7)=63 Distance(15,7)=78 Distance(16,7)=66 Distance(17,7)=110 Distance(18,7)=119 Distance(19,7)=88 Distance(20,7)=98 Distance(21,7)=130 Distance(22,7)=156 Distance(23,7)=206 Distance(24,7)=257 Distance(25,7)=188 Distance(26,7)=160 Distance(1,8)=169 Distance(2,8)=116 Distance(3,8)=81 Distance(4,8)=72 Distance(5,8)=61 Distance(6,8)=65 Distance(7,8)=26 Distance(8,8)=0 Distance(9,8)=37 Distance(10,8)=59 Distance(11,8)=75 Distance(12,8)=92 Distance(13,8)=83 Distance(14,8)=76 Distance(15,8)=91 Distance(16,8)=54 Distance(17,8)=98 Distance(18,8)=103 Distance(19,8)=70 Distance(20,8)=78 Distance(21,8)=122 Distance(22,8)=148 Distance(23,8)=198 Distance(24,8)=250 Distance(25,8)=188 Distance(26,8)=148 Distance(1,9)=135 Distance(2,9)=93 Distance(3,9)=54 Distance(4,9)=65 Distance(5,9)=55 Distance(6,9)=63 Distance(7,9)=34 Distance(8,9)=37 Distance(9,9)=0 Distance(10,9)=22 Distance(11,9)=39 Distance(12,9)=56 Distance(13,9)=47 Distance(14,9)=40 Distance(15,9)=55 Distance(16,9)=37 Distance(17,9)=78 Distance(18,9)=91 Distance(19,9)=62 Distance(20,9)=74 Distance(21,9)=96 Distance(22,9)=122 Distance(23,9)=172 Distance(24,9)=223 Distance(25,9)=155 Distance(26,9)=128 Distance(1,10)=114 Distance(2,10)=84 Distance(3,10)=44 Distance(4,10)=70 Distance(5,10)=62 Distance(6,10)=71 Distance(7,10)=52 Distance(8,10)=59 Distance(9,10)=22 Distance(10,10)=0 Distance(11,10)=20 Distance(12,10)=36 Distance(13,10)=26 Distance(14,10)=20 Distance(15,10)=34 Distance(16,10)=43 Distance(17,10)=74 Distance(18,10)=91 Distance(19,10)=68 Distance(20,10)=82 Distance(21,10)=86 Distance(22,10)=111 Distance(23,10)=160 Distance(24,10)=210 Distance(25,10)=136 Distance(26,10)=121 Distance(1,11)=110 Distance(2,11)=95 Distance(3,11)=58 Distance(4,11)=88 Distance(5,11)=82 Distance(6,11)=90 Distance(7,11)=71 Distance(8,11)=75 Distance(9,11)=39 Distance(10,11)=20 Distance(11,11)=0 Distance(12,11)=18 Distance(13,11)=11 Distance(14,11)=27 Distance(15,11)=32 Distance(16,11)=42 Distance(17,11)=61 Distance(18,11)=80 Distance(19,11)=64 Distance(20,11)=77 Distance(21,11)=68 Distance(22,11)=92 Distance(23,11)=140 Distance(24,11)=190 Distance(25,11)=116 Distance(26,11)=103 Distance(1,12)=98 Distance(2,12)=98 Distance(3,12)=64 Distance(4,12)=100 Distance(5,12)=95 Distance(6,12)=103 Distance(7,12)=88 Distance(8,12)=92 Distance(9,12)=56 Distance(10,12)=36 Distance(11,12)=18 Distance(12,12)=0 Distance(13,12)=11 Distance(14,12)=34 Distance(15,12)=31 Distance(16,12)=56 Distance(17,12)=63 Distance(18,12)=85 Distance(19,12)=75 Distance(20,12)=87 Distance(21,12)=62 Distance(22,12)=83 Distance(23,12)=129 Distance(24,12)=178 Distance(25,12)=100 Distance(26,12)=99 Distance(1,13)=99 Distance(2,13)=89 Distance(3,13)=54 Distance(4,13)=89 Distance(5,13)=84 Distance(6,13)=92 Distance(7,13)=77 Distance(8,13)=83 Distance(9,13)=47 Distance(10,13)=26 Distance(11,13)=11 Distance(12,13)=11 Distance(13,13)=0 Distance(14,13)=23 Distance(15,13)=24 Distance(16,13)=53 Distance(17,13)=68 Distance(18,13)=89 Distance(19,13)=74 Distance(20,13)=87 Distance(21,13)=71 Distance(22,13)=93 Distance(23,13)=140 Distance(24,13)=189 Distance(25,13)=111 Distance(26,13)=107 Distance(1,14)=95 Distance(2,14)=68 Distance(3,14)=31 Distance(4,14)=66 Distance(5,14)=62 Distance(6,14)=71 Distance(7,14)=63 Distance(8,14)=76 Distance(9,14)=40 Distance(10,14)=20 Distance(11,14)=27 Distance(12,14)=34 Distance(13,14)=23 Distance(14,14)=0 Distance(15,14)=15 Distance(16,14)=62 Distance(17,14)=87 Distance(18,14)=106 Distance(19,14)=87 Distance(20,14)=100 Distance(21,14)=93 Distance(22,14)=116 Distance(23,14)=163 Distance(24,14)=212 Distance(25,14)=132 Distance(26,14)=130 Distance(1,15)=81 Distance(2,15)=67 Distance(3,15)=36 Distance(4,15)=76 Distance(5,15)=74 Distance(6,15)=82 Distance(7,15)=78 Distance(8,15)=91 Distance(9,15)=55 Distance(10,15)=34 Distance(11,15)=32 Distance(12,15)=31 Distance(13,15)=24 Distance(14,15)=15 Distance(15,15)=0 Distance(16,15)=73 Distance(17,15)=92 Distance(18,15)=112 Distance(19,15)=96 Distance(20,15)=109 Distance(21,15)=93 Distance(22,15)=113 Distance(23,15)=158 Distance(24,15)=205 Distance(25,15)=122 Distance(26,15)=130 Distance(1,16)=152 Distance(2,16)=127 Distance(3,16)=86 Distance(4,16)=102 Distance(5,16)=93 Distance(6,16)=100 Distance(7,16)=66 Distance(8,16)=54 Distance(9,16)=37 Distance(10,16)=43 Distance(11,16)=42 Distance(12,16)=56 Distance(13,16)=53 Distance(14,16)=62 Distance(15,16)=73 Distance(16,16)=0 Distance(17,16)=44 Distance(18,16)=54 Distance(19,16)=26 Distance(20,16)=39 Distance(21,16)=68 Distance(22,16)=94 Distance(23,16)=144 Distance(24,16)=196 Distance(25,16)=139 Distance(26,16)=95 Distance(1,17)=159 Distance(2,17)=156 Distance(3,17)=117 Distance(4,17)=142 Distance(5,17)=133 Distance(6,17)=141 Distance(7,17)=110 Distance(8,17)=98 Distance(9,17)=78 Distance(10,17)=74 Distance(11,17)=61 Distance(12,17)=63 Distance(13,17)=68 Distance(14,17)=87 Distance(15,17)=92 Distance(16,17)=44 Distance(17,17)=0 Distance(18,17)=22 Distance(19,17)=34 Distance(20,17)=38 Distance(21,17)=30 Distance(22,17)=53 Distance(23,17)=102 Distance(24,17)=154 Distance(25,17)=109 Distance(26,17)=51 Distance(1,18)=181 Distance(2,18)=175 Distance(3,18)=135 Distance(4,18)=156 Distance(5,18)=146 Distance(6,18)=153 Distance(7,18)=119 Distance(8,18)=103 Distance(9,18)=91 Distance(10,18)=91 Distance(11,18)=80 Distance(12,18)=85 Distance(13,18)=89 Distance(14,18)=106 Distance(15,18)=112 Distance(16,18)=54 Distance(17,18)=22 Distance(18,18)=0 Distance(19,18)=33 Distance(20,18)=29 Distance(21,18)=46 Distance(22,18)=64 Distance(23,18)=107 Distance(24,18)=157 Distance(25,18)=125 Distance(26,18)=51 Distance(1,19)=172 Distance(2,19)=152 Distance(3,19)=112 Distance(4,19)=127 Distance(5,19)=117 Distance(6,19)=124 Distance(7,19)=88 Distance(8,19)=70 Distance(9,19)=62 Distance(10,19)=68 Distance(11,19)=64 Distance(12,19)=75 Distance(13,19)=74 Distance(14,19)=87 Distance(15,19)=96 Distance(16,19)=26 Distance(17,19)=34 Distance(18,19)=33 Distance(19,19)=0 Distance(20,19)=13 Distance(21,19)=63 Distance(22,19)=87 Distance(23,19)=135 Distance(24,19)=186 Distance(25,19)=141 Distance(26,19)=81 Distance(1,20)=185 Distance(2,20)=165 Distance(3,20)=125 Distance(4,20)=139 Distance(5,20)=128 Distance(6,20)=135 Distance(7,20)=98 Distance(8,20)=78 Distance(9,20)=74 Distance(10,20)=82 Distance(11,20)=77 Distance(12,20)=87 Distance(13,20)=87 Distance(14,20)=100 Distance(15,20)=109 Distance(16,20)=39 Distance(17,20)=38 Distance(18,20)=29 Distance(19,20)=13 Distance(20,20)=0 Distance(21,20)=68 Distance(22,20)=90 Distance(23,20)=136 Distance(24,20)=186 Distance(25,20)=148 Distance(26,20)=79 Distance(1,21)=147 Distance(2,21)=160 Distance(3,21)=124 Distance(4,21)=155 Distance(5,21)=148 Distance(6,21)=156 Distance(7,21)=130 Distance(8,21)=122 Distance(9,21)=96 Distance(10,21)=86 Distance(11,21)=68 Distance(12,21)=62 Distance(13,21)=71 Distance(14,21)=93 Distance(15,21)=93 Distance(16,21)=68 Distance(17,21)=30 Distance(18,21)=46 Distance(19,21)=63 Distance(20,21)=68 Distance(21,21)=0 Distance(22,21)=26 Distance(23,21)=77 Distance(24,21)=128 Distance(25,21)=80 Distance(26,21)=37 Distance(1,22)=157 Distance(2,22)=180 Distance(3,22)=147 Distance(4,22)=180 Distance(5,22)=173 Distance(6,22)=181 Distance(7,22)=156 Distance(8,22)=148 Distance(9,22)=122 Distance(10,22)=111 Distance(11,22)=92 Distance(12,22)=83 Distance(13,22)=93 Distance(14,22)=116 Distance(15,22)=113 Distance(16,22)=94 Distance(17,22)=53 Distance(18,22)=64 Distance(19,22)=87 Distance(20,22)=90 Distance(21,22)=26 Distance(22,22)=0 Distance(23,22)=50 Distance(24,22)=102 Distance(25,22)=65 Distance(26,22)=27 Distance(1,23)=185 Distance(2,23)=223 Distance(3,23)=193 Distance(4,23)=228 Distance(5,23)=222 Distance(6,23)=230 Distance(7,23)=206 Distance(8,23)=198 Distance(9,23)=172 Distance(10,23)=160 Distance(11,23)=140 Distance(12,23)=129 Distance(13,23)=140 Distance(14,23)=163 Distance(15,23)=158 Distance(16,23)=144 Distance(17,23)=102 Distance(18,23)=107 Distance(19,23)=135 Distance(20,23)=136 Distance(21,23)=77 Distance(22,23)=50 Distance(23,23)=0 Distance(24,23)=51 Distance(25,23)=64 Distance(26,23)=58 Distance(1,24)=220 Distance(2,24)=268 Distance(3,24)=241 Distance(4,24)=278 Distance(5,24)=272 Distance(6,24)=280 Distance(7,24)=257 Distance(8,24)=250 Distance(9,24)=223 Distance(10,24)=210 Distance(11,24)=190 Distance(12,24)=178 Distance(13,24)=189 Distance(14,24)=212 Distance(15,24)=205 Distance(16,24)=196 Distance(17,24)=154 Distance(18,24)=157 Distance(19,24)=186 Distance(20,24)=186 Distance(21,24)=128 Distance(22,24)=102 Distance(23,24)=51 Distance(24,24)=0 Distance(25,24)=93 Distance(26,24)=107 Distance(1,25)=127 Distance(2,25)=179 Distance(3,25)=157 Distance(4,25)=197 Distance(5,25)=194 Distance(6,25)=202 Distance(7,25)=188 Distance(8,25)=188 Distance(9,25)=155 Distance(10,25)=136 Distance(11,25)=116 Distance(12,25)=100 Distance(13,25)=111 Distance(14,25)=132 Distance(15,25)=122 Distance(16,25)=139 Distance(17,25)=109 Distance(18,25)=125 Distance(19,25)=141 Distance(20,25)=148 Distance(21,25)=80 Distance(22,25)=65 Distance(23,25)=64 Distance(24,25)=93 Distance(25,25)=0 Distance(26,25)=90 Distance(1,26)=181 Distance(2,26)=197 Distance(3,26)=161 Distance(4,26)=190 Distance(5,26)=182 Distance(6,26)=190 Distance(7,26)=160 Distance(8,26)=148 Distance(9,26)=128 Distance(10,26)=121 Distance(11,26)=103 Distance(12,26)=99 Distance(13,26)=107 Distance(14,26)=130 Distance(15,26)=130 Distance(16,26)=95 Distance(17,26)=51 Distance(18,26)=51 Distance(19,26)=81 Distance(20,26)=79 Distance(21,26)=37 Distance(22,26)=27 Distance(23,26)=58 Distance(24,26)=107 Distance(25,26)=90 Distance(26,26)=0 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC N = 26 C Objective: Total distance between all visited cities F(1) = 0.0 DO I = 1,N-1 CityA = INT(X(I)) CityB = INT(X(I+1)) F(1) = F(1) + DISTANCE( CityA, CityB ) ENDDO C Close circle by connecting last with first city CityA = INT(X(N)) CityB = INT(X(1)) F(1) = F(1) + DISTANCE( CityA, CityB ) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C ALLDifferent constraint already fullfilled C by using MIDACO - ALL-DIFFERENT character C Constraint: Visit every city only once ccc DO I = 1,N ccc G(I) = 0.0 ccc DO J = 1,N ccc IF( I.NE.J .AND. DABS(X(I)-X(J)).LT.0.9 )THEN ccc G(I) = G(I) - 1.0 ccc ENDIF ccc ENDDO ccc ENDDO END CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCC END OF FILE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC