mrp2.gms : 자재 소요량 계획(MRP) 공식

설명

자재 요구 사항 계획 모델.

소형 모델 유형 :MIP lp


카테고리 : 메가 슬롯 모델 라이브러리


메인 파일 : mrp2.gms

$title 자재 소요량 계획(MRP) 공식(MRP2,SEQ=207)

$onText
자재 요구 사항 계획 모델.

Voss, S 및 Woodruff, D L, 전산 입문
공급망의 생산 계획을 위한 최적화 모델.

키워드: 선형 계획법, 혼합 정수 선형 계획법, 생산
          계획, 자재 소요량 계획
$offText

세트
   PP 'SKU 번호' / AJ8172, LQ8811, RN0098, NN1100, WN7342 /
   TT '시간 버킷' / 1jan01*8jan01 /
   KK '자원' / HR-101, MT-402 /;

별칭(TT,TTp), (PP,PPp);

테이블 R(PP,PP) '하나의 j를 만드는 i의 수'
            AJ8172 LQ8811 RN0098 NN1100 WN7342
   AJ8172
   LQ8811 2
   RN0098 1
   NN1100 1
   WN7342 1;

테이블 수요(PP,TT) '특정 기간의 품목에 대한 외부 수요'
            1월 1일 2월 01일 3월 01일 4월 01일 5월 01일 6월 1일 7월 01일 8월 01일
   AJ8172 20 30 10 20 30 20 30 40
   LQ8811
   RN0098
   NN1100
   WN7342 ;

매개변수
   lev(PP) '프로덕션 트리의 수준'
   TD(PP) '총 수요 외부 + 암시적';

스칼라 runlev '레벨 반복' / 0 /;

* 루트 노드는 레벨 0을 얻고, 다른 모든 노드는 -1을 얻습니다.
lev(PP)$(sum(PPp,R(PP,PPp))) = -1;
TD(PP)$(lev(PP) = 0) = sum(TT,수요(PP,TT));

loop(PP$(lev(PP) = runlev),
   runlev = runlev + 1;
   lev(PPp)$R(PPp,PP) = runlev;
   TD(PPp)$R(PPp,PP) = 합계(TT,수요(PPp,TT)) + R(PPp,PP)*TD(PP);
);

매개변수
   LT(PP) '리드타임'
   I(PP) '재고 시작'
   LS(PP) '로트 크기';

테이블 SKU데이터(PP,*)
            LT LS I
   AJ8172 2 100 90
   LQ8811 3 400 300
   RN0098 4 100 100
   NN1100 1 1 0
   WN7342 12 1000 900;

LT(PP) = SKUdata(PP,'LT');
LS(PP) = SKUdata(PP,'LS');
I(PP) = SKUdata(PP, '나');

테이블 U(PP,KK) '하나의 i에 필요한 자원 k의 비율'
                HR-101 MT-402
   AJ8172 0.00208333 0.000104166
   LQ8811 0.000333333
   RN0098
   NN1100 0.000001000;

매개변수 M(PP) '방정식 defprod에 대한 큰 M';
M(PP) = 최대(TD(PP),LS(PP));

이진변수 d(PP,TT) '생산 지표';
양수 변수 x(PP,TT) '생산할 SKU 수';

변수 obj;

방정식
   defobj '목적 함수'
   defreq(PP,TT) '재료 요구사항'
   deflot(PP,TT) '로트 크기'
   defprod(PP,TT) '생산 지표'
   defcap(TT,KK) '용량';

defobj..obj =e= sum((PP,TT), (카드(TT) - ord(TT) + 1)*x(PP,TT));

defreq(PP,TT).. sum(TTp$(ord(TTp) <= ord(TT) - LT(PP)), x(PP,TTp)) + I(PP)
                     =g= 합계(TTp$(ord(TTp) <= ord(TT)), 수요(PP,TTp)
                      + 합(PPp, R(PP,PPp)*x(PPp,TTp)));

deflot(PP,TT).. x(PP,TT) =g= d(PP,TT)*LS(PP);

defprod(PP,TT).. x(PP,TT) =l= d(PP,TT)*M(PP);

defcap(TT,KK).. sum(PP, U(PP,KK)*x(PP,TT)) =l= 1;

모델
   mrp / defobj, defreq, deflot, defprod /
   mrp2 / defreq, defreq, defcap /
   mrp2l / defobj, defreq, deflot, defprod, defcap /;

옵션 optCr = 0.0;

mip를 사용하여 obj를 최소화하는 mrp를 해결합니다.
lp를 사용하여 obj를 최소화하는 mrp2를 해결합니다.
mip를 사용하여 obj를 최소화하는 mrp2l을 해결합니다.