uimp.gms : UIMP - 생산 일정 문제

설명

한 회사가 세 가지 다른 기계를 사용하여 너트, 볼트 및 와셔를 제조합니다.
정상 또는 초과근무 생산 모드에서 작동할 수 있습니다. 회사
다음 두 기간 동안 운영을 계획해야 합니다.

소형 모델 유형 :LP


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


메인 파일 : uimp.gms

$title UIMP - 생산 일정 문제(UIMP,SEQ=11)

$onText
한 회사는 세 가지 다른 기계를 사용하여 너트, 볼트, 와셔를 제조합니다.
정상 또는 초과근무 생산 모드에서 작동할 수 있습니다. 회사
다음 두 기간 동안 운영을 계획해야 합니다.

Ellison, E F D 및 Mitra, P, UIMP - 수학을 위한 사용자 인터페이스
프로그래밍. 수학 소프트웨어의 ACM 거래 8, 2(1982).

키워드: 선형 프로그래밍, 스케줄링, 다기간 생산 계획,
          제조
$offText

세트
   i '기간' / 여름, 겨울 /
   j '생산 모드' / 정상, 초과근무 /
   k '제품' / 너트, 볼트, 와셔 /
   l '기계' / m1*m3 /;

테이블 mh(l,k) '기계 시간(단위당 시간)'
       너트 볼트 와셔
   m1 4 4 6
   m2 7 6 6
   m3 3 ;

테이블 mhadd(i,j) 'mh에 대한 추가 인자'
           정상적인 초과근무
   여름 -1
   겨울 +1 ;

테이블 av(l,j) '가용성(시간)'
       정상적인 초과근무
   m1 100 80
   m2 100 90
   m3 40 30;

매개변수
   t(i,j,k,l) '필요한 기계 시간'
   a(i,j,l) '사용 가능한 기계 시간';

t(i,j,k,l) ​​= mh(l,k) + mhadd(i,j)$mh(l,k);
t("겨울","잔업","세탁기","m1") = 5;
a("여름",j,l) = av(l,j);
a("겨울",j,l) = av(l,j) + 10;

mh, mhadd, av, t, a를 표시합니다.

테이블 tc(l,k) '생산 비용 데이터'
       너트 볼트 와셔
   m1 2 3 4
   m2 4 3 2
   m3 1 ;

테이블 tcadd(i,j) 'tc에 대한 추가 요소'
           정상적인 초과근무
   여름 1
   겨울 1 2;

매개변수 c(i,j,k,l) ​​'생산 비용';
c(i,j,k,l) ​​= tc(l,k) + tcadd(i,j)$tc(l,k);

디스플레이 c;

테이블 p(i,k) '판매 가격'
           너트 볼트 와셔
   여름 10 10 9
   겨울 11 11 10;

테이블 d(i,k) '수요'
           너트 볼트 와셔
   여름 25 30 30
   겨울 30 25 25;

매개변수
   s(k) '저장 비용' / (너트, 볼트, 와셔) 1 /
   h(k) '저장 용량' / (너트, 볼트) 20 /;

변수
   x(i,j,k,l) '생산'
   y(i,k) '저장된 제품'
   z(i,k) '판매된 제품'
   비용
   수익
   이익;

양수 변수 x, y;

방정식
   pdef '이익 정의'
   cdef '비용 정의'
   rdef '수익 정의'
   ma(i,j,l) '머신 가용성'
   ib(i,k) '재고 잔액';

pdef.. 이익 =e= 수익 - 비용;

cdef.. 비용 =e= sum((i,k), s(k)*y(i,k) + sum((j,l), c(i,j,k,l)*x(i,j,k,l)));

rdef.. 수익 =e= sum((i,k), p(i,k)*z(i,k));

ma(i,j,l)..sum(k, t(i,j,k,l)*x(i,j,k,l)) =l= a(i,j,l);

ib(i,k).. sum((j,l)$mh(l,k), x(i,j,k,l)) + y(i-1,k) =e= z(i,k) + y(i,k);

z.lo(i,k) = d(i,k);

y.up(i,k) = h(k);

모델 uimp 'ellison mitra' / all /;

lp를 사용하여 수익을 극대화하는 uimp 해결;
lp를 사용하여 이익을 극대화하는 uimp를 해결합니다.

매개변수 담당자 '요약 보고서';
담당자(l,i,k) = 합계(j, x.l(i,j,k,l));
rep("수요",i,k) = d(i,k);
rep("공급",i,k) = sum(l,rep(l,i,k));

디스플레이 담당자;