GAMS [ Home | Support | Sales | Solvers | Documentation | Model Libraries | Search | Contact Us ]

thai.gms : Thai Navy Problem


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

Reference:
Small Model of Type: MIP
$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 ;