설명
선외기 모터 제조 전문회사입니다.
계절적 수요가 많아 생산 비용을 최소화하려고 합니다. 는
세 가지 주요 비용 범주는 다음과 같습니다.
1. 직접생산비(비선형 생산관계 및 교대)
수술이 가능합니다)
2. 재고비용(임대 또는 임대옵션)
3. 인력 변동 비용.
소형 모델 유형 :MIP
카테고리 : 무료 슬롯 사이트 모델 라이브러리
메인 파일 : prodschx.gms
$title SOS1 및 SOS2를 사용하는 생산 일정 모델(PRODSCHX,SEQ=109)
$onText
선외기 모터 제작 전문기업
계절적 수요가 많아 생산 비용을 최소화하려고 합니다. 는
세 가지 주요 비용 범주는 다음과 같습니다.
1. 직접생산비(비선형 생산관계 및 교대)
수술이 가능합니다)
2. 재고비용(임대 또는 임대옵션)
3. 인력 변동 비용.
CDC, APEX-III 참조 매뉴얼 버전 1.2, Control Data Corporation,
미니애폴리스, 1980. MIP 샘플 문제
이는 모델 PRODSCH(SEQ=9)의 개정 버전입니다. GAMS
인덱스 위치를 변경하려면 SOS 정의가 필요합니다.
변수 ss 및 SSB. MIP를 사용하는 방법에는 세 가지가 있습니다.
키워드: 혼합 정수 선형 계획법, 특별 주문 세트, 생산
계획, 일정 잡기
$offText
* 바이너리 변수
* SOS1 세트
* SOS2 세트
* 일부 방정식은 준수하기 위해 다른 이름으로 두 번 입력됩니다.
* GAMS에서는 변수를 엄격하게 입력합니다.
세트
q '분기' / 여름, 가을, 겨울, 봄 /
s '교대' / 첫 번째, 두 번째 /
l '생산 수준' / 1*4 /
i(l) '생산 수준 간격' / 1*3 /;
매개변수
d(q) '수요(계절별 모터)' / 봄 24000 /
lc(q) '리스 비용(계절당 달러)' / 여름 15000 /
ei(q) '초기 취업' / 84년 여름 /
delt(q) '할인율';
스칼라
mc '재료비(모터당 달러)' / 100 /
sr '공간 임대(모터당 달러)' / 2 /
invmax '재고(모터)의 상한'
hc '고용 비용(직원당 달러)' / 900 /
fc '해고 비용(직원당 달러)' / 150 /;
delt(q) = 1/1.03**(ord(q) - 1);
invmax = sum(q, d(q));
테이블 무료 슬롯 사이트(*,l) '생산 관계'
1 2 3 4
노동 20 40 50 60
모터 1000 3000 4500 5800;
테이블 sc(*,s) '교대 비용(교대당 달러)'
첫 번째 두 번째
고정 10000 16000
노동 3500 4100;
변수
비용 '연간 총 할인 비용(1000 $)'
dpc(q) '직접제작비(시즌당 1000$)'
isc(q) '재고 보관 비용(계절당 1000$)'
wfc(q) '인력변동비용(계절당 1000$)'
src(q) '공간 임대 비용(시즌당 1000$)'
p(q) '생산(계절별 모터 수)'
ss(q,s,l) '생산 세그먼트(sos2 유형)'
ssb(q,s,l) 'ss sos2 공식화에 0-1이 필요함'
ss1(q,s,l) 'ss sos2에 SOS1이 필요함'
ss2(q,s,l) 'SOS2 공식화'
inv(q) '재고(계절별 모터 수)'
임대 '리스-임대 옵션'
e(q) '총 고용(직원)'
se(q,s) '교대 근무(교대당 직원 수)'
Shift(q,s) '교대 사용 표시자(이진수)'
h(q) '분기당 고용(직원)'
f(q) '분기당 해고 수(직원)';
양수 변수 p, ss, inv, src, h, f;
바이너리 변수 임대, 교대, ssb;
SOS1 변수 ss1;
SOS2 변수 ss2;
방정식
acost '총 비용 정의(1000 $)'
ddpc(q) '직접생산비 정의(1000$)'
disc(q) '재고 보관 비용 정의(1000$)'
dwfc(q) '인력 변동 비용 정의(1000 $)'
sbp(q) 'sos 제품 잔액(모터)'
sbps2(q) 'SOS2 제품 밸런스 모터)'
sbse(q,s) 'sos 교대 고용 잔액(직원)'
sbses2(q,s) 'SOS2 교대근무수지(직원)'
scc(q,s) 'sos 시프트 링크'
sccs2(q,s) 'SOS2 시프트 링크'
invb(q) '재고 잔고(모터)'
dsrc(q) '정의: 공간 임대'
ed(q) '총 고용 정의(직원)'
eb1(q) '고용잔액 유형 1(직원)'
eb2(q) '고용수지 유형 2(직원)'
messb(q,s) 'ssb에 대한 상호 배타성'
mess1(q,s) 'ss1에 대한 상호 배타성'
lssb(q,s,l) 'ss - ssb 연결'
lss1(q,s,l) 'ss - ss1 연결';
acost.. 비용 =e= sum(q, delt(q)*( dpc(q) + isc(q) + wfc(q) ));
ddpc(q).. dpc(q) =e= (mc*p(q) + sum(s, sc("고정",s)*shift(q,s) + sc("노동",s)*se(q,s)))/1000;
sbp(q).. p(q) =e= sum((s,l), 무료 슬롯 사이트("모터",l)*ss (q,s,l));
sbps2(q).. p(q) =e= sum((s,l), 무료 슬롯 사이트("모터",l)*ss2(q,s,l));
sbse(q,s).. se(q,s) =e= sum(l, 무료 슬롯 사이트("노동",l)*ss (q,s,l));
sbses2(q,s).. se(q,s) =e= sum(l, 무료 슬롯 사이트("노동",l)*ss2(q,s,l));
scc(q,s)..sum(l, ss (q,s,l)) =e= Shift(q,s);
sccs2(q,s).. sum(l, ss2(q,s,l)) =e= Shift(q,s);
invb(q).. inv(q) =e= inv(q-1) + p(q) - d(q);
디스크(q).. isc(q) =e= (lc(q)*리스 + src(q))/1000;
dsrc(q).. src(q) =g= sr*(inv(q) - invmax*lease);
dwfc(q).. wfc(q) =e= (hc*h(q) + fc*f(q))/1000;
ed(q)..e(q) =e= sum(s, se(q,s));
eb1(q).. e(q) =e= e(q-1) + h(q) - f(q) + ei(q);
eb2(q).. e(q) =e= e(q--1) + h(q) - f(q);
messb(q,s)..sum(l, ssb(q,s,l)) =e= 1;
mess1(q,s).. sum(l, ss1(q,s,l)) =e= 1;
lssb(q,s,l).. ss(q,s,l-1) + ss(q,s,l) =l= ssb(q,s,l-2) + ssb(q,s,l-1) + ssb(q,s,l);
lss1(q,s,l).. ss(q,s,l-1) + ss(q,s,l) =l= ss1(q,s,l-2) + ss1(q,s,l-1) + ss1(q,s,l);
p.up("스프링") = .8*카드(들)*smax(l, 무료 슬롯 사이트("모터",l));
모델
prod1B '초기 고용' / acost, ddpc, sbp, sbse, scc, disc, invb, dsrc, dwfc, ed, eb1, messb, lssb /
prod2B '정상 상태' / acost, ddpc, sbp, sbse, scc, disc, invb, dsrc, dwfc, ed, eb2, messb, lssb /
prod1S1 '초기 고용' / acost, ddpc, sbp, sbse, scc, disc, invb, dsrc, dwfc, ed, eb1, mess1, lss1 /
prod2S1 '정상 상태' / acost, ddpc, sbp, sbse, scc, disc, invb, dsrc, dwfc, ed, eb2, mess1, lss1 /
prod1S2 '초기 고용' / acost, ddpc, sbps2, sbses2, sccs2, disc, invb, dsrc, dwfc, ed, eb1 /
prod2S2 '정상 상태' / acost, ddpc, sbps2, sbses2, sccs2, disc, invb, dsrc, dwfc, ed, eb2 /;
* 전역 최적(OPTCR)을 얻고 각 해결이 처음부터 시작되도록 강제(BRATIO)
옵션 optCr = 0, limCol = 0, limRow = 0, bRatio = 1;
매개변수 보고서 '요약 성과 보고서';
mip를 사용하여 비용을 최소화하는 prod1b를 해결합니다.
보고서('prod1b','objval') = prod1b.objval;
보고서('prod1b','iterusd') = prod1b.iterusd;
보고서('prod1b','nodusd') = prod1b.nodusd;
mip를 사용하여 비용을 최소화하는 prod1s1을 해결합니다.
보고서('prod1s1','objval') = prod1s1.objval;
보고서('prod1s1','iterusd') = prod1s1.iterusd;
보고서('prod1s1','nodusd') = prod1s1.nodusd;
mip를 사용하여 비용을 최소화하는 prod1s2를 해결합니다.
보고서('prod1s2','objval') = prod1s2.objval;
보고서('prod1s2','iterusd') = prod1s2.iterusd;
보고서('prod1s2','nodusd') = prod1s2.nodusd;
mip를 사용하여 비용을 최소화하는 prod2b를 해결합니다.
보고서('prod2b','objval') = prod2b.objval;
보고서('prod2b','iterusd') = prod2b.iterusd;
보고서('prod2b','nodusd') = prod2b.nodusd;
mip를 사용하여 비용을 최소화하는 prod2s1을 해결합니다.
보고서('prod2s1','objval') = prod2s1.objval;
보고서('prod2s1','iterusd') = prod2s1.iterusd;
보고서('prod2s1','nodusd') = prod2s1.nodusd;
mip를 사용하여 비용을 최소화하는 prod2s2를 해결합니다.
보고서('prod2s2','objval') = prod2s2.objval;
보고서('prod2s2','iterusd') = prod2s2.iterusd;
보고서('prod2s2','nodusd') = prod2s2.nodusd;
보고서 표시;