설명
이 모델은 원래 라이브러리 모델 THAI의 확장입니다. 다차원 집합(튜플 및 맵)은 더 많은 것을 허용하는 데 사용됩니다. 간결한 표현. MIP 우선순위는 작업 속도를 높이는 데 사용됩니다. 솔루션 프로세스. 데이터 정의는 처음부터 다음으로 이동됩니다. 모델 정의가 끝났습니다. 전반적으로 이 모델은 선박을 할당하는 데 사용됩니다. 다른 항구에서 훈련 센터로 인력을 수송합니다.
소형 모델 유형 :MIP
카테고리 : 슬롯 모델 라이브러리
메인 파일 : thaix.gms
$title 태국 해군 문제 확장(THAIX,SEQ=105)
$onText
이 모델은 원래 라이브러리 모델인 THAI의 확장입니다.
다차원 집합(튜플 및 맵)은 더 많은 것을 허용하는 데 사용됩니다.
간결한 표현. MIP 우선순위는 작업 속도를 높이는 데 사용됩니다.
솔루션 프로세스. 데이터 정의는 처음부터 다음으로 이동됩니다.
모델 정의가 끝났습니다. 전반적으로 이 모델은 선박을 할당하는 데 사용됩니다.
다른 항구에서 훈련 센터로 인력을 수송합니다.
Choypeng, P, Puakpong, P 및 Rosenthal, R E, 최적 선박 항로 및
태국 해군 모집을 위한 인사 배정. 인터페이스
16, 4(1986), 356-366.
키워드: 혼합 정수 선형 계획법, 라우팅, 스케줄링, 해군
채용, 시나리오 분석
$offText
세트
p '포트' / 춤폰, 수랏, 나콘, 송클라 /
v '항해' / v-01*v-15 /
k '선박 등급' / 소형, 중형, 대형 /;
변수
z(v,k) '항해 vk가 사용된 횟수'
y(v,k,p) '항해 vk를 통해 p항에서 운송된 남성 수'
obj '최소화할 목적 함수'
항해 '항해 횟수'
배송 마일 '배송 마일'
맨마일 '맨마일';
정수 변수 z;
양의 변수 y;
방정식
objdef '목적 함수 정의'
dvoyages '항해 횟수 정의'
dshipmiles '선박 마일 정의'
dmanmiles '맨마일의 정의'
Demand(p) 'p 항구에 있는 모든 사람들을 태워주세요'
voycap(v,k) '항해 vk의 가변 용량을 관찰합니다'
shiplim(k) 'k 클래스의 한계를 관찰합니다';
세트
vk(v,k) '항해 능력'
vkp(v,k,p) '여행: 항해 - 선박 등급 - 항구';
매개변수
d(p) '포트 p에 수송이 필요한 남성의 수'
shipcap(k) '남성의 선박 용량'
n(k) '사용 가능한 클래스 k 선박의 수'
dist(v) '항해 거리';
스칼라
w1 '선박 할당 중량'
w2 '선박 이동 거리 무게'
w3 '개인 거리 이동 중량';
수요(p).. sum(vkp(vk,p), y(vkp)) =g= d(p);
voycap(vk(v,k)).. sum(vkp(vk,p), y(vkp)) =l= shipcap(k)*z(vk);
shiplim(k).. sum(vk(v,k), z(vk)) =l= n(k);
dvoyages .. 항해 =e= sum(vk, z(vk));
dshipmiles.. shipmiles =e= sum(vk(v,k), dist(v)*z(vk));
dmanmiles .. manmiles =e= sum(vkp(v,k,p), dist(v)*y(vkp));
objdef.. obj =e= w1*항해 + w2*배송 마일 + w3*맨마일;
모델 thainavy/모두/;
$s제목 데이터
kp(k,p) '포트 기능' / 작게 설정합니다. (춤폰)
중간.(춤폰,수라트,나콘)
크다. (춤폰,수랏,나콘,송클라) /;
매개변수
d(p) '운송이 필요한 항구 p의 남성 수' / chumphon 475
수라트 659
나콘 672
송클라 1123 /
shipcap(k) '남자의 선박 용량' / 작은 100
중간 200
대형 600 /
n(k) '사용 가능한 선박 수' / 작은 2
중간 3
대형 4 /;
표 a(v,*) '항해에 대한 항구 할당'
춤폰 수랏 나콘 송클라 지역
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;
vk(v,k) = prod(p$a(v,p), kp(k,p));
vkp(vk(v,k),p) = yes$a(v,p);
dist(v) = a(v,'dist');
z.up(vk(v,k)) = n(k);
z.prior(vk(v,'small')) = 3;
z.prior(vk(v,'medium')) = 2;
z.prior(vk(v,'large')) = 1;
thainavy.priorOpt = 1;
thainavy.limCol = 0;
thainavy.limRow = 0;
w1 = 1; w2 = 0; w3 = 0;
mip를 사용하여 obj를 최소화하는 thainavy를 해결합니다.
w1 = 0; w2 = 1; w3 = 0;
mip를 사용하여 obj를 최소화하는 thainavy를 해결합니다.
w1 = 0; w2 = 0; w3 = 1;
mip를 사용하여 obj를 최소화하는 thainavy를 해결합니다.