sparta.gms : Wagner의 군사 인력 계획

설명

군인은 1년, 2년, 3년 또는 4년 동안 입대할 수 있으며 그 결정은
각 입대기간별로 얼마나 많은 병사를 입대시킬 것인가 입니다.
년.

이 문제는 스톡 또는 흐름 변수를 사용하여 공식화될 수 있습니다. 4개
여기에는 다양한 공식이 제시되어 있습니다. 가장 읽기 쉬운
공식은 주식 변수를 사용하는 공식입니다. 요구하면서도
변수가 많을수록 주식 공식에는 0이 아닌 항목이 더 적습니다.
행렬이며 계산적인 관점에서도 선호됩니다.

소형 모델 유형 :LP


카테고리 : 피망 슬롯 모델 라이브러리


메인 파일 : sparta.gms

$title 바그너의 군사 인력 계획(SPARTA,SEQ=108)

$onText
군인은 1년, 2년, 3년, 4년 동안 입대할 수 있으며, 그 결정은 다음과 같습니다.
각 입대기간별로 얼마나 많은 병사를 입대시킬 것인가 입니다.
년.

이 문제는 스톡 또는 흐름 변수를 사용하여 공식화될 수 있습니다. 4개
여기에는 다양한 공식이 제시되어 있습니다. 가장 읽기 쉬운
공식은 주식 변수를 사용하는 공식입니다. 요구하면서도
변수가 많을수록 주식 공식에는 0이 아닌 항목이 더 적습니다.
행렬이며 계산적인 관점에서도 선호됩니다.

Wagner, H M, 군사 인력 계획 예. 원칙에서는
경영 결정에 적용되는 운영 연구,
두 번째 판. 프렌티스 홀, 1975, p. 66.

키워드: 선형 프로그래밍, 다기간 인력 계획, 시나리오 분석,
          군대, 일정
$offText

세트
   t '기간(년)' / 1*10 /
   l '입대 기간(년)' / len-1*len-4 /;

별칭 (l,lp), (t,tp);

Set ttl(t,tp,l) '입대 일정을 나타내는 변수 맵';
ttl(t,tp,l) = yes$(ord(tp) <= ord(t) 및 ord(tp) + ord(l) > ord(t));

디스플레이 ttl;

매개변수
  infl(t) '인플레이션 지수' / 1 1.00, 2 1.05, 3 1.12, 4 1.71, 5 1.80
                                6 1.90, 7 1.97, 8 2.10, 9 2.22,10 2.38 /
  req(t) '병력 요구사항' / 1 5, 2 6, 3 7, 4 6, 5 4
                                6 9, 7 8, 8 8, 9 6, 10 4 /
  clen(l) '서비스 비용' / len-1 50, len-2 85, len-3 115, len-4 143 /;

변수
   x(t,l) '연도 및 입대 기간별 모집'
   e(t) '입대한 남자'
   z '총 비용';

양수 변수 x;

방정식
   비용 '비용 정의'
   bal1(t) '병력 균형 - 지연 연산자를 사용한 흐름 균형'
   bal2(t) '병력 균형 - 명시적 조건이 있는 흐름 균형'
   bal3(t) '병력 균형 - 중간 상태의 흐름 균형'
   bal4(t) '병력 잔액 - 재고 잔액';

비용.. z =e= sum((t,l), infl(t)*clen(l)*x(t,l));

bal1(t).. sum((l,lp), x(t-(ord(l)-1),lp+(ord(l)-1))) =g= req(t);

bal2(t).. sum((tp,l)$(ord(tp) <= ord(t) and (ord(tp) + ord(l)) > ord(t)), x(tp,l)) =g= req(t);

bal3(t).. sum(ttl(t,tp,l), x(tp,l)) =g= req(t);

bal4(t).. e(t) =e= e(t-1) + sum(l, x(t,l) - x(t-ord(l),l));

e.lo(t) = req(t);

모델
   스파르타1 / 비용, bal1 /
   스파르타2 / 비용, bal2 /
   스파르타3 / 비용, bal3 /
   스파르타4 / 비용, bal4 /;

z를 최소화하는 lp를 사용하여 sparta1을 해결합니다.
z를 최소화하는 lp를 사용하여 sparta2를 해결합니다.
z를 최소화하는 lp를 사용하여 sparta3을 해결합니다.
z를 최소화하는 lp를 사용하여 sparta4를 해결합니다.

매개변수 담당자 '요약 보고서';
rep('필수',' ',t) = req(t);
rep('입대',' ',t) = e.l(t);
rep('m-cost',' ',t) = e.m(t);
rep('recruits',l,t) = x.l(t,l);
디스플레이 담당자;