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 = 96 ! Number of variables (in total) NI = 30 ! Number of integer variables (0 <= NI <= N) M = 157 ! 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-NI XL(I) = -1.0d0 XU(I) = 20.0d0 ENDDO DO I = 3,26 XL(I) = 1.0d4 XU(I) = 1.0d5 ENDDO xl(19) = 0.0d0 xu(19) = 2.0d0 xl(20) = 0.0d0 xu(20) = 2.0d0 xl(31) = 2.8d0 xu(31) = 7.4833d0 xl(32) = 2.0d0 xu(32) = 6.3246d0 xl(33) = 1.8d0 xu(33) = 6.d0 xl(34) = 1.2247d0 xu(34) = 4.899d0 xl(35) = 2.0d0 xu(35) = 6.3246d0 xl(36) = 5.0d0 xu(36) = 10.0d0 xl(37) = 15.0d0 xu(37) = 15.0d0 xl(38) = 1.8708d0 xu(38) = 5.0d0 xl(39) = 1.58110d0 xu(39) = 5.0d0 xl(40) = 1.5d0 xu(40) = 5.0d0 xl(41) = 1.2247d0 xu(41) = 4.899d0 xl(42) = 1.5811d0 xu(42) = 5.0d0 xl(43) = 2.5d0 xu(43) = 5.0d0 xl(44) = 5.0d0 xu(44) = 5.0d0 DO I = N-NI+1,N XL(I) = 0.0D0 XU(I) = 1.0D0 ENDDO C C Step 1.C : Starting point 'X' C CCCCCCCCCCCCCCCCCCCCCCCCCCCCC DO I = 1,N X(I) = XL(I) ! Here for example: starting point = lower bounds 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 = 100000 ! 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.1D0 ! ACCURACY PARAM( 2) = 3.0D0 ! SEED PARAM( 3) = 82.26D0 ! 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) = 0.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 double precision y(200), sqr, / b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, / b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, / b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, / x32, x33, x34, x35, x36, x37, x38, x39, x40, / x41, x42, x43, x44, x45, x46, x47, x48, x49, x50, / x51, x52, x53, x54, x55, x56, x57, x58, x59, x60, / x61, x62, x63, x64, x65, x66, x67, x68, x69, x70, / x71, x72, x73, x74, x75, x76, x77, x78, x79, x80, / x81, x82, x83, x84, x85, x86, x87 double precision / e2, e3, e4, e5, e6, e7, e8, e9, e10, / e11, e12, e13, e14, e15, e16, e17, e18, e19, e20, / e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, / e31, e32, e33, e34, e35, e36, e37, e38, e39, e40, / e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, / e51, e52, e53, e54, e55, e56, e57, e58, e59, e60, / e61, e62, e63, e64, e65, e66, e67, e68, e69, e70, / e71, e72, e73, e74, e75, e76, e77, e78, e79, e80, / e81, e82, e83, e84, e85, e86, e87, e88, e89, e90, / e91, e92, e93, e94, e95, e96, e97, e98, e99,e100, / e101,e102,e103,e104,e105,e106,e107,e108,e109,e110, / e111,e112,e113,e114,e115,e116,e117,e118,e119,e120, / e121,e122,e123,e124,e125,e126,e127,e128,e129,e130, / e131,e132,e133,e134,e135,e136,e137,e138,e139,e140, / e141,e142,e143,e144,e145,e146,e147,e148,e149,e150, / e151,e152,e153,e154,e155,e156,e157,e158 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC INTEGER I,ncont,nint,nbin CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC ncont = 56 nint = 0 nbin = 30 do i=1,nbin y(i) = x(ncont+i) end do x32 = x(1) x33 = x(2) x34 = x(3) x35 = x(4) x36 = x(5) x37 = x(6) x38 = x(7) x39 = x(8) x40 = x(9) x41 = x(10) x42 = x(11) x43 = x(12) x44 = x(13) x45 = x(14) x46 = x(15) x47 = x(16) x48 = x(17) x49 = x(18) x50 = x(19) x51 = x(20) x52 = x(21) x53 = x(22) x54 = x(23) x55 = x(24) x56 = x(25) x57 = x(26) x58 = x(27) x59 = x(28) x60 = x(29) x61 = x(30) x62 = x(31) x63 = x(32) x64 = x(33) x65 = x(34) x66 = x(35) x67 = x(36) x68 = x(37) x69 = x(38) x70 = x(39) x71 = x(40) x72 = x(41) x73 = x(42) x74 = x(43) x75 = x(44) x76 = x(45) x77 = x(46) x78 = x(47) x79 = x(48) x80 = x(49) x81 = x(50) x82 = x(51) x83 = x(52) x84 = x(53) x85 = x(54) x86 = x(55) x87 = x(56) b1 = y(1) b2 = y(2) b3 = y(3) b4 = y(4) b5 = y(5) b6 = y(6) b7 = y(7) b8 = y(8) b9 = y(9) b10 = y(10) b11 = y(11) b12 = y(12) b13 = y(13) b14 = y(14) b15 = y(15) b16 = y(16) b17 = y(17) b18 = y(18) b19 = y(19) b20 = y(20) b21 = y(21) b22 = y(22) b23 = y(23) b24 = y(24) b25 = y(25) b26 = y(26) b27 = y(27) b28 = y(28) b29 = y(29) b30 = y(30) f(1) = -(-2.4d0*x32 - 2.4d0*x33 - 12.0d0*x50 - 12.0d0*x51 / - 12.0d0*x58 - 12.0d0*x59 - 6.0d0*x60 - 6.0d0*x61) e2 = x76 - x77 e3 = 0.5d0*x62 - x68 + x76 e4 = 0.5d0*x62 - x76 e5 = 0.5d0*x69 - x75 + x82 e6 = 0.5d0*x69 - x82 e7 = 0.5d0*x63 - x68 + x77 e8 = 0.5d0*x63 - x77 e9 = 0.5d0*x70 - x75 + x83 e10 = 0.5d0*x70 - x83 e11 = 0.5d0*x64 - x68 + x78 e12 = 0.5d0*x64 - x78 e13 = 0.5d0*x71 - x75 + x84 e14 = 0.5d0*x71 - x84 e15 = 0.5d0*x65 - x68 + x79 e16 = 0.5d0*x65 - x79 e17 = 0.5d0*x72 - x75 + x85 e18 = 0.5d0*x72 - x85 e19 = 0.5d0*x66 - x68 + x80 e20 = 0.5d0*x66 - x80 e21 = 0.5d0*x73 - x75 + x86 e22 = 0.5d0*x73 - x86 e23 = 0.5d0*x67 - x68 + x81 e24 = 0.5d0*x67 - x81 e25 = 0.5d0*x74 - x75 + x87 e26 = 0.5d0*x74 - x87 e27 = -x32 + x76 - x77 e28 = -x32 - x76 + x77 e29 = -x33 + x82 - x83 e30 = -x33 - x82 + x83 e31 = -15.0d0*b1 - 15.0d0*b2 + 0.5d0*x62 + 0.5d0*x63 - x76 + x77 e32 = -15.0d0*b1 + 15.0d0*b2 + 0.5d0*x62 + 0.5d0*x63 + x76 - x77 / - 15.0d0 e33 = 5.0d0*b1 - 5.0d0*b2 + 0.5d0*x69 + 0.5d0*x70 - x82 + x83 / - 5.0d0 e34 = 5.0d0*b1 + 5.0d0*b2 + 0.5d0*x69 + 0.5d0*x70 + x82 - x83 / - 10.0d0 e35 = -x34 + x76 - x78 e36 = -x34 - x76 + x78 e37 = -x35 + x82 - x84 e38 = -x35 - x82 + x84 e39 = -15.0d0*b3 - 15.0d0*b4 + 0.5d0*x62 + 0.5d0*x64 - x76 + x78 e40 = -15.0d0*b3 + 15.0d0*b4 + 0.5d0*x62 + 0.5d0*x64 + x76 - x78 / - 15.0d0 e41 = 5.0d0*b3 - 5.0d0*b4 + 0.5d0*x69 + 0.5d0*x71 - x82 + x84 / - 5.0d0 e42 = 5.0d0*b3 + 5.0d0*b4 + 0.5d0*x69 + 0.5d0*x71 + x82 - x84 / - 10.0d0 e43 = -x36 + x76 - x79 e44 = -x36 - x76 + x79 e45 = -x37 + x82 - x85 e46 = -x37 - x82 + x85 e47 = -15.0d0*b5 - 15.0d0*b6 + 0.5d0*x62 + 0.5d0*x65 - x76 + x79 e48 = -15.0d0*b5 + 15.0d0*b6 + 0.5d0*x62 + 0.5d0*x65 + x76 - x79 / - 15.0d0 e49 = 5.0d0*b5 - 5.0d0*b6 + 0.5d0*x69 + 0.5d0*x72 - x82 + x85 / - 5.0d0 e50 = 5.0d0*b5 + 5.0d0*b6 + 0.5d0*x69 + 0.5d0*x72 + x82 - x85 / - 10.0d0 e51 = -x38 + x76 - x80 e52 = -x38 - x76 + x80 e53 = -x39 + x82 - x86 e54 = -x39 - x82 + x86 e55 = -15.0d0*b7 - 15.0d0*b8 + 0.5d0*x62 + 0.5d0*x66 - x76 + x80 e56 = -15.0d0*b7 + 15.0d0*b8 + 0.5d0*x62 + 0.5d0*x66 + x76 - x80 / - 15.0d0 e57 = 5.0d0*b7 - 5.0d0*b8 + 0.5d0*x69 + 0.5d0*x73 - x82 + x86 / - 5.0d0 e58 = 5.0d0*b7 + 5.0d0*b8 + 0.5d0*x69 + 0.5d0*x73 + x82 - x86 / - 10.0d0 e59 = -x40 + x76 - x81 e60 = -x40 - x76 + x81 e61 = -x41 + x82 - x87 e62 = -x41 - x82 + x87 e63 = -15.0d0*b9 - 15.0d0*b10 + 0.5d0*x62 + 0.5d0*x67 - x76 + x81 e64 = -15.0d0*b9 + 15.0d0*b10 + 0.5d0*x62 + 0.5d0*x67 + x76 - x81 / - 15.0d0 e65 = 5.0d0*b9 - 5.0d0*b10 + 0.5d0*x69 + 0.5d0*x74 - x82 + x87 / - 5.0d0 e66 = 5.0d0*b9 + 5.0d0*b10 + 0.5d0*x69 + 0.5d0*x74 + x82 - x87 / - 10.0d0 e67 = -x42 + x77 - x78 e68 = -x42 - x77 + x78 e69 = -x43 + x83 - x84 e70 = -x43 - x83 + x84 e71 = -15.0d0*b11 - 15.0d0*b12 + 0.5d0*x63 + 0.5d0*x64 - x77 + x78 e72 = -15.0d0*b11 + 15.0d0*b12 + 0.5d0*x63 + 0.5d0*x64 + x77 - x78 / - 15.0d0 e73 = 5.0d0*b11 - 5.0d0*b12 + 0.5d0*x70 + 0.5d0*x71 - x83 + x84 / - 5.0d0 e74 = 5.0d0*b11 + 5.0d0*b12 + 0.5d0*x70 + 0.5d0*x71 + x83 - x84 / - 10.0d0 e75 = -x44 + x77 - x79 e76 = -x44 - x77 + x79 e77 = -x45 + x83 - x85 e78 = -x45 - x83 + x85 e79 = -15.0d0*b13 - 15.0d0*b14 + 0.5d0*x63 + 0.5d0*x65 - x77 + x79 e80 = -15.0d0*b13 + 15.0d0*b14 + 0.5d0*x63 + 0.5d0*x65 + x77 - x79 / - 15.0d0 e81 = 5.0d0*b13 - 5.0d0*b14 + 0.5d0*x70 + 0.5d0*x72 - x83 + x85 / - 5.0d0 e82 = 5.0d0*b13 + 5.0d0*b14 + 0.5d0*x70 + 0.5d0*x72 + x83 - x85 / - 10.0d0 e83 = -x46 + x77 - x80 e84 = -x46 - x77 + x80 e85 = -x47 + x83 - x86 e86 = -x47 - x83 + x86 e87 = -15.0d0*b15 - 15.0d0*b16 + 0.5d0*x63 + 0.5d0*x66 - x77 + x80 e88 = -15.0d0*b15 + 15.0d0*b16 + 0.5d0*x63 + 0.5d0*x66 + x77 - x80 / - 15.0d0 e89 = 5.0d0*b15 - 5.0d0*b16 + 0.5d0*x70 + 0.5d0*x73 - x83 + x86 / - 5.0d0 e90 = 5.0d0*b15 + 5.0d0*b16 + 0.5d0*x70 + 0.5d0*x73 + x83 - x86 / - 10.0d0 e91 = -x48 + x77 - x81 e92 = -x48 - x77 + x81 e93 = -x49 + x83 - x87 e94 = -x49 - x83 + x87 e95 = -15.0d0*b17 - 15.0d0*b18 + 0.5d0*x63 + 0.5d0*x67 - x77 + x81 e96 = -15.0d0*b17 + 15.0d0*b18 + 0.5d0*x63 + 0.5d0*x67 + x77 - x81 / - 15.0d0 e97 = 5.0d0*b17 - 5.0d0*b18 + 0.5d0*x70 + 0.5d0*x74 - x83 + x87 / - 5.0d0 e98 = 5.0d0*b17 + 5.0d0*b18 + 0.5d0*x70 + 0.5d0*x74 + x83 - x87 / - 10.0d0 e99 = -x50 + x78 - x79 e100 = -x50 - x78 + x79 e101 = -x51 + x84 - x85 e102 = -x51 - x84 + x85 e103 = -15.0d0*b19 - 15.0d0*b20 + 0.5d0*x64 + 0.5d0*x65 - x78 / + x79 e104 = -15.0d0*b19 + 15.0d0*b20 + 0.5d0*x64 + 0.5d0*x65 + x78 / - x79 - 15.0d0 e105 = 5.0d0*b19 - 5.0d0*b20 + 0.5d0*x71 + 0.5d0*x72 - x84 + x85 / - 5.0d0 e106 = 5.0d0*b19 + 5.0d0*b20 + 0.5d0*x71 + 0.5d0*x72 + x84 - x85 / - 10.0d0 e107 = -x52 + x78 - x80 e108 = -x52 - x78 + x80 e109 = -x53 + x84 - x86 e110 = -x53 - x84 + x86 e111 = -15.0d0*b21 - 15.0d0*b22 + 0.5d0*x64 + 0.5d0*x66 - x78 / + x80 e112 = -15.0d0*b21 + 15.0d0*b22 + 0.5d0*x64 + 0.5d0*x66 + x78 / - x80 - 15.0d0 e113 = 5.0d0*b21 - 5.0d0*b22 + 0.5d0*x71 + 0.5d0*x73 - x84 + x86 / - 5.0d0 e114 = 5.0d0*b21 + 5.0d0*b22 + 0.5d0*x71 + 0.5d0*x73 + x84 - x86 / - 10.0d0 e115 = -x54 + x78 - x81 e116 = -x54 - x78 + x81 e117 = -x55 + x84 - x87 e118 = -x55 - x84 + x87 e119 = -15.0d0*b23 - 15.0d0*b24 + 0.5d0*x64 + 0.5d0*x67 - x78 / + x81 e120 = -15.0d0*b23 + 15.0d0*b24 + 0.5d0*x64 + 0.5d0*x67 + x78 / - x81 - 15.0d0 e121 = 5.0d0*b23 - 5.0d0*b24 + 0.5d0*x71 + 0.5d0*x74 - x84 + x87 / - 5.0d0 e122 = 5.0d0*b23 + 5.0d0*b24 + 0.5d0*x71 + 0.5d0*x74 + x84 - x87 / - 10.0d0 e123 = -x56 + x79 - x80 e124 = -x56 - x79 + x80 e125 = -x57 + x85 - x86 e126 = -x57 - x85 + x86 e127 = -15.0d0*b25 - 15.0d0*b26 + 0.5d0*x65 + 0.5d0*x66 - x79 / + x80 e128 = -15.0d0*b25 + 15.0d0*b26 + 0.5d0*x65 + 0.5d0*x66 + x79 / - x80 - 15.0d0 e129 = 5.0d0*b25 - 5.0d0*b26 + 0.5d0*x72 + 0.5d0*x73 - x85 + x86 / - 5.0d0 e130 = 5.0d0*b25 + 5.0d0*b26 + 0.5d0*x72 + 0.5d0*x73 + x85 - x86 / - 10.0d0 e131 = -x58 + x79 - x81 e132 = -x58 - x79 + x81 e133 = -x59 + x85 - x87 e134 = -x59 - x85 + x87 e135 = -15.0d0*b27 - 15.0d0*b28 + 0.5d0*x65 + 0.5d0*x67 - x79 / + x81 e136 = -15.0d0*b27 + 15.0d0*b28 + 0.5d0*x65 + 0.5d0*x67 + x79 / - x81 - 15.0d0 e137 = 5.0d0*b27 - 5.0d0*b28 + 0.5d0*x72 + 0.5d0*x74 - x85 + x87 / - 5.0d0 e138 = 5.0d0*b27 + 5.0d0*b28 + 0.5d0*x72 + 0.5d0*x74 + x85 - x87 / - 10.0d0 e139 = -x60 + x80 - x81 e140 = -x60 - x80 + x81 e141 = -x61 + x86 - x87 e142 = -x61 - x86 + x87 e143 = -15.0d0*b29 - 15.0d0*b30 + 0.5d0*x66 + 0.5d0*x67 - x80 / + x81 e144 = -15.0d0*b29 + 15.0d0*b30 + 0.5d0*x66 + 0.5d0*x67 + x80 / - x81 - 15.0d0 e145 = 5.0d0*b29 - 5.0d0*b30 + 0.5d0*x73 + 0.5d0*x74 - x86 + x87 / - 5.0d0 e146 = 5.0d0*b29 + 5.0d0*b30 + 0.5d0*x73 + 0.5d0*x74 + x86 - x87 / - 10.0d0 e147 = 14.0d0/x62 - x69 e148 = 14.0d0/x69 - x62 e149 = 10.0d0/x63 - x70 e150 = 10.0d0/x70 - x63 e151 = 9.0d0/x64 - x71 e152 = 9.0d0/x71 - x64 e153 = 6.0d0/x65 - x72 e154 = 6.0d0/x72 - x65 e155 = 10.0d0/x66 - x73 e156 = 10.0d0/x73 - x66 e157 = 25.0d0/x67 - x74 e158 = 25.0d0/x74 - x67 g( 1) = -e2 g( 2) = -e3 g( 3) = -e4 g( 4) = -e5 g( 5) = -e6 g( 6) = -e7 g( 7) = -e8 g( 8) = -e9 g( 9) = -e10 g( 10) = -e11 g( 11) = -e12 g( 12) = -e13 g( 13) = -e14 g( 14) = -e15 g( 15) = -e16 g( 16) = -e17 g( 17) = -e18 g( 18) = -e19 g( 19) = -e20 g( 20) = -e21 g( 21) = -e22 g( 22) = -e23 g( 23) = -e24 g( 24) = -e25 g( 25) = -e26 g( 26) = -e27 g( 27) = -e28 g( 28) = -e29 g( 29) = -e30 g( 30) = -e31 g( 31) = -e32 g( 32) = -e33 g( 33) = -e34 g( 34) = -e35 g( 35) = -e36 g( 36) = -e37 g( 37) = -e38 g( 38) = -e39 g( 39) = -e40 g( 40) = -e41 g( 41) = -e42 g( 42) = -e43 g( 43) = -e44 g( 44) = -e45 g( 45) = -e46 g( 46) = -e47 g( 47) = -e48 g( 48) = -e49 g( 49) = -e50 g( 50) = -e51 g( 51) = -e52 g( 52) = -e53 g( 53) = -e54 g( 54) = -e55 g( 55) = -e56 g( 56) = -e57 g( 57) = -e58 g( 58) = -e59 g( 59) = -e60 g( 60) = -e61 g( 61) = -e62 g( 62) = -e63 g( 63) = -e64 g( 64) = -e65 g( 65) = -e66 g( 66) = -e67 g( 67) = -e68 g( 68) = -e69 g( 69) = -e70 g( 70) = -e71 g( 71) = -e72 g( 72) = -e73 g( 73) = -e74 g( 74) = -e75 g( 75) = -e76 g( 76) = -e77 g( 77) = -e78 g( 78) = -e79 g( 79) = -e80 g( 80) = -e81 g( 81) = -e82 g( 82) = -e83 g( 83) = -e84 g( 84) = -e85 g( 85) = -e86 g( 86) = -e87 g( 87) = -e88 g( 88) = -e89 g( 89) = -e90 g( 90) = -e91 g( 91) = -e92 g( 92) = -e93 g( 93) = -e94 g( 94) = -e95 g( 95) = -e96 g( 96) = -e97 g( 97) = -e98 g( 98) = -e99 g( 99) = -e100 g(100) = -e101 g(101) = -e102 g(102) = -e103 g(103) = -e104 g(104) = -e105 g(105) = -e106 g(106) = -e107 g(107) = -e108 g(108) = -e109 g(109) = -e110 g(110) = -e111 g(111) = -e112 g(112) = -e113 g(113) = -e114 g(114) = -e115 g(115) = -e116 g(116) = -e117 g(117) = -e118 g(118) = -e119 g(119) = -e120 g(120) = -e121 g(121) = -e122 g(122) = -e123 g(123) = -e124 g(124) = -e125 g(125) = -e126 g(126) = -e127 g(127) = -e128 g(128) = -e129 g(129) = -e130 g(130) = -e131 g(131) = -e132 g(132) = -e133 g(133) = -e134 g(134) = -e135 g(135) = -e136 g(136) = -e137 g(137) = -e138 g(138) = -e139 g(139) = -e140 g(140) = -e141 g(141) = -e142 g(142) = -e143 g(143) = -e144 g(144) = -e145 g(145) = -e146 g(146) = -e147 g(147) = -e148 g(148) = -e149 g(149) = -e150 g(150) = -e151 g(151) = -e152 g(152) = -e153 g(153) = -e154 g(154) = -e155 g(155) = -e156 g(156) = -e157 g(157) = -e158 END function sqr(x) double precision sqr, x sqr = x*x end CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCC END OF FILE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC