설명
이 간단한 합금 제련소 혼합 문제는 입문용으로 사용됩니다. 여러 mpsx 매뉴얼의 예입니다.
소형 모델 유형 :LP
카테고리 : 슬롯 머신 모델 라이브러리
메인 파일 : ibm1.gms
$title 알루미늄 합금 제련소 샘플 문제(IBM1,SEQ=79)
$onText
이 간단한 합금 제련소 혼합 문제는 입문용으로 사용됩니다.
여러 mpsx 매뉴얼의 예.
IBM, MPSX/370 입문서. 기술. 대표, IBM, 1979.
키워드: 선형 계획법, 혼합 문제, 시나리오 분석, 화학 공학
$offText
세트
'혼합용 고철' / bin-1*bin-5, 알루미늄, 실리콘 /
sl(s) '로컬에서 사용 가능한 블렌드' / bin-1*bin-5 /
e '화학 원소' / 철, 구리, 망간, 마그네슘
알루미늄, 실리콘 /
테이블 bspec(e,*) '혼합 사양(2000lb 주괴의 경우 lb)'
최대 최소
철 60
구리 100
망간 40
마그네슘 30
알루미늄 INF 1500
실리콘 300 250;
테이블 소품(e,s) '화학적 특성(비율)'
bin-1 bin-2 bin-3 bin-4 bin-5 알루미늄 실리콘
철 .15 .04 .02 .04 .02 .01 .03
구리 .03 .05 .08 .02 .06 .01
망간 .02 .04 .01 .02 .02
마그네슘 .02 .03 .01
알루미늄 .70 .75 .80 .75 .80 .97
실리콘 .02 .06 .08 .12 .02 .01 .97;
매개변수 dcheck(s) 'prop(prop)의 다른 요소';
dcheck(s) = 1 - sum(e, prop(e,s));
디스플레이 dcheck;
테이블 공급(들,*) '공급 및 비용 데이터'
재고 최소 사용 비용
* (파운드) (파운드) ($/파운드)
빈-1 200 .03
빈-2 750 .08
빈-3 800 400 .17
빈-4 700 100 .12
빈-5 1500 .15
알루미늄 INF .21
실리콘 INF .38;
변수
x(s) '혼합 성분(lb)'
bc(e) '혼합 원소(lb)'
비용 '총 재료비($)';
방정식
수율 '최종 혼합 요구 사항(lb)'
ebal(e) '원소 균형(lb)'
cdef '비용 정의($)';
수율.. sum(s, x(s)) =e= 2000;
ebal(e).. bc(e) =e= sum(s, prop(e,s)*x(s));
cdef..cost =e= sum(s, sup(s,"cost")*x(s));
모델 합금 '합금 혼합 모델' / 모두 /;
x.lo(s) = sup(s,"최소 사용");
x.up(s) = sup(s,"인벤토리");
bc.lo(e) = bspec(e,"최소");
bc.up(e) = bspec(e,"최대");
매개변수 보고서(들,*) '혼합 결과';
lp를 사용하여 합금 최소화 비용을 해결합니다.
보고서(들,"run-1") = x.l(s);
옵션 solPrint = 꺼짐, limCol = 0, limRow = 0;
prop("철","실리콘") = .02;
prop("실리콘","실리콘") = .98;
lp를 사용하여 합금 최소화 비용을 해결합니다.
보고서(들,"run-2") = x.l(s);
prop("철","실리콘") = .01;
prop("실리콘","실리콘") = .99;
lp를 사용하여 합금 최소화 비용을 해결합니다.
보고서(들,"run-3") = x.l(s);
prop("철","실리콘") = 0;
prop("실리콘","실리콘") = 1.0;
옵션 solPrint = 켜짐;
lp를 사용하여 합금 최소화 비용을 해결합니다.
보고서(들,"run-4") = x.l(s);
보고서 표시;
매개변수 costrep '2000lb 배치에 대한 비용 보고서 예시';
costrep(s ,"비용") = sup(s,"비용");
costrep(s ,"수량") = x.l(s);
costrep(s ,"c-cost ") = costrep(s,"비용")*costrep(s,"수량");
costrep("**총계**","c-cost ") = sum(s, costrep(s,"c-cost"));
디스플레이 비용;
* ecl 매뉴얼에 따른 슬롯 머신의 반올림 기능을 보여줍니다.
매개변수
xr(s) '반올림된 해 값'
xr3(s) '소수점 세 번째 자리에서 숫자 오류 반올림'
num '반올림된 솔루션 카운터';
xr(s) = round(x.l(s));
xr3(s) = round(x.l(s),3);
숫자 = 0;
loop(s$(xr(s) <> xr3(s) 및 num < 2),
x.lo(s)$(xr(s) > xr3(s)) = xr(s);
x.up(s)$(xr(s) < xr3(s)) = xr(s);
숫자 = 숫자 + 1;
);
lp를 사용하여 비용을 최소화하는 합금을 해결합니다.