      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
