SUBROUTINE MAP(N,F,X) ************************************************************************ * * * Example 1 * * * * Aashtiani : 50 variables traffic assignment problem * * * ************************************************************************ * REAL*8 F(N),F1(10),X(N),XT,RHO * RHO=10 * XT=X(19)+X(23)+X(26)+X(29)+X(32)+X(33)+X(36)+X(37) F1(1)=1.5+0.0001*XT**4 XT=X( 3)+X( 6)+X( 9)+X(12)+X(14)+X(16)+X(21)+X(22) F1(2)=1.5+0.0001*XT**4 XT=X( 1)+X( 4)+X( 7)+X(26)+X(27)+X(32)+X(34)+X(36) F1(3)=3.0+0.0001*XT**4 XT=X(11)+X(12)+X(15)+X(16)+X(17)+X(22)+X(25)+X(31) F1(4)=3.0+0.0001*XT**4 XT=X( 2)+X( 3)+X(22)+X(25)+X(28)+X(31)+X(33)+X(35) F1(5)=3.0+0.0001*XT**4 XT=X( 4)+X( 7)+X(10)+X(13)+X(14)+X(18)+X(19)+X(36) F1(6)=3.0+0.0001*XT**4 XT=X( 7)+X( 8)+X(13)+X(15)+X(19)+X(20)+X(23)+X(26) F1(7)=1.5+0.0001*XT**4 XT=X( 3)+X( 6)+X(12)+X(30)+X(31)+X(34)+X(35)+X(38) F1(8)=1.5+0.0001*XT**4 XT=X(14)+X(18)+X(21)+X(24)+X(27)+X(30)+X(34) F1(9)=1.5+0.0001*XT**4 XT=X( 2)+X( 5)+X( 8)+X(11)+X(15)+X(33)+X(37) F1(10)=1.5+0.0001*XT**4 * F(1)=F1(3)-X(39)+RHO*(X(1)+X(2)+X(3)-20) F(2)=F1(5)+F1(10)-X(39)+RHO*(X(1)+X(2)+X(3)-20) F(3)=F1(2)+F1(8)+F1(5)-X(39)+RHO*(X(1)+X(2)+X(3)-20) F(4)=F1(3)+F1(6)-X(40)+RHO*(X(4)+X(5)+X(6)-20) F(5)=F1(10)-X(40)+RHO*(X(4)+X(5)+X(6)-20) F(6)=F1(2)+F1(8)-X(40)+RHO*(X(4)+X(5)+X(6)-20) F(7)=F1(3)+F1(6)+F1(7)-X(41)+RHO*(X(7)+X(8)+X(9)-20) F(8)=F1(7)+F1(10)-X(41)+RHO*(X(7)+X(8)+X(9)-20) F(9)=F1(2)-X(41)+RHO*(X(7)+X(8)+X(9)-20) F(10)=F1(6)-X(42)+RHO*(X(10)+X(11)+X(12)-20) F(11)=F1(4)+F1(10)-X(42)+RHO*(X(10)+X(11)+X(12)-20) F(12)=F1(2)+F1(4)+F1(8)-X(42)+RHO*(X(10)+X(11)+X(12)-20) F(13)=F1(6)+F1(7)-X(43)+RHO*(X(13)+X(14)+X(15)+X(16)-20) F(14)=F1(2)+F1(6)+F1(9)-X(43)+RHO*(X(13)+X(14)+X(15)+X(16)-20) F(15)=F1(4)+F1(10)+F1(7)-X(43)+RHO*(X(13)+X(14)+X(15)+X(16)-20) F(16)=F1(2)+F1(4)-X(43)+RHO*(X(13)+X(14)+X(15)+X(16)-20) F(17)=F1(4)-X(44)+RHO*(X(17)+X(18)+X(19)-20) F(18)=F1(6)+F1(9)-X(44)+RHO*(X(17)+X(18)+X(19)-20) F(19)=F1(1)+F1(6)+F1(7)-X(44)+RHO*(X(17)+X(18)+X(19)-20) F(20)=F1(7)-X(45)+RHO*(X(20)+X(21)+X(22)-20) F(21)=F1(2)+F1(9)-X(45)+RHO*(X(20)+X(21)+X(22)-20) F(22)=F1(2)+F1(4)+F1(5)-X(45)+RHO*(X(20)+X(21)+X(22)-20) F(23)=F1(1)+F1(7)-X(46)+RHO*(X(23)+X(24)+X(25)-20) F(24)=F1(9)-X(46)+RHO*(X(23)+X(24)+X(25)-20) F(25)=F1(5)+F1(4)-X(46)+RHO*(X(23)+X(24)+X(25)-20) F(26)=F1(1)+F1(7)+F1(3)-X(47)+RHO*(X(26)+X(27)+X(28)-20) F(27)=F1(3)+F1(9)-X(47)+RHO*(X(26)+X(27)+X(28)-20) F(28)=F1(5)-X(47)+RHO*(X(26)+X(27)+X(28)-20) F(29)=F1(1)-X(48)+RHO*(X(29)+X(30)+X(31)-20) F(30)=F1(8)+F1(9)-X(48)+RHO*(X(29)+X(30)+X(31)-20) F(31)=F1(4)+F1(5)+F1(8)-X(48)+RHO*(X(29)+X(30)+X(31)-20) F(32)=F1(1)+F1(3)-X(49)+RHO*(X(32)+X(33)+X(34)+X(35)-20) F(33)=F1(1)+F1(5)+F1(10)-X(49)+RHO*(X(32)+X(33)+X(34)+X(35)-20) F(34)=F1(3)+F1(8)+F1(9)-X(49)+RHO*(X(32)+X(33)+X(34)+X(35)-20) F(35)=F1(5)+F1(8)-X(49)+RHO*(X(32)+X(33)+X(34)+X(35)-20) F(36)=F1(1)+F1(3)+F1(6)-X(50)+RHO*(X(36)+X(37)+X(38)-20) F(37)=F1(1)+F1(10)-X(50)+RHO*(X(36)+X(37)+X(38)-20) F(38)=F1(8)-X(50)+RHO*(X(36)+X(37)+X(38)-20) F(39)=X(1)+X(2)+X(3)-20 F(40)=X(4)+X(5)+X(6)-20 F(41)=X(7)+X(8)+X(9)-20 F(42)=X(10)+X(11)+X(12)-20 F(43)=X(13)+X(14)+X(15)+X(16)-20 F(44)=X(17)+X(18)+X(19)-20 F(45)=X(20)+X(21)+X(22)-20 F(46)=X(23)+X(24)+X(25)-20 F(47)=X(26)+X(27)+X(28)-20 F(48)=X(29)+X(30)+X(31)-20 F(49)=X(32)+X(33)+X(34)+X(35)-20 F(50)=X(36)+X(37)+X(38)-20 * RETURN END * * * * SUBROUTINE NABMAP(N,T,X) ************************************************************************ * * * Jacobian * * * ************************************************************************ * * REAL*8 T(N,N),TT(10,38),X(N),XT,RHO * RHO=10 * DO 20 I=1,10 DO 20 J=1,38 TT(I,J)=0.0 20 CONTINUE * XT=X(19)+X(23)+X(26)+X(29)+X(32)+X(33)+X(36)+X(37) TT(1,19)=0.0004*XT**3 TT(1,23)=0.0004*XT**3 TT(1,26)=0.0004*XT**3 TT(1,29)=0.0004*XT**3 TT(1,32)=0.0004*XT**3 TT(1,33)=0.0004*XT**3 TT(1,36)=0.0004*XT**3 TT(1,37)=0.0004*XT**3 XT=X( 3)+X( 6)+X( 9)+X(12)+X(14)+X(16)+X(21)+X(22) TT(2,3)=0.0004*XT**3 TT(2,6)=0.0004*XT**3 TT(2,9)=0.0004*XT**3 TT(2,12)=0.0004*XT**3 TT(2,14)=0.0004*XT**3 TT(2,16)=0.0004*XT**3 TT(2,21)=0.0004*XT**3 TT(2,22)=0.0004*XT**3 XT=X( 1)+X( 4)+X( 7)+X(26)+X(27)+X(32)+X(34)+X(36) TT(3,1)=0.0004*XT**3 TT(3,4)=0.0004*XT**3 TT(3,7)=0.0004*XT**3 TT(3,26)=0.0004*XT**3 TT(3,27)=0.0004*XT**3 TT(3,32)=0.0004*XT**3 TT(3,34)=0.0004*XT**3 TT(3,36)=0.0004*XT**3 XT=X(11)+X(12)+X(15)+X(16)+X(17)+X(22)+X(25)+X(31) TT(4,11)=0.0004*XT**3 TT(4,12)=0.0004*XT**3 TT(4,15)=0.0004*XT**3 TT(4,16)=0.0004*XT**3 TT(4,17)=0.0004*XT**3 TT(4,22)=0.0004*XT**3 TT(4,25)=0.0004*XT**3 TT(4,31)=0.0004*XT**3 XT=X( 2)+X( 3)+X(22)+X(25)+X(28)+X(31)+X(33)+X(35) TT(5,2)=0.0004*XT**3 TT(5,3)=0.0004*XT**3 TT(5,22)=0.0004*XT**3 TT(5,25)=0.0004*XT**3 TT(5,28)=0.0004*XT**3 TT(5,31)=0.0004*XT**3 TT(5,33)=0.0004*XT**3 TT(5,35)=0.0004*XT**3 XT=X( 4)+X( 7)+X(10)+X(13)+X(14)+X(18)+X(19)+X(36) TT(6,4)=0.0004*XT**3 TT(6,7)=0.0004*XT**3 TT(6,10)=0.0004*XT**3 TT(6,13)=0.0004*XT**3 TT(6,14)=0.0004*XT**3 TT(6,18)=0.0004*XT**3 TT(6,19)=0.0004*XT**3 TT(6,36)=0.0004*XT**3 XT=X( 7)+X( 8)+X(13)+X(15)+X(19)+X(20)+X(23)+X(26) TT(7,7)=0.0004*XT**3 TT(7,8)=0.0004*XT**3 TT(7,13)=0.0004*XT**3 TT(7,15)=0.0004*XT**3 TT(7,19)=0.0004*XT**3 TT(7,20)=0.0004*XT**3 TT(7,23)=0.0004*XT**3 TT(7,26)=0.0004*XT**3 XT=X( 3)+X( 6)+X(12)+X(30)+X(31)+X(34)+X(35)+X(38) TT(8,3)=0.0004*XT**3 TT(8,6)=0.0004*XT**3 TT(8,12)=0.0004*XT**3 TT(8,30)=0.0004*XT**3 TT(8,31)=0.0004*XT**3 TT(8,34)=0.0004*XT**3 TT(8,35)=0.0004*XT**3 TT(8,38)=0.0004*XT**3 XT=X(14)+X(18)+X(21)+X(24)+X(27)+X(30)+X(34) TT(9,14)=0.0004*XT**3 TT(9,18)=0.0004*XT**3 TT(9,21)=0.0004*XT**3 TT(9,24)=0.0004*XT**3 TT(9,27)=0.0004*XT**3 TT(9,30)=0.0004*XT**3 TT(9,34)=0.0004*XT**3 XT=X( 2)+X( 5)+X( 8)+X(11)+X(15)+X(33)+X(37) TT(10,2)=0.0004*XT**3 TT(10,5)=0.0004*XT**3 TT(10,8)=0.0004*XT**3 TT(10,11)=0.0004*XT**3 TT(10,15)=0.0004*XT**3 TT(10,33)=0.0004*XT**3 TT(10,37)=0.0004*XT**3 * DO 30 I=1,N DO 30 J=1,N T(I,J)=0.0 30 CONTINUE * DO 40 I=1,38 T(1,I)=TT(3,I) T(2,I)=TT(5,I)+TT(10,I) T(3,I)=TT(2,I)+TT(8,I)+TT(5,I) T(4,I)=TT(3,I)+TT(6,I) T(5,I)=TT(10,I) T(6,I)=TT(2,I)+TT(8,I) T(7,I)=TT(3,I)+TT(6,I)+TT(7,I) T(8,I)=TT(7,I)+TT(10,I) T(9,I)=TT(2,I) T(10,I)=TT(6,I) T(11,I)=TT(4,I)+TT(10,I) T(12,I)=TT(2,I)+TT(4,I)+TT(8,I) T(13,I)=TT(6,I)+TT(7,I) T(14,I)=TT(2,I)+TT(6,I)+TT(9,I) T(15,I)=TT(4,I)+TT(10,I)+TT(7,I) T(16,I)=TT(2,I)+TT(4,I) T(17,I)=TT(4,I) T(18,I)=TT(6,I)+TT(9,I) T(19,I)=TT(1,I)+TT(6,I)+TT(7,I) T(20,I)=TT(7,I) T(21,I)=TT(2,I)+TT(9,I) T(22,I)=TT(2,I)+TT(4,I)+TT(5,I) T(23,I)=TT(1,I)+TT(7,I) T(24,I)=TT(9,I) T(25,I)=TT(5,I)+TT(4,I) T(26,I)=TT(1,I)+TT(7,I)+TT(3,I) T(27,I)=TT(3,I)+TT(9,I) T(28,I)=TT(5,I) T(29,I)=TT(1,I) T(30,I)=TT(8,I)+TT(9,I) T(31,I)=TT(4,I)+TT(5,I)+TT(8,I) T(32,I)=TT(1,I)+TT(3,I) T(33,I)=TT(1,I)+TT(5,I)+TT(10,I) T(34,I)=TT(3,I)+TT(8,I)+TT(9,I) T(35,I)=TT(5,I)+TT(8,I) T(36,I)=TT(1,I)+TT(3,I)+TT(6,I) T(37,I)=TT(1,I)+TT(10,I) T(38,I)=TT(8,I) 40 CONTINUE * T(1,39)=-1 T(2,39)=-1 T(3,39)=-1 T(4,40)=-1 T(5,40)=-1 T(6,40)=-1 T(7,41)=-1 T(8,41)=-1 T(9,41)=-1 T(10,42)=-1 T(11,42)=-1 T(12,42)=-1 T(13,43)=-1 T(14,43)=-1 T(15,43)=-1 T(16,43)=-1 T(17,44)=-1 T(18,44)=-1 T(19,44)=-1 T(20,45)=-1 T(21,45)=-1 T(22,45)=-1 T(23,46)=-1 T(24,46)=-1 T(25,46)=-1 T(26,47)=-1 T(27,47)=-1 T(28,47)=-1 T(29,48)=-1 T(30,48)=-1 T(31,48)=-1 T(32,49)=-1 T(33,49)=-1 T(34,49)=-1 T(35,49)=-1 T(36,50)=-1 T(37,50)=-1 T(38,50)=-1 * DO 80 I=1,3 DO 80 J=1,3 T(I,J)=T(I,J)+RHO T(I+3,J+3)=T(I+3,J+3)+RHO T(I+6,J+6)=T(I+6,J+6)+RHO T(I+9,J+9)=T(I+9,J+9)+RHO T(I+16,J+16)=T(I+16,J+16)+RHO T(I+19,J+19)=T(I+19,J+19)+RHO T(I+22,J+22)=T(I+22,J+22)+RHO T(I+25,J+25)=T(I+25,J+25)+RHO T(I+28,J+28)=T(I+28,J+28)+RHO T(I+35,J+35)=T(I+35,J+35)+RHO 80 CONTINUE DO 81 I=1,4 DO 81 J=1,4 T(I+12,J+12)=T(I+12,J+12)+RHO T(I+31,J+31)=T(I+31,J+31)+RHO 81 CONTINUE T(39,1)=1 T(39,2)=1 T(39,3)=1 T(40,4)=1 T(40,5)=1 T(40,6)=1 T(41,7)=1 T(41,8)=1 T(41,9)=1 T(42,10)=1 T(42,11)=1 T(42,12)=1 T(43,13)=1 T(43,14)=1 T(43,15)=1 T(43,16)=1 T(44,17)=1 T(44,18)=1 T(44,19)=1 T(45,20)=1 T(45,21)=1 T(45,22)=1 T(46,23)=1 T(46,24)=1 T(46,25)=1 T(47,26)=1 T(47,27)=1 T(47,28)=1 T(48,29)=1 T(48,30)=1 T(48,31)=1 T(49,32)=1 T(49,33)=1 T(49,34)=1 T(49,35)=1 T(50,36)=1 T(50,37)=1 T(50,38)=1 * RETURN END