thai.gms : 태국 해군 문제

설명

이 모델은 선박을 할당하여 인원을 수송하는 데 사용됩니다.
교육 센터와 다른 포트입니다.

소형 모델 유형 :MIP


카테고리 : 무료 슬롯 게임 모델 라이브러리


메인 파일 : thai.gms

$title 태국 해군 문제(THAI,SEQ=98)

$onText
이 모델은 인력을 수송하기 위해 선박을 할당하는 데 사용됩니다.
훈련 센터와 다른 포트.

Choypeng, P, Puakpong, P 및 Rosenthal, R E, 최적 선박 경로 지정
태국 해군 모집을 위한 인사 배정.
인터페이스 16, 4(1986), 356-366.

키워드: 혼합 정수 선형 계획법, 라우팅, 해군 모집,
          스케줄링
$offText

세트
   나는 '포트' / 춤폰, 수랏, 나콘, 송클라 /
   j '항해' / v-01*v-15 /
   k '선박 등급' / 소형, 중형, 대형 /
   sc(i,k) '선박 능력' / chumphon.(소형,중형,대형)
                              (수라트,나콘).(중형,대형)
                               송클라.large /
   vc(j,k) '항해 능력';

매개변수
   d(i) '수송이 필요한 항구 p의 남성 수' / chumphon 475
                                                            수라트 659
                                                            나콘 672
                                                            송클라 1123 /
   shipcap(k) '남자의 선박 용량' / 작은 100
                                                            중간 200
                                                            대형 600 /
   n(k) '사용 가능한 선박 수' / 작은 2
                                                            중간 3
                                                            대형 4 /;

표 a(j,*) '항해에 대한 항구 할당'
              춤폰 수랏 나콘 송클라 지역
   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 1111;

스칼라
   w1 '선박 할당 중량' / 1.00 /
   w2 '선박 이동 거리 중량' / .01 /
   w3 '개인 거리 이동 중량' / .0001 /;

vc(j,k) = prod(i$a(j,i), sc(i,k));
디스플레이 VC;

변수
   z(j,k) '항해 jk가 사용된 횟수'
   y(j,k,i) '항해 jk를 통해 i항에서 수송된 남성의 수'
   obj;

정수 변수 z;
양의 변수 y;

방정식
   objdef
   요구(i) 'i 항구에 있는 모든 사람들을 태워주세요'
   voycap(j,k) '항해 jk의 가변 용량을 관찰합니다'
   shiplim(k) 'k 클래스의 한계를 관찰합니다';

수요(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));

모델 thainavy/모두/;

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

mip를 사용하여 obj를 최소화하는 thainavy를 해결합니다.

y.l, z.l을 표시합니다.