thai.gms : Thai Navy Problem

Description

This model is used to allocate ships to transport personnel from
different port to a training center.

Reference

  • Choypeng, P, Puakpong, P, and Rosenthal, R E, Optimal Ship Routing and Personnel Assignment for Naval Recruitment in Thailand. Interfaces 16, 4 (1986), 356-366.

Small Model of Type : MIP


Category : GAMS Model library


Main file : thai.gms

$Title Thai Navy Problem (THAI,SEQ=98)

$Ontext

   This model is used to allocate ships to transport personnel from
   different port to a training center.


Choypeng, P, Puakpong, P, and Rosenthal, R E, Optimal Ship Routing
and Personnel Assignment for Naval Recruitment in Thailand.
Interfaces 16, 4 (1986), 356-366.

$Offtext

 Sets  i  ports         / chumphon, surat, nakon, songkhla /
       j  voyages       / v-01* v-15 /
       k  ship classes  / small, medium, large /
       sc(i,k) ship capability / chumphon.(small,medium,large)
                                 (surat,nakon).(medium,large)
                                 songkhla.large               /
       vc(j,k) voyage capability ;

 Parameter  d(i)  number of men at port i needing transport
                 / chumphon = 475, surat     = 659
                   nakon    = 672, songkhla = 1123 /
            shipcap(k)  ship capacity in men / small    100
                                               medium   200
                                               large    600 /
            n(k)   number of ships of class k available
                   / small  2, medium  3, large  4 / ;

 Table   a(j,*)   assignment of ports to voyages

        dist  chumphon surat nakon songkhla
v-01     370      1
v-02     460              1
v-03     600                    1
v-04     750                            1
v-05     515      1       1
v-06     640      1             1
v-07     810      1                     1
v-08     665              1     1
v-09     665              1             1
v-10     800                    1       1
v-11     720      1       1     1
v-12     860      1       1             1
v-13     840      1             1       1
v-14     865              1     1       1
v-15     920      1       1     1       1

Scalar w1 ship assignment weight           / 1.00 /
       w2 ship distance traveled weight    / .01   /
       w3 personnel distance travel weight / .0001 / ;

vc(j,k) = prod(i$a(j,i), sc(i,k)); Display vc ;

 Variables
      z(j,k)    number of times voyage jk is used
      y(j,k,i)  number of men transported from port i via voyage jk
      obj ;

 Integer Variables z; positive variables y ;

Equations
    objdef
    demand(i)        pick up all the men at port i
    voycap(j,k)      observe variable capacity of voyage jk
    shiplim(k)       observe limit of class k ;

demand(i)..  sum((j,k)$(a(j,i)$vc(j,k)), y(j,k,i))  =g=  d(i) ;

voycap(j,k)$vc(j,k)..  sum(i$a(j,i), y(j,k,i))  =l=  shipcap(k)*z(j,k) ;

shiplim(k).. sum(j$vc(j,k), z(j,k))   =l=  n(k) ;

objdef..     obj =e= w1*sum((j,k)$vc(j,k), z(j,k))
                   + w2*sum((j,k)$vc(j,k), a(j,"dist")*z(j,k))
                   + w3*sum((j,k,i)$(a(j,i)$vc(j,k)), a(j,"dist")*y(j,k,i)) ;

Model thainavy /all/;

z.up(j,k)$vc(j,k) = n(k) ;

Solve thainavy minimizing obj using mip ;

 Display y.l, z.l ;